Thursday, November 26, 2015

Amazon SES Suspended - Apa nak buat ?

Alkisah suatu cerita, tiba-tiba dapat email dari Amazon SES



Kena suspended akaun Amazon SES. Aduh, ada 3-4 email yang menggunakan servis SES, dah pening kepala semua email sangkut. Mengikut email ni, bounce rate yang tinggi, nak ikutkan dah dapat banyak email warning, tapi selalu abaikan, sebab biasa tak kena suspend.

Tengok punya banyak warning.


Ini kali pertama kena suspended, dan diorang nak sebab kenapa banyak sangat bounce rate. SES walaupun kita dah bayar, dia tak beri muka kepada spammer-spammer ni. Jadi pattern seperti komplen tinggi, bounce rate tinggi akan merujuk kepada tuan punya akaun adalah spammer. Nak ikutkan sebabnya ada satu akaun klien ni yang digunakan untuk notifikasi sistem, tetapi tak pernah cek kalau ada bounce atau komplen. 

Kami pun mencadangkan SES disebabkan guna local email server asyik kena block dengan email provider macam hotmail, yahoo dan gmail. Tapi seperti biasa, dah setel guna SES, malas nak cek bounce ke komplen ke, akhirnya kena suspend. Padan muka.

Maka aku nak kongsi beberapa tips untuk sesiapa yang kena suspended.

1. Jangan gelabah.
Biasa dia akan suruh balas email dan tim SES akan balas dalam masa 24 jam, sementara itu gunakanlah fallback emel. Gunakan local server yang biasa digunakan.

2. Di bawah adalah senarai biasa yang diperlukan untuk lepaskan suspension
  • What you believe caused your bounce problem. 
  • The method you use to track your bounces. 
  • How you ensure the email addresses of new recipients are valid prior to sending to them. 
  • Why the changes you made will prevent the problem from happening again. 

Jadi kita kupas satu-satu soalan yang diminta jawapan.
  • What you believe caused your bounce problem. 
Cari sumber apa yang menyebabkan masalah itu, jadi masalah aku adalah bounce. 
Biasa dalam SES akan ada satu email yang digunakan untuk terima semula bounce tersebut, dan email tersebut adalah juga email yang digunakan untuk hantar. Login ke mailbox tersebut dan cari email-email yang banyak bounce, cuba lihat email jenis apa yang bounce.

Aku jumpa kebanyakan adalah email dari internal staff yang gunakan email palsu, sebab dia buat 2-3 akaun untuk multiple user dan apabila notifikasi sistem dihantar, email pun bounce

  • The method you use to track your bounces.
  • Why the changes you made will prevent the problem from happening again

Kali ini, aku memang tiada apa-apa cara untuk track bounce, maka jawapan adalah apakah perubahan yang akan dilakukan untuk mengelakkan ia berlaku lagi.

Untuk dua soalan ini, terpaksalah menggunakan Amazon SNS (Simple Notification Service) untuk monitor bounce. Boleh rujuk




Untuk Amazon SES kita boleh hantar notifikasi ke PHP skrip atau ke email, dan dalam kes ini aku cuba hantar ke email (sementara) dan hantar satu ke PHP skrip untuk disimpan mana email yang bounce dan set threshold, dalam kes aku, aku set jika pernah bounce, terus takkan hantar lagi email ke akaun tersebut (mungkin kes dah kurang panas aku akan naikkan sedikit threshold ini)

Maka di bawah adalah situasi dia

Bounce Email (amran@example.com) -> Amazon SES -> Amazon SNS  > PHP Script -> DB

Lagi sekali nak hantar ke  (amran@example.com)

Sistem > Email (check dulu dari list bounce DB) > Ada tak bounce ? > Kalau takde > Amazon SES 

Amazon SNS Subscription ke emel & ke PHP 



Maka dari segi di atas, akan mengurangkan bounce email yang berulang. Oleh kerana Amazon SES tidak ada cara untuk memastikan email yang pertama di daftar adalah valid. Saya ada periksa Mailgun dari Rackspace ada web servis untuk memastikan email adalah valid dari beberapa kriteria.


  • Syntax checks (RFC defined grammar)
  • DNS validation
  • Spell checks
  • Email Service Provider (ESP) specific local-part grammar (if available).



Mungkin kalau kita gunakan servis Mailgun, kita boleh dapat jawapan yang terakhir.
  • How you ensure the email addresses of new recipients are valid prior to sending to them. 
Selain dari itu, cara untuk pastikan emel adalah sah, adalah dari bounce email kepada monitoring kita. Tidak semestinya kita menjawab soalan mereka mengikut point-point yang diberikan. Apa yang saya pasti, tim Amazon SES mahukan pemilik akaun tersebut proaktif dalam menjawab soalan dan cuba memuaskan hati mereka. Mereka juga mahu menunjukkan bahawa perkara ini tidak diambil enteng oleh mereka.

Saya dapat menyelesaikan masalah tersebut dalam masa 48 jam dan beberapa balasan email. 

Perkara di atas adalah asas sahaja, antara perkara yang sukar adalah untuk memahami Amazon SNS secara detail dan bagaimana ia berfungsi. Saya banyak merujuk Sendy , skrip mailing list yang saya beli untuk produk kami Zenpipe Web Hosting & BnB.my .

Amazon SES juga ada berkongsi praktis terbaik untuk menghantar emel http://docs.aws.amazon.com/ses/latest/DeveloperGuide/ses-best-practices.html , mungkin sesiapa yang rajin dan kena suspend akaun dia (haha) , baru rajin baca semua benda-benda ni. Biasalah bak kata orang tua, dah terhantuk, baru terngadah. 





3 comments:

Zulhilmi Zainudin said...

Untuk soalan "How you ensure the email addresses of new recipients are valid prior to sending to them." tu, mungkin penyelesaiannya begini:

1. Apabila dapat new user registration, trigger satu function untuk hantar emel kepada user tersebut.
2. Dalam emel tersebut, minta user klik link untuk verify emel mereka.
3. Once mereka dah verify, baru kita masukkan emel mereka tu dalam "sending list".

Apa pendapat tuan?

Ahmad Amran Kapi said...

Untuk hantar verify email ke akaun email diaorang pun dah bounce. Haha. Tapi betul itu langkah normal.

Tapi kebanyakan yang bounce adalah internal staff email klien buat untuk department atau fungsi.

Ahmad Saiful Bahri Mat Amin said...

Sekurang2nya dia bounce sekali jer masa register (atau 2 kali kalau dia klik resend verification). Kalau tak check email macam tu, setiap notification la bounce.