1. Ana Sayfa
  2. AWS
  3. Amazon SES (Simle E-mail Service) ile E-Posta Teslim Edilebilirlik, Geri Dönen İletiler ve Şikâyet Konularının Çözümleri

Amazon SES (Simle E-mail Service) ile E-Posta Teslim Edilebilirlik, Geri Dönen İletiler ve Şikâyet Konularının Çözümleri

images

E-posta mesajlaşma sistemlerinde oluşabilecek problemler ile nasıl başa çıkılır? Amazon sisteminin bu problemlere bakış açısı nasıldır? Bu makalede pratikte uygulanabilecek bir örnek ile inceleyeceğiz. Amazon programlı olarak gönderilen postalar, Dijital Pazarlama, Uygulamaların bilgilendirme mesajları vs. işlemler için e-posta en çok tercih edilen yöntemlerden bir tanesidir. Bu tip işleri yaparken alıcılarınızın e-postalarınızı okumasını, değerli bulmasını ve olarak etiketlememesini istersiniz. Başka bir deyişle, alıcılarınızın gelen posta kutularına düşen postalarınızın yüzdesini arttırmak için e-posta teslimatı konseptlerini gözden geçirmeniz ve bu konuda uygun ve güvenilir bir sistem geliştirmeniz gerekmektedir.

E-posta teslimini en üst düzeye çıkarmak için, e-posta teslim sorunlarını anlamanız, haberdar olup önlem almanız ve sisteminizi iyileştirmeniz gerekir. Başarılı teslimatlar için neler yapılabileceğini ve bu adımların arkasındaki kavramları aşağıda bölümler halinde inceleyeceğiz. Sonrasında da Amazon SES’in bu süreçte ilgilere nasıl yardımcı olduğunu gözden geçireceğiz. Son olarak Amazon SES hata ve şikâyet bildirilmeni yine Amazon’un , , Cloudwatch, Lambda ve servislerini entegre olarak kullanarak SES Report isminde günlük sorunları bildiren bir raporlama sisteminin nasıl kurulacağını detaylıca inceleyeceğiz. Resim-1


 

 

 

 

 

 

 

 

Resim-1

E-Posta gönderimi ile ilgili ipuçları ve en iyi uygulamalar

