0

Mengaktifkan log SES (Simple Email Service) – cloud AWS

Email yang dikirim menggunakan AWS SES (Simple Email Service) lognya bisa disimpan ke dalam cloudwatch. Contohnya seperti ini:

mengaktifkan log SES

Contoh diatas adalah log email yang berhasil dikirim ketujuan. Lognya berisi:

  • Email pengirim
  • IP pengirim
  • Email tujuan
  • Subject email
  • Body email
  • Tanggal kirim

Bagaimana mengaktifkan log SES?

Untuk mengaktifkan log SES, ada beberapa service yang harus kita gunakan:


Tutorial ini diambil dari blog AWS How to Log Amazon SES details using Amazon CloudWatch.

Disini saya akan jabarkan lebih detail alurnya.

https://aws.amazon.com/blogs/messaging-and-targeting/how-to-log-amazon-ses-details-using-amazon-cloudwatch/

Jadi alur sampai lognya bisa disimpan ke cloudwatch, adalah:

  • Sender mengirim email ke SES
  • SES akan mentrigger service SNS untuk mengirimkan lognya ke SNS dan SNS akan mengirimkan kembali lognya ke lambda function. Perlu diketahui SNS disini hanya berfungsi sebagai message broker saja. Semua log yg dikirimkan ke SNS akan diantrikan (queue), lalu dikirimkan ke lambda function sesuai urutan
  • Lamda Function akan menerima log email. Lambda Function ini berisi script codingan (ditutorial ini kita gunakan Python). Semua log yang sudah diterima akan dikirimkan ke Cloudwatch sesuai codingan python
  • CloudWatch akan menerima lognya dan menyimpannya. Disini lognya akan berupa JSON

Di gambar atas juga terdapat bounce, complaint, delivery.

  • Bounce: Terjadi ketika email gagal dikirimkan karena beberapa alasan: email penerima tidak ditemukan, inbox penerima penuh, timeout, masuk ke suppression list (daftar email yang diblock) SES
  • Complaint: Email berhasil dikirim, namun penerima menandai emailnya sebagai spam
  • Delivery: Email berhasil dikirim


CloudFormation, nantinya kita akan mengupload file IaC (Infrastructure as Code) yang sudah disediakan oleh AWS. Berisi Codingan untuk membuat Lambda Function (menggunakan Python), CloudWatch.

Prasyarat

  • Pastikan sudah mempunyai domain/email yang verified di SES


Mari kita mulai ..

Buat SES Topic

Pertama, buat SES topic.

  • Masuk ke dashboard SES, klik menu Topics, klik Create topic
  • Pada halaman create topic, isikan:
    • Type: standard
    • Name: SNS-SES
    • Display name: SNS-SES
  • Lalu klik Create topic
  • SNS Topic berhasil dibuat
mengaktifkan log SES

Kaitkan SNS Topic ke SES

Selanjutnya kaitkan SNS Topic yang sudah kita buat (SNS-SES) ke SES.

  • Buka dashboard SES
  • Masuk ke Configuration > Identities > pilih Domain/Email kalian, maka akan masuk ke detailnya
  • Pilih tab Notifications > Feedback Notifications > klik Edit
  • Disini kita akan mengaktifkan semua log SES (bounce, complaint, delivery).
    Pada Bounce feedback, Complaint feedback, Delivery feedback pilih SNS-SES, lalu centang Include original email headers.
  • Klik Save changes
  • Setelah disave, maka akan ada bounce, complaint dan delivery pada Feedback notifications

Upload code IaC (Infrastructure as Code) dengan CloudFormation

IaC berisi codingan untuk membuat lambda function, dan cloudwatch. Linknya bisa didownload dari sini, dan save dengan nama ses_bounce_logging_blog.yml

https://github.com/aws-samples/communication-developer-services-reference-architectures/blob/master/cloudformation/ses_bounce_logging_blog.yml

Jika sudah terdownload, selanjutnya upload code IaC dengan CloudFormation, caranya:

  • Buka dashboard CloudFormation > masuk ke halaman Stacks
  • klik Create stack
  • Upload file ses_bounce_logging_blog.yml
  • klik Next
mengaktifkan log SES
  • Pada halaman Specify stack details, isikan:
    • Stack name: SNS-SES
    • CloudWatchGroupName: /aws/ses/bounce_logs
      Note: Disini kita hanya menyimpan log untuk bounce saja. Jika ingin menyimpan semua log (complaint dan delivery), silahkan upload kembali file ses_bounce_logging_blog.yml dan berikan Stack name yang berbeda dan pilih EventType: Complaint atau Delivery
    • EventType: Bounce
    • SNSTopicARN: masukkan ARN SNS Topic yang sudah dibuat sebelumnya (silahkan masuk ke detail SNS topic untuk mendapatkan ARN)
  • Halaman selanjutnyaConfigure stack options, biarkan semua default, klik Next
  • Halaman Review, klik Submit
  • Pada gambar diatas, ada 5 yang statusnya CREATE_COMPLETE sisanya masih CREATE_IN_PROGESS (biarkan saja, bukan menjadi masalah)
  • Sampai proses ini, lambda function sudah terbuat. Untuk cloudwatch, akan terbuat ketika ada log email yang masuk.

Melihat Lambda Function

Untuk mengecek apakah lambda function sudah terbuat, langkahnya:

  • Buka dashboard Lambda > Functions
  • Akan ada nama function yang berawalan SNS-SES-LambdaFunction-(random string)
sns ses lambda function
  • Jika kita masuk ke detailnya, pada tab Code maka akan ada codingan seperti ini:
mengaktifkan log SES
  • Codingan tersebut tidak perlu dirubah. Harusnya sudah works, mari kita test

Mengetes bounce email

Kita akan simulasi kirim email bounce.

  • Masuk ke dashboard SES
  • Pilih domain / email kalian, masuk ke detailnya
  • Klik Send test email
  • Pada halaman send test email, masukkan:
    • Email format: Formatted
    • from-address: test-bouce@(email kalian)
    • Scenario: Bounce
    • Subject: test-bounce-subject
    • Body: test-bounce-body
  • Klik Send test email
  • Buka dashboard CloudWatch, klik Log groups
  • Akan ada path log yang terbuat, klik log tersebut untuk melihat detail
  • Klik salah satu log pada Log streams
  • Klik lognya, maka tampilan JSONnya akan seperti ini
mengaktifkan log SES

Mengetest complaint, delivery email

CloudFormation:

  • Buat Stack baru pada CloudFormation dengan mengupload kembali file ses_bounce_logging_blog.yml, beri nama pada Stack name: SNS-SES-complaint atau SNS-SES-delivery
  • Pada CloudWatchGroupName: masukkan /aws/ses/complaint_logs atau /aws/ses/delivery_logs
  • Pada EventType: masukkan Complaint atau Delivery

SES:

  • Masuk ke detail domain / email, klik Send test email
  • Pilih Scenario: Complaint atau Successful Delivery (bisa juga Custom)
  • Masukkan subject dan body, klik Send test email

CloudWatch:

  • Akan ada 2 path log, yaitu:
    • /aws/ses/complaint_logs
    • /aws/ses/delivery_logs
  • Klik path log tersebut untuk melihat detail lognya

Ambar Hasbiyatmoko

Hello, I'm web developer. Passionate about programming, web server, and networking.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.