AWS SES – jak nastavit Custom MAIL FROM

Pokud používáte AWS SES (Simple Email Service) k odesílání emailů, pak se Vám bude hodit tento návod s nastavením atributu MAIL FROM, který pomůže zlepšit doručitelnost Vašich emailů. Jde o jednoduché nastavení, ale když to děláte poprvé, nemusí být vše srozumitelné.

Nejprve krátký úvod do problematiky. Dnešní internet je plný spamu a tak vzniklo několik různých metod, jak spam detekovat a odfiltrovat ho. Jako odesílatel emailových zpráv potřebujete zajistit dvě základní věci:

  • aby Vaším jménem neodcházel spam
  • aby Vaše odesílané emaily dorazily příjemcům, tedy prošly antispamovými kontrolami

Emaily za nás odesílají i různé externí služby – CRM systémy, platformy pro odesílání newsletterů a mnoho dalších. Je proto potřeba myslet i na doručitelnost těchto zpráv.

Obvykle se k tomu používá SPF, DKIM a DMARC. Princip je, že v DNS záznamech své internetové domény zveřejníte všechny důležité informace, podle kterých druhá strana pozná, že email opravdu odesíláte Vy. Pokud tyto tři atributy nemáte u domény správně nastavené, koledujete si, že Vaším jménem začne někdo odesílat spam.

  • SPF: v záznamu domény publikujete seznam serverů, které mají oprávnění odesílat emaily jménem této domény. Obvykle vypadá takto nějak TXT: „v=spf1 mx a ip4:1.2.3.4 ip4:5.6.7.8 include:amazonses.com ~all“.
  • DKIM (DomainKeys Identified Mail): v záznamu domény publikujete veřejný klíč (_domainkey). Odesílající server přidává do všech e-mailů digitální podpis a druhá strana podle něj dokáže ověřit pravost podpisu.
  • DMARC kontroluje dále soulad atributů odesílatele pomocí DKIM a SPF.

Co je MAIL FROM

Každý odeslaný email obsahuje dvě adresy – tu, kterou vidí příjemce (Od/From) a druhou, která je většinou skryta v kódu emailu (Mail from/Return-path). Při běžné emailové komunikaci jsou obě adresy stejné, ale jiná situace je, když se pro odeslání používá nějaké externí služba, v tomto případě AWS Simple Email Service (SES).  SES automaticky použije pro Mail From svojí doménu, tedy např. něco@eu-west-1.amazonses.com. A protože DMARC u SPF porovnává obě adresy From (něco@mojedomena.com) a Mail From (něco@.. .amazonses.com), tak při defaultním nastavení SES tato kontrola skončí neúspěšně. A neúspěšná kontrola může způsobit nedoručitelnost emailu, záleží na nastavení serveru u příjemce:

Remote server returned 'Access denied, sending domain mojedomena.com does not pass DMARC verification and has a DMARC policy of reject.'
Authentication-Results: spf=pass (sender IP is 54.24X.X.XX) smtp.mailfrom=eu-west-1.amazonses.com; dkim=pass (signature was verified) header.d=amazonses.com; dmarc=fail action=opctreject

Proč nastavit Custom MAIL FROM

Aby byla zajištěn soulad domén pro SPF, musí se obě domény (From a Mail From) shodovat. Takže musíme donutit SES odesílat v Mail From místo domény amazonses.com naši doménu mojedomena.com. Pro to lze využít volnějšího způsobu křížové kontroly – aby se shodovala i subdoména Vaší domény, která se bude do emailu vkládat jako Mail From. Takže si vymyslete název subdomény, kterou nikde jinde nepoužíváte a tu použijete dále v návodu. Není třeba tuto subdoménu fyzicky zakládat na serveru, stačí jen nastavit její DNS záznam a provést tak ověření. Já jsem si pro příklad zvolil subdoménu mailfrom.mojedomena.com.

(Pozor, výše uvedené platí jen v případě, když nemáte v záznamech domény nastaven požadavek na striktní shodu aspf=s, to se ale běžně nepoužívá.)

Jak nastavit Custom Mail From pro AWS SES na úrovni domény

Přihlašte se do AWS SES do regionu, který chcete nastavovat. V mém případě je to Irsko, tedy West-EU-1.

V levém menu v sekci Verified Identities vyberte doménu, na kterou chcete Custom Mail From aplikovat. Pozor, tato doména musí být již ověřena, tedy mít status Verified! Dole na stránce je sekce Custom MAIL FROM Domain, kde klikněte na tlačítko Edit.

AWS SES Verified Identities

V dalším kroku zaklikněte „Use a custom MAIL FROM domain“ a vyplňte svou pomocnou doménu, kterou pro tento účel chcete použít.

AWS SES Custom MAIL FROM

Po uložení se dole na přehledu objeví v sekci Custom MAIL FROM domain nové MX a TXT, které je potřeba nastavit v DNS záznamu pro subdoménu nastavit.

AWS SES Custom MAIL FROM - DNS záznamy

Takže přejděte do editace své domény (nejčastěji u svého hostingu) a přidejte je tam.

AWS SES Custom MAIL FROM nastavení DNS

Pozor u přidávání záznamu na tyto dvě běžné zákeřnosti:

  • Záznam pro MX server: je obvykle potřeba přidat na konec adresy tečku, pokud ji tam Váš poskytovatel nedoplňuje sám, jinak bude záznam neplatný.
  • Hodnota u TXT: někteří provideři u editace hodnot filtrují uvozovky, někteří ne, takže je potřeba po uložení zkontrolovat, aby se např. nekonvertovaly znaky uvozovek na HTML kód ("v=spf1 include:amazonses.com ~all"), což učinilo SPF záznam neplatným.

Po uložení je potřeba čekat na to, až se záznamy propíšou do světa a až dojde k ověření ze strany AWS. To může trvat několik hodin. Než dojde k ověření, tak se ukazuje v přehledu stav „Pending“, po ověření se změní na Successful. Pokud k ověření nedojde (např. kvůli té výše zmíněné chybějící tečce v MX záznamu), tak Vám po třech dnech přijde email „Amazon SES Custom MAIL FROM Domain Setup FAILURE in AWS Region …“, status se změní na Failed a je potřeba zjistit, kde je problém.

Nastavení Custom MAIL FROM pro jednotlivé emailové adresy

Jakmile dojde k úspěšnému ověření DNS záznamů pro subdoménu, je potřeba projít v sekci Verified identities všechny emaily, které mají tento způsob používat. V základním nastavení mají defaultní to „amazonses“, takže je potřeba jít do detailu každé emailové adresy, dole v sekci  Custom MAIL FROM kliknout na Edit a v detailu opět zaškrtnout checkbox Use custom MAIL FROM domain a doplnit svou doménu, kterou jste v předchozím kroku nastavili:

AWS Custom Mail From - nastavení jednotlivých emailů.

Hotovo, ještě si vyzkoušejte poslat testovací email a vylistujte si hlavičku, místo amazonses.com byste měli nyní vidět svou subdoménu:

smtp.mailfrom=012345ae123456-ab12345-eb12-123a-1234-1a123abcde-000000@mailfrom.mojedomena.com;
dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=mojedomena.com

 

Zdroje:
https://docs.aws.amazon.com/ses/latest/dg/mail-from.html,
https://repost.aws/knowledge-center/ses-dmarc-spf-dkim-alignment