Aşağıda e-posta gönderimi mesajlarınızın teslim edilebilirliğini etkileyen durumlar ve e-posta iletişimlerinizin hedef kitlenize ulaşmasını sağlamaya yardımcı olacak öneriler yer almaktadır.

  1. Genel öneriler
  • Kendinizi e-posta gönderdiğiniz müşterinin veya alıcının yerine koyun ve empati yapın. Gönderdiğiniz mesajın kendi gelen kutunuzda almak isteyeceğiniz bir şey olup olmadığını kendinize sorun. Cevap, hevesli bir “evet!” ten daha farklı bir şeyse o zaman bu postayı göndermemelisiniz. Gönderdiğiniz tüm postalar için itibarınızı çok yakından takip etmeli ve sorunları hemen çözmelisiniz.
  • E-posta gönderdiğiniz ülke ve bölgelerdeki e-posta pazarlaması ve spam karşıtı yasa ve düzenlemeleri incelemeli ve gönderdiğiniz e-postanın bu yasalara uymasını sağladığınızdan emin olmalısınız. Bu konuda yasal tavsiye ve danışmanlık almak her zaman için iyi bir fikir olabilir. (1)
  • Bazı iş dallarının düşük kaliteli ve hatta kötü amaçlı e-posta uygulamaları için kütü izlenimi ve itibarı vardır. Kredi, İlaç ve ilaç takviyesi, Alkol ve tütün, Yetişkin eğlence, Kumar, Evden çalışma programları gibi iş dallarında itibarınızı çok yakından takip etmeli ve sorunları hemen çözmelisiniz.
  1. Domain ve Gönderi Adresleri
  • E-posta gönderdiğiniz adresleri dikkatlice düşünün. “Kimden” adresi, alıcılarınızın gördüğü ilk bilgi parçalarından biridir ve bu nedenle kalıcı bir ilk izlenim bırakacaktır. Ek olarak, bazı ISS’ler itibarınızı “Kimden” adresinizle ilişkilendirir.
  • Kurumsal iletişim kurduğunuz Domain ile pazarlama vs. işler için kullanacağınız Domaini, Sub Domain olarak ayırarak kullanmayı tercih edin. Örneğin etkialanim.com alanını hem kurumsal e-posta gönderileriniz hem pazarlama hem de uygulama mesajları göndermek için planlamak yerine; Kurumsal iletileriniz için etkialanim.com, pazarlama iletilerinizi marketing.etkialanim.com ve uygulama iletilerinizi orders.etkialanim.com gibi bir Sub Dominden gönderin. İletişiminizi işe uygun ayrı bir Sub Domin kullanarak yapmak kurumsal iletişim trafiğinizin itibarının riske girmesini azaltacaktır. Örneğin pazarlama iletişimi için kullandığınız Sub Domain bir Spam tuzağına düşerse veya bir içerik filtresini tetiklerse, Kurumsal iletişiminizin farklı bir Domainde olması, kurumsal iletişimin kesilme riskini azaltır.
  • Çok sayıda mesaj göndermeyi planlıyorsanız, bu mesajları gonderici@gmail.com gibi bir ISS tabanlı adresten göndermeyin. İnternet Servis Sağlayıcıları gonderici@gmail.com gibi bir adresinden gelen çok sayıda iletiyi fark ettiğinde iletilerinizin gönderilme başarısı ve itibarı kısa sürede yok olacaktır.
  • Domaininiz için WHOIS bilgilerinin doğru olduğundan emin olun. Dürüst ve güncel WHOIS kaydının tutulması, şeffaflığa değer verdiğinizi gösterir ve kullanıcıların Domainin meşru olup olmadığını hızlı bir şekilde tespit etmelerini sağlar.
  • “Kimden” veya “Yanıtla” adresiniz için no-reply@etkialanim.com gibi bir cevapsız adres kullanmaktan kaçının. no-reply@etkialanim.com gibi bir posta adresi kullanmak, alıcılarınıza sizinle iletişim kurmaları için bir yol sunmadığınızı ve geri bildirimleriyle ilgilenmediğiniz imajını verecektir. İletilerinize mutlaka sizinle iletişim kurulması ve geri bildirim için bir yol eklemelisiniz.
  1. Domain email kayıtlarını tamamlama ve doğrulama
  • Sender Policy Framework (SPF), e-posta sahtekarlığı ile mücadele etmek için tasarlanmış, RFC 7208‘de tanımlanan bir e-posta doğrulama standardıdır. SPF, Domain sahiplerine, hangi posta sunucularının Domainleri için e-posta göndermeye yetkili olduğunu belirtmelerini sağlar. SPF ile uyumluluğu belirtmek için, Domain sahibi, Domainin
    DNS sunucusundaki bir DNS kaydında yetkili posta sunucularının bir listesini yayımlar. Bir alıcı posta sunucusu, MAIL FROM adresindeki etki alanını içeren bir e-posta aldığında, gönderen posta sunucusunu yetkili posta sunucularıyla karşılaştırmak için Domainin
    DNS kayıtlarını kontrol eder ve e-postayla ilgili işlemleri gerçekleştirir. Domain SPF kaydını doğrulayın. Bu kimlik doğrulama yöntemi, e-posta alıcılarına, gönderdiğiniz her e-postanın sizden geldiğini ve doğruluğunu onaylar. (2)
  • DomainKeys Identified Mail (DKIM), göndericilerin e-posta iletilerini şifreleme anahtarıyla imzalamalarına olanak tanıyan bir standarttır. E-posta sağlayıcıları daha sonra bu imzaları, mesajların taşıma sırasında üçüncü bir tarafça değiştirilmediğini doğrulamak için kullanır. Giden postanızı DKIM ile imzalayın. Bu adım, alıcılara içeriğin gönderen ve alıcı arasındaki geçiş sırasında değiştirilmediğini onaylar. (3)
  • Kişisel Gmail veya Hotmail hesabı gibi, sahip olduğunuz ISP tabanlı bir e-posta adresine bir e-posta göndererek ve ardından iletinin başlıklarını görüntüleyerek hem SPF hem de DKIM için kimlik doğrulama ayarlarınızı test edebilirsiniz. Başlıklar, iletiyi doğrulama ve imzalama girişimlerinizin başarılı olup olmadığını belirtir.
  1. E-Posta listelerini oluşturma ve bakımını yapma
  • E-Posta listeleri doğrulama yöntemi içeren bir katılım stratejisi uygulayarak oluşturulmalıdır. Kullanıcılar sizden e-posta almak için kayıt olduklarında, onay bağlantısı içeren bir mesaj gönderilip bağlantı üzerinden adreslerini onaylayana kadar e-posta listesine alınmamalı ve gönderime başlanmamalıdır. Bu strateji hataları en aza indirmeye ve sorunları azaltmaya yardımcı olacaktır.
  • Web tabanlı bir formla e-posta adreslerini toplarken mutlaka uygun bir doğrulama prosedüründen geçirin. Örneğin topladığınız adreslerin iyi biçimlendirildiğinden emin olun (yani, birisi@domain.com biçiminde) ve geçerli MX kayıtlarına sahip alanlara başvurduklarından emin olun.
  • Standart e-mail adresleri (postmaster@domain.com, abuse@domain.com veya noc@domain.com gibi), e-posta listenizse isteyerek kaydolması pek olası değildir. Yalnızca gerçekten gönderilerinizi almak isteyen gerçek kişilere mesaj gönderdiğinizden emin olun. Bu kural, özellikle e-posta sunucularında özel olarak ayrılmış standart takma adlar için geçerlidir. Bu takma adlar, iletişiminize zarar vermek için listenize bir sabotaj şekli olarak kötü amaçlı olarak eklenmiş olabilir.

Amazon SES ile e-posta gönderme yaşam döngüsü

E-posta teslimini en üst düzeye çıkarmak için, e-posta teslim sorunlarını anlamanız, bunları önlemek için planlı bir şekilde hazırlık yapıp, önlem almanız, gönderdiğiniz e-postaların durumundan haberdar olmanız ve ardından gerekirse e-posta gönderme programınızı iyileştirmeniz gerekir. Resim-2 ‘deki
Amazon SES ile e-posta gönderme yaşam döngüsünü başlıklar halinde inceleyip, bu adımların arkasındaki kavramları ve Amazon SES‘in bu süreçte size nasıl yardımcı olduğunu gözden geçireceğiz


Resim-2

  1. E-posta Teslimatı Sorunlarını Anlayın

    Mesajlarınız genellikle gönderdiğiniz alıcılara başarıyla iletilir. Ancak bazı durumlarda teslimat başarısız olabilir veya bir alıcı gönderdiğiniz postayı almak istemeyebilir. Ancak bazen Bounces (Hatalar), (Şikayetler), ve (Sorunlu adres filtreleri) gibi durumlardan dolayı teslimat sorunlarıyla karşılaşabilirsiniz. Teslimat sorunları ile ilgili açıklamalar aşağıdadır.

    1. Bounces (Hatalar)

      Alıcınızın posta sunucusu veya servis sağlayıcısı herhangi bir sorundan dolayı mesajınızı alıcıya iletemezse mesajı Amazon SES’e geri gönderir. Amazon SES daha sonra sisteminizi nasıl kurduğunuza bağlı olarak e-posta yoluyla veya Amazon SNS (Simple Notification Service) aracılığıyla geri gönderilen e-postayı size bildirir (4). İki çeşit Bounces mesajı vardır;

      Hard Bounce: Kalıcı bir e-posta teslim hatası olduğunu bildirir. Bu tür adreslere gönderilen mailler için Amazon SES tekrar gönderme denemesi yapmaz. Bu tip adreslere tekrar tekrar e-posta gönderme denemeleri yapılmamalıdır.

      Soft Bounce: Geçici bir e-posta teslim hatası. Örneğin, posta kutusu dolu, bağlantı zaman aşımına uğradı vs. Bu tür adreslere gönderilen mailler için Amazon SES tekrar göndermeyi defalarca dener. E-posta hala gönderilemiyorsa, Amazon SES yeniden denemeyi durdurur.

      Amazon SES, artık denenmeyecek olan Hard Bounce ve Soft Bounce hatalarını belirlediğiniz yöntem ile geri bildirir. Yalnızca Hard Bounce hataları Amazon SES konsolundaki Sending Statistics bölümünde bulunan istatistiklerde kullanılır. Bounce Rate oranınızın %5 altında olması önerilir ve %10 oranını geçtiğinizde AWS SES hesabınızı duraklatılacaktır. Bu oran SES konsolunda Reputation Dashboard altında görülebilir. Resim-3

    2. Complaint (Şikayet)

      E-posta uygulamaları istenmeyen iletileri spam klasörüne taşıyan ve ISS’e ileten “Spam Olarak İşaretle” veya benzeri etiketli bir yöntemler sağlar. Ek olarak çoğu ISS istenmeyen postaları önlemek için kullanıcıları için kötüye kullanım bildirim adresi (örneğin, abuse@domain.net) sağlar. Her iki durumda da, alıcı şikayette bulunur ve ISS sizin spam gönderdiğiniz sonucuna varırsa ve Amazon SES’in ISS ile kurulan bir geri bildirim döngüsü varsa, ISS şikayeti Amazon SES’e geri gönderir. Amazon SES böyle bir şikayet aldığında, sisteminizi nasıl kurduğunuza bağlı olarak şikayeti size iletir (4). Şikayet oluşturan e-posta adreslerine tekrarlanan denemeler yapmanız Complaint Rate istatistiğini arttıracaktır. Complaint Rate oranınız % 0.1 in altında olması önerilir ve % 0.5 oranını geçtiğinizde AWS SES hesabınızı duraklatılacaktır. Bu oran SES konsolunda Reputation Dashboard altında görülebilir. Resim-3


    Resim-3

    1. Suppression List (Sorunlu adres filtrelisi)

      Amazon SES Suppression List (Sorunlu adres filtrelisi), yakın zamanda herhangi bir Amazon SES müşterisi için zorlu bir geri dönüşe neden olan alıcı e-posta adreslerinin bir listesidir. Sorunlu adres filtresindeki bir adrese Amazon SES üzerinden bir e-posta göndermeye çalışırsanız, Amazon SES e-postayı göndermeyi denemek yerine Hard Bounce olarak görür. Suppression List içerindeki e-posta adreslerine yaptığınız denemeler Bounce Rate istatistiğinizi arttırır. Bir e-posta adresi, 14 güne kadar Suppression List içerisinde kalabilir. Göndermeye çalıştığınız e-posta adresinin geçerli olduğundan eminseniz, Suppression List kaldırma isteği gönderebilirsiniz (5). Amazon SES konsolunda Suppression List Removal bölümünden ilgili alana ulaşılabilir. Resim-4


    Resim-4

  2. Hazırlıklı ve Planlı Olun

    E-posta ile ilgili en büyük sorunlardan biri istenmeyen e-posta veya spam‘dır. Servis sağlayıcılar müşterilerinin spam alamamalarını önlemek için önemli önlemler almaktadır. Buna paralel olarak, Amazon SES, Servis Sağlayıcıların e-postanızın Spam olduğunu düşünme olasılığını azaltmak için adımlar atmaktadır. Amazon SES kimlik doğrulama, gönderme sınırı belirleme ve içerik filtreleme gibi yöntemleri aktif olarak kullanmaktadır. Amazon SES Servis Sağlayıcılarda güvenilir bir üne sahiptir. Amazon SES kullanıcılarından da yüksek kalitede e-posta göndermesini bekler. Kaliteli e-posta için Amazon SES içerik filtreleme gibi işlemleri sizin için otomatik olarak yapar. Kimlik doğrulama araçları gibi uygulamaları sağlar. Sorun olmaması için gönderme kotası ile sizi doğru yönde yönlendirir. Aşağıdaki Amazon SES in bu konularda yaptığı hazırlıklar hakkında daha fazla bilgi verilmektedir.

    1. Kimlik Doğrulama

      Spam göndericinin e-posta başlığını değiştirerek kaynak e-posta adresini taklit etmesi olasıdır, böylece e-posta farklı bir kaynaktan geliyormuş gibi görünür. Servis sağlayıcılar ve Amazon SES güven sağlamak için gönderilerin doğru adresten gönderildiğinden emin olmaları gerekir. Bu nedenle, kimliğinizi korumak için Amazon SES üzerinden e-posta gönderebilmeniz için e-posta adreslerinizi veya Domain adresinizi doğrulamanız gerekir. Amazon SES Sender Policy Framework (SPF) ve DomainKeys Identified Mail (DKIM) kimlik doğrulama yöntemlerini destekler. Amazon SES konsolunu kullanarak veya Amazon SES API‘sini kullanarak e-posta adreslerini veya Domain adreslerini doğrulayabilirsiniz. (7)

    2. Gönderme Kotası

      Servis sağlayıcılar e-postalarınızın hacminde veya oranında ani ve beklenmeyen ani yükselmeler tespit ederse spam gönderiminden şüphelenebilir ve e-postalarınızı engelleyebilir. Bu nedenle, her Amazon SES hesabında, gönderebileceğiniz e-posta mesajlarının sayısını ve gönderebileceğiniz oranı düzenlemek için bir dizi gönderme sınırı vardır. Bu gönderme sınırları, aşamalı olarak destek isteği açılarak arttırılabilir.

      Amazon SES ‘in 24 saatlik bir sürede gönderebileceğiniz maksimum mesaj sayısı ve saniyede hesabınızdan kabul edebileceği maksimum e-posta sayısı olmak üzere iki gönderme sınırı/kotası vardır. Yeni bir kullanıcıysanız, Amazon SES her gün az miktarda e-posta göndermenize izin verir. Gönderdiğiniz postalar Servis Sağlayıcılar için kabul edilebilirse, bu limit zamanla düzenli olarak artacaktır, böylece daha yüksek miktarlarda daha hızlı e-posta gönderebilirsiniz. Kotalarınızı daha hızlı bir şekilde artırmak için ihtiyaç duyarsanız kotanızı yükseltmek için bir SES Gönderme Limitini Artırma isteği de oluşturabilirsiniz (7).

    3. İçerik filtreleme

      Servis sağlayıcılar gelen e-postaların spam olup olmadığını belirlemek için içerik filtrelemesi kullanır. İçerik filtreleri şüpheli içerik arar ve e-posta spam profiline uygunsa e-postayı engeller. Amazon SES ayrıca içerik filtreleri kullanır. Uygulamanız Amazon SES’e bir istek gönderdiğinde, Amazon SES sizin adınıza mesaj başlığını ve gövdesini tarar. Mesajlarınız Amazon SES’in kullandığı içerik filtrelerine spam gibi gelirse, Amazon SES metrikleriniz olumsuz yönde etkilenir. Amazon SES ayrıca tüm mesajları virüslere karşı tarar. Bir mesaj virüs içeriyorsa, Amazon SES mesajı alıcının posta sunucusuna iletmeyi denemez. Spam ve virüslü posta göndermemeye dikkat etmek sizin sorumluluğunuzdadır.

    4. İtibar

      IP adresinin, e-posta adresinin veya Domain adresinin spam kaynağı olmadığına dair güven ölçüsü önemlidir. Amazon SES, Servis Sağlayıcılar arasında iyi üne sahiptir. Bu şekilde e-postalarınızı alıcılarınızın gelen kutularına ulaşma başarısı da yüksektir. Benzer şekilde, Amazon SES gibi güvenilir bir üne sahip olmanız gerekir. Amazon SES ile gönderdiğiniz iletilerin yüksek kaliteli ve iyi içerikli olması itibarınızı arttırır. Yüksek kaliteli içerik gönderdiğinizde, itibarınız zaman içinde daha güvenilir hale gelir ve Amazon SES gönderim sınırlarınızı artırır. Aşırı hatalar ve şikayetler itibarınızı olumsuz yönde etkiler ve Amazon SES’in gönderim sınırlarınızı düşürmesine veya Amazon SES hesabınızı sonlandırmasına neden olabilir.

  3. Haberdar Olun

    Başarısız gönderileriniz, e-postalarınızdan kaynaklı şikayetler veya Amazon SES ile gönderdiğiniz başarılı iletiler Amazon SES konsolunda kullanım istatistikleri olarak kolayca izlemenizi ve sorunları anlamanıza yardımcı olacak şekilde kullanımınıza sunulmuştur. Ayrıcı tüm bu durumlar için bildirim alabileceğiniz araçlar da Amazon SES tarafından sağlanmıştır.

    1. Bildirimler

İletiler ile ilgili bir hata oluştuğunda, Servis sağlayıcı Amazon SES‘i ve Amazon SES‘te sizi bilgilendirir. Amazon SES‘in artık denemediği Hard Bounce ve Soft Bounce hatalarında sizi haberdar eder. Amazon SES hatalar, şikayetler ve başarılı teslimatları Amazon SNS aracılığıyla veya e-postayla bildirimi olarak iki şekilde alabilirsiniz. Bu konuyu daha da genişleterek Amazon SES bildirimlerini SNS, SQS, Cloudwatch, Lambda ve S3 servislerini beraber kullanarak nasıl bir bildirim sistemi kurulacağını “SES Report oluşturmak için gerekli adımlar” bölümünde detaylıca inceleyeceğiz. Resim-1

  1. Kullanım istatistikleri

    Amazon SES, başarısız teslimatlarınızın kök nedenlerini belirlemek ve çözmek için görüntüleyebilmeniz için kullanım istatistikleri sunar. Kullanım istatistiklerinizi Amazon SES konsolunu kullanarak veya Amazon SES API’sini arayarak inceleyebilirsiniz. Ne kadar ileti gönderdiğiniz, hata sayısı (Bounces), şikâyet (Complaints) ve virüs bulaşmış reddedilen e-postalarınız (Rejects) gibi istatistikleri ve kota durumunuzu Amazon SES konsolunda Sending Statistics bölümünde görüntüleyebilirsiniz (9). Resim-5


Resim-5

  1. E-posta Gönderme Programınızı Geliştirin

    Şikâyet ve Hata oranı yüksek düşük kaliteli e-posta gönderme girişimlerinin kötüye kullanım olduğunu ve AWS SES hesabınızı sonlandırma riskine soktuğunu unutmayın. Sonuçta, yüksek kaliteli e-postalar göndermek ve yalnızca onları almak isteyen alıcılara e-posta göndermek için Amazon SES’i kullandığınızdan emin olmanız gerekir. Amazon SES üzerinden yapılan gönderim denemeleri başarısız olursa, Amazon SES uygulamanıza bir hata mesajı gönderir ve e-postayı göndermez. Bu hata mesajını gözlemleme şekliniz postayı gönderdiğiniz platforma bağlıdır. Amazon SES aracılığıyla bir e-posta gönderirken karşılaşabileceğiniz e-posta gönderme ile ilgili özel hata türlerini gözden geçirmelisiniz (9). Çok sayıda Hata ve şikâyet alıyorsanız, e-posta gönderme stratejinizi yeniden değerlendirmenin zamanı gelmiştir.

Amazon SES Bounces ve Complaints bildirimlerini Amazon servislerini kullanarak raporlama (SES Report)

Bu bölümde, Amazon SES Bounces ve Complaints bildirimlerini Amazon servislerini kullanarak raporlamanın (SES Report) nasıl yapılacağını inceleyeceğiz. Bu çözümü ihtiyacınıza göre özelleştirebilirsiniz. Prosedürleri tamamladığınızda, her gün Amazon S3 Bucket alanında depolanan web sayfasına bağlantı içeren bir e-posta alacaksınız. Bağlantıyı tıkladığınızda, önceki 24 saatlik dönemde alınan Bounces ve Complaints (Hata ve Şikâyet) ile ilgili ayrıntılı bilgiler gösteren bir rapor alacaksınız. Resim-6


Resim-6

SES Report oluşturmak için gerekli adımlar: (Resim-7)

  1. Amazon SNS (Simle Notification Service) bildirim servisinde bir Topic (Konu) oluşturma
  2. Amazon SQS (Simle Queue Service) Kuyruk Hizmeti servisinde bir kuyruk oluşturma
  3. Amazon S3 (Simle Storage Service) Depolama Hizmetinde, Bucket (klasör) oluşturma
  4. AWS IAM (Identitiy Accsess Management) Kimlik ve Erişim Yönetim konsolunda gerekli izin ve grupları oluşturma.
  5. Amazon SES servisine gelen Bounces ve Complaints bildirimlerini SNS servisine göndermesi için yapılandırma
  6. AWS Lambda (Serveless) Sunucu olmadan kod çalıştırma servisine rapor oluşturacak kodu yükleme
  7. AWS Lambda servisine yüklenen kodu test etme
  8. Amazon CloudWatch izleme ve yönetim hizmetinde Evernt Rule (Zamanlanmış görev) tanımlayarak rapor oluşturacak AWS Lambda kodunu tetikleme


Resim-7

  1. Amazon SNS (Simle Notification Service) bildirim servisinde bir Topic (Konu) oluşturma:

    Amazon SNS (Simle Notification Service) bildirim servisinde bir Topic (Konu) oluşturup, Amazon SES servisine gelen (Bounces ve Complaints) şikâyet ve hata bildirimlerini SNS servisi üzerinden SQS servisine ileteceğiz. Bu arada tüm AWS hesapları için SQS Kuyruklarına teslimlerin ücretsiz olduğunu belirtmekte fayda görüyorum (10). Yeni bir Topic oluşturmak için;

    1. AWS Yönetim Konsolunda oturum açın ve https://console.aws.amazon.com/sns/v2/home adresindeki Amazon SNS konsoluna giriş yapın.
    2. Yan menüden Topics bölümüne tıklayıp, Create topic butonuna basın. Resim-8


    Resim-8

    1. Açılan ekranda Name kısmına bir konu adı yazıp (Ben MSHowToBounces olarak tercih ettim) Create topic butonuna basarak Topic oluşturun. Resim-9


    Resim-9

  2. Amazon SQS (Simle Queue Service) Kuyruk Hizmeti servisinde bir kuyruk oluşturma:

    Amazon SQS servisinde bir kuyruk oluşturup, daha önce SNS servisinde oluşturduğumuz Topik’e Subscribe (Abone) olacağız. Bu şekilde oluşturduğumuz kuyruğun tüm (Bounces ve Complaints) şikâyet ve hata bildirimlerini toplayacak. Daha sonraki aşamalarda AWS Lambda Serveless sistemindeki bir kod ile bu mesajları işleyeceğiz. Bu arada tüm AWS hesapları için her ay 1 milyon Amazon SQS isteğinin ücretsiz olduğunu belirtmekte fayda görüyorum (11). Yeni bir Amazon SQS kuyruğu oluşturmak için;

    1. Amazon SQS konsolunu https://console.aws.amazon.com/sqs/ açın.
    2. Daha önce bir SQS kuyruk oluşturmadıysanız Get Started Now butununa, daha önce bir kuyruk açtıysanız konsoldaki Create New Queue butonuna basın. Resim-10


    Resim-10

    1. Açılan ekranda Queue Name alanına bir isim verilir (Ben MsHowTo olarak belirledim). Standard Queue seçilip Configure Queue butonuna basılır. Resim-11


    Resim-11

    1. Aşağıya doğru açılan ekranda Default Visibility Timeout değerini 5 minutes olarak ayarlayıp, diğer değerleri varsayılan ayarlarında bırakıyoruz ve Create Queue butonuna basarak kuyruğu oluşturmayı tamamlıyoruz. Resim-12


    Resim-12

    1. Kuyruklar listesinden oluşturduğumuz kuyruğu seçip Queue Actions butonuna basıyoruz. Açılan menüden Subscribe Queue to SNS Topic seçeneğini seçiyoruz. Resim-13


    Resim-13

    1. Açılan Subscribe to a Topic ekranında Choose a Topic alanında daha önce SNS konsolunda oluşturduğumuz Topic seçilerek Subscribe butonuna basılır. Resim-15


    Resim-15

  3. Amazon S3 (Simle Storage Service) Depolama Hizmetinde, Bucket (klasör) oluşturma:

    AWS Lambda Serveless sisteminde çalışacak kodun oluşturacağı SES Report dosyalarını depolamak için bir Amazon S3 servisinde bir Bucket oluşturmamız gerekiyor. Bu arada yeni AWS müşterileri kaydolduktan sonra bir yıl boyunca her ay S3 Standart depolama sınıfında 5 GB depolama alanı, 20.000 GET İsteği, 2.000 PUT, COPY, POST veya LIST İsteği ve 15 GB dışarı veri aktarımı hakkına sahip olur.

    1. Amazon S3 konsolunu https://console.aws.amazon.com/s3/ adresinden açın.
    2. Create bucket butonuna basın. Resim-16


    Resim-16

    1. Açılan ekranda Bucket name alanına isim yazıyoruz (Ben mshowtosesreport ismini tercih ettim). Region alanından bulunduğumuz bölgeyi seçip, Next butonuna basıyoruz. Resim-17


    Resim-17

    1. Configure options ekranınını Next butonuna basarak değiştirmeden geçiyoruz. (Ayarları isterseniz kendinize göre ayarlayabilirsiniz)
    2. Set permissions ekranında Block all public Access tikini kaldırarak Buket’ı genel olarak açıyorum. Sizin kendinize göre paylaşım ayarlarınızı yapmanızı tavsiye ederim. Resim-18


    Resim-18

    1. Review ekranındaki Create Bucket butonuna basarak işlemi tamamlıyoruz.
  4. AWS IAM (Identitiy Accsess Management) Kimlik ve Erişim Yönetim konsolunda gerekli izin ve grupları oluşturma:

    AWS Lambda Serveless sisteminde çalışacak kodun çalışabilmesi için gerekli izinleri bir Policy oluşturup, oluşturduğumuz Policiy de bir Role atayarak vereceğiz.

    1. IAM konsolunu https://console.aws.amazon.com/iam/ adresinden açın.
    2. Konsolda sol taraftaki menüden Policies bölümünü seçip, Create policy butonuna basın. Resim-19


    Resim-19

    1. Açılan Create Policy ekranında JSON tabına geçilir (Resim-20).


Resim-20

  1. Aşağıdaki kodu JSON sekmesindeki editöre yapıştırın.


  1. 3. Maddenin c. Bölümünde anlatılan AWS S3 içerisinde açtığımız Bucket ismini BUCKET_NAME alanı ile değiştirin. Ben mshowtosesreport ismini tercih etmiştim. Son durumu “
    arn:aws:s3:::mshowtosesreport/*

    şeklinde oldu.
  2. 2. Maddenin c. Bölümünde anlatılan AWS SQS
    Queue alanında açtığımız Queue’nun ARN formatındaki şeklinini SQS_QUEUE_ARN alanı ile değiştirin. Son durumu “arn:aws:sqs:eu-west-1:123456789012:MsHowTo”
    şeklinde oldu.
  3. Değişiklikleri yaptıktan sonra (Resim-21) Review policy butonua basarak devam ediyoruz.


Resim-21

  1. Sonraki ekranda oluşturduğumuz Policiy’e bir isim verip, (ben mshowto-ses-policy ismini tercih ettim) Create policy butonuna basıyoruz. Resim-22


Resim-22

  1. Oluşturduğumuz Policy’i bir role atamamız gerekiyor. Bunun için konsolda soldaki menüden Roles alanını seçip, Create role butonuna basıyoruz. Resim-23


Resim-23

  1. Açılan Select type of trusted entity ekranında Lambda yı seçip, Next: Permissions butonuna basıyoruz. Resim-24


Resim-24

  1. Açılan Attach permissions policies ekranında h. adımında oluşturduğumuz Policy’i bulup işaretleyerek Role ekleyip, Next: Tags butonuna basıyoruz. Resim-25


Resim-25

  1. Add tags (optional) ekranında bir şey yapmadan Next: Review butonuna basıyoruz.
  2. Açılan Review ekranında Role name alanına bir isim belirleyip, (ben mshowto-ses-lambda-role olarak belirledim) Create role butonuna basarak işlemi tamamlıyoruz. Resim-26


Resim-26

  1. Amazon SES servisine gelen Bounces ve Complaints bildirimlerini SNS servisine göndermesi için yapılandırma:

    Amazon SES servisinin nasıl yapılandırılacağını Amazon Simple E-mail Service (SES) Nedir? Nasıl Kullanılır? Makalemde incelemiştik (12). İlk makaledeki anlatılanlara ek olarak Amazon SES konsolunda bildirimleri nasıl birinci adımda oluşturduğumuz Amazon
    SNS servisine göndereceğimizi yapılandıracağız.

    1. AWS Yönetim Konsolunda oturum açın ve https://console.aws.amazon.com/ses/ adresindeki Amazon SES konsoluna giriş yapın.
    2. Yan menüden bildirim gönderilmesini istediğiniz daha önceden doğrulamış olduğunuz Domain veya Email Addresses kısmını seçin. Ben daha önce Domain olarak doğrulama yaptığımdan Domain bölümüne seçtim. Sonra doğruladığım Domainin üzerine tıklayarak detaylarını açtım. Resim-27


    Resim-27

    1. Açılan ekranda SNS yapılandırmasını ayarlamak için Notifications bölümünü açıp Edit Configrations butonuna basıyoruz. Resim-28


    Resim-28

    1. Açılan Edit Notifications Configration ekranında Bounces ve Complaints seçeneklerini birinci bölümde oluşturduğumuz SNS topik olarak ayarlayarak Save Config butonuna basıyoruz. Resim-29


    Resim-29

    Ardından ikinci adımda oluşturduğumuz Amazon SQS kuyruğunu SQS konsol ekranından, oluşturduğumuz kuyruğu seçip üstteki Queue Actions menüsünden Purge Queue seçeneğini seçerek temizlememiz gerekiyor Resim-30. Bunu yapmamızın sebebi SES içerisinde ayarladığımız SNS bildirim ayarı için SES servisi bir onay bilirimi gönderir. Bu onay bildirimi de SNS içerisinde ayarladığımız kuyruğa düşecektir. Kuyrukta bu bildirimin olması altıncı bölümde ayarlayacağımız Lambda servisinin çalışmasında başarısızlığa sebep olabilmektedir. Bu durumu engellemek için kuyruğu temizledik.


    Resim-30

  2. AWS Lambda (Serveless) kod çalıştırma servisine rapor oluşturacak kodu yükleme:

    Oluşturduğumuz altyapı ile, bir Lambda kodu çalıştırarak HTML formatında bir bildirim raporu oluşturup günlük olarak belirlenmiş e-posta adresine bildirim yapmasını sağlayacağız. Yeni bir AWS Lamda işlevi oluşturmak için;

    1. sesreport.zip dosyasını https://github.com/awslabs/aws-support-tools/raw/master/SES/SESReports/sesreport.zip adresinden indirin.
    2. AWS Lambda konsolunu https://console.aws.amazon.com/lambda/ adresinden açın.
    3. Konsolda Functions bölümünü seçip Create function butonunu tıklayın. Resim-31


    Resim-31

    1. Açılan Create Function ekranında Author from scratch seçeneğini seçip, fonksiyona Function Name alanında bir isim veriyoruz. Runtime kısmında Node.js 8.10 seçip, Execution role alanında Use an existing role seçeneğini belirleyip dördüncü bölümde oluşturduğumuz AIM rolünü de Existing role kısmında seçip, Create function butonuna basıyoruz.


    Resim-32

    1. Oluşturduğumuz Lambda fonksiyonunu konsoldan seçip, Code entry type alanında Upload a .zip file seçeneğini seçip altındaki Upload butonuna basıyoruz. Açılan ekranda daha önce a bölümündeki maddesinde indirdiğimiz sesreport.zip dosyasını seçerek Open butonuna basarak kodu konsola yüklüyoruz. Resim-33


    Resim-33

    1. Ekranın devamında Environment varaibles alanına aşağıdaki değişkenleri tanımlıyoruz. Memory (MB) alanında 512 MB seçiyoruz ve Timeout süresini 5 min 0 sec olarak seçerek yukarıdaki Save butonuna basıp ayarları kaydediyoruz. Resim-34
  • BucketName (3. Bölümde oluşturduğumuz Bucket ismi)
  • BucketPrefix (Bucket içerisinde ayrı bir klasörde raporlar tanımlanabilir. Biz klasör olarak ayırmadığımızdan boş bırakıyoruz)
  • QueueURL (Amazon SQS konsolunda Queue Detail tabında URL kısmında bulabilirsiniz Resim-35)
  • Region (Kullanılan AWS Region ismini buraya yazıyoruz)
  • SrcAddr (Mail gönderen adres)
  • ToAddr (Raporu alacak mail adresi)


Resim-34


Resim-35

  1. AWS Lambda servisine yüklenen kodu test etme:

    Lambda servisine yüklediğimiz kodu test etmek için örnek Bounce ve Comlaint olayları oluşturmamız gerekiyor. Bunun için Amazon tarafından oluşturulmuş complaint@simulator.amazonses.com, bounce@simulator.amazonses.com vs. şeklinde test için oluşturduğu (13) mail adreslerini kullanacağız.

    1. AWS SES konsolunda Domains ekranından doğruladığımız Domain’i seçip Send a Test Email butonuna basarak (Resim-36) ilgili alanları doldurup To mail adresi kısmına Amazon tarafından oluşturulmuş (13) complaint@simulator.amazonses.com ve bounce@simulator.amazonses.com adreslerini yazarak test maili gönderiyoruz. (Resim-37)


    Resim-36


    Resim-37

    1. complaint@simulator.amazonses.com ve bounce@simulator.amazonses.com adreslerine gönderdiğimiz mailleri Amazon SES, Amazon SNS üzerinden Amazon SQS içerisinde oluşturduğumuz kuyruğuna gönderdi. Amazon SQS konsolundan ilgili kuyruğu seçip Queue Actions menüsünden View/Delete Messages seçeneğini tıkadığımızda açılan ekranda gönderdiğimiz 2 adet maili senaryoya göre bu maillerden hata döndüğü için kuyrukta görüyoruz. (Resim-38)


    Resim-38

    1. Bu aşamadan sonra Lambda kodunu test etmek için Test Event oluşturacağız. Amazon Lambda konsoluna girip oluşturduğumuz Functions seçip, Actions menüsünden Test’i tıklıyoruz. Açılan Configure test event ekranında Event name kısmına bir isim verip Create tuşuna basarak işlemi tamamlıyoruz. (Resim-39)


    Resim-39

    1. Oluşturduğumuz Test Eventini çalıştırmak için menüden testi seçip Test butonuna basıyoruz. Kodun çalışması bittiğinde Execution resurlt succeeded (logs) şekilinde bilgi ekranını görmemiz gerekiyor (Resim-40). (14)


    Resim-40

    1. Test olarak çalıştırdığımız Lambda kodunun Environment varaibles alanında BucketName (3. Bölümde oluşturduğumuz Bucket ismi) alanına yazdığımız AWS S3 klasörüne raporu oluşturup, ToAddr kısmına yazdığımız mail adresine raporu gönderdi Resim-41.


    Resim-41

  2. Amazon CloudWatch izleme ve yönetim hizmetinde Evernt Rule (Zamanlanmış görev) tanımlayarak rapor oluşturacak AWS Lambda kodunu tetikleme:

    Her şeyi kontrol edip Lambda kodunun çalışabilir olduğunu test ettik. Artık bu kodun her gün belli bir saatte çalışıp oluşan sorunlar için bilgi vermesi için Amazon CloudWatch Event Rule zamanlanmış görev hizmetini kullanacağız.

    1. Amazon CluoudWatch konsolunda, Rules ekranında Create rule butonuna basarak zamanlanmış bir görev oluşturmaya başlıyoruz. Resim-42


    Resim-42

    1. Açılan Step 1: Create rule ekranında Event Source seçeneğini Schedule olarak seçip, Cron expression seçeneğini işaretleyip ilgili alana kodun her akşam saat 23:00’da çalışması için 00 23 * * ? * şeklinde metin kutusunu dolduruyoruz. Targets alanında Lambda function seçip, Functions* alanında 6. Bölümde oluşturduğumuz Lambda kodunu seçip Configure details butonuna basıyoruz.


    Resim-43

    1. Oluşacak olan CloudWatch Rule için açılan Step 2: Configure rule details ekranında Name* kısmında bir isim verip Create Rule butonuna basarak zamanlanmış görev oluşturmayı tamamlamış oluyoruz. Resim-44


    Resim-44

Amazon SES servisi ile birlikte SNS, SQS, Lambda, S3, CloudWatch vs. servislerini birlikte kullanarak e-posta işlemlerinde karşılaşacağımız itibar kaybı ve spam gibi istenmeyen durumlardan nasıl korunacağımızı incelediğimiz bu makalemiz umarım yol gösterici ve yardımcı olur. Görüşmek üzere.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

  1. Ülkeye göre spam e-posta mevzuatı (https://en.m.wikipedia.org/wiki/Email_spam_legislation_by_country)
  2. Sender Policy Framework (SPF) (https://tools.ietf.org/html/rfc7208)
  3. DomainKeys Identified Mail (DKIM) (http://dkim.org/)
  4. Amazon SES Bildirimlerini İzleme (https://docs.aws.amazon.com/en_us/ses/latest/DeveloperGuide/monitor-sending-using-notifications.html)
  5. Amazon SES Suppression List’ten E-posta Adresini Kaldırma (https://docs.aws.amazon.com/en_us/ses/latest/DeveloperGuide/remove-from-suppression-list.html)
  6. Amazon SES’te E-posta Adreslerini Doğrulama (https://docs.aws.amazon.com/en_us/ses/latest/DeveloperGuide/verify-email-addresses.html)
  7. Amazon SES Gönderme Sınırlarınızı Yönetme (https://docs.aws.amazon.com/en_us/ses/latest/DeveloperGuide/manage-sending-limits.html)
  8. Amazon SES İstatistiklerini inceleme (https://docs.aws.amazon.com/en_us/ses/latest/DeveloperGuide/monitor-sending-activity.html)
  9. Amazon SES E-posta Gönderme Hataları (https://docs.aws.amazon.com/ses/latest/DeveloperGuide/ses-errors.html)
  10. Amazon Simple Notification Service (https://aws.amazon.com/tr/sns/)
  11. Amazon Simle Queue Service (https://aws.amazon.com/tr/sqs/)
  12. Amazon Simple E-mail Service (SES) Nedir? Nasıl Kullanılır? (https://www.mshowto.org/amazon-simple-e-mail-service-ses-nedir-nasil-kullanilir.html)
  13. Testing Email Sending in Amazon SES (https://docs.aws.amazon.com/en_us/ses/latest/DeveloperGuide/mailbox-simulator.html)
  14. Handle Errors in Serverless Applications with AWS Step Functions and AWS Lambda (https://aws.amazon.com/tr/getting-started/tutorials/handle-serverless-application-errors-step-functions-lambda/)

www.mshowto.org

TAGs: , E-posta sorunlarının SES ile çözümü, , Geri Dönen İletiler ve Şikayetler, , , Bounces, Complaints, Spam, AWS, SQS, SNS, Lambda, S3, SES, Suppression List, Deliverability

Yorum Yap

Yazar Hakkında

Bora Tercan 1974 yılında Ankara’da doğdu. 20 seneden fazla bilişim sektöründe profesyonel iş deneyimi içerisinde; Marka bağımsız Sunucu, Yazılım, Firewall, Router, Veritabanı, Kablosuz Ağ, İnternet, Lan ve Wan vs. her türlü bilişim alt yapısının kurgulanması, projelendirilmesi, sorunsuz çalıştırılmasının sağlanması, merkezi olarak takibi, yönetilmesi ve sorunların tespit edilerek düzeltilmesi/düzelttirilmesi. Bilişim satın alma süreçlerinin takibi ve organizasyonun yapılması, Bilişim personelinin yönetilmesi, bilişim firmalarıyla işbirliği kurarak en iyi çözüme ilk elden ulaşılmasını sağlaması, iş analizi ve proje yönetimi gibi konularda 15 seneden fazlası Turizmde olmak üzere bilişim profesyoneli olarak sektör tecrübesi bulunmaktadır. Kariyerini bulut bilişim konusunda önemli projeleri olan Turizm Yazılımları geliştiren bir firmada Bilgi İşlem Yöneticisi olarak devam ettiriyor. Sahip olduğu sertifikalar; MCP MCSE MCSA MCDBA’dir.

Yorum Yap

Yorumlar (4)

  1. Şu ana kadar okuduğum
    Aklımda hiç bir soru işareti kalmayan makaleydi teşekkürlerimi sunmak istiyorum

  2. Oncelikle bu guzel bilgileri paylasiginiz icin tesekkurler.Benim bir sorum olucakti aws ses den gonderdigimiz mailleri S3 Bucket icersinde direk bir sekilde nasil gorebiliriz? gelen mailler gorunuyor fakat gonderdigim mailleri goremiyoum.bunu nasil ayarliyabilirim?

    • 2 ay önce

      Merhaba,
      AWS SES üzerinden mail göndermek için kullandığınız bir sistem veya uygulamanız olmalı bu sisteme gönderilen mailleri ayrıca s3 bucket a loglamasını sağlamalılsınız. AWS SES gönderdiğiniz mailleri bir yerde tutmaz. Sadece gönderilen mailler ile ilgili hata ve teslim mesajlarını size sağlar. Umarım yeterli olmuştur.