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á. Takže pokud to tam takto máte, nastavte aspf=r, tedy relaxed. Zároveň také nastavte adkim=r, protože se mi již stalo, že se při neuvedení tohoto atributu nastavil DKIM domain alignment na strict a tímpádem kontrola neprošla. Většina emailů prošla, protože obvykle stačí splnit jen jednu podmínku souladu, ale někde je potřeba mít v souladu SPF i DKIM.
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.
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.
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.
Takže přejděte do editace své domény (nejčastěji u svého hostingu) a přidejte je tam.
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:
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
Nastavení subdomény Custom MAIL FROM pro subdoménu
Výše uvedené bylo nastavení pro hlavní doménu „mojedomena.com“. Ale co když je potřeba posílat emaily ze subdomény, např. newsletter.mojedoména.com? V tomto případě bude opět problém s alignmentem domén jak u SPF, tak u DKIM:
SPF domain does not align with RFC5322.From domain (amazonses.com != mojedomena.com). Alignment mode: relaxed.
DKIM domain does not align with RFC5322.From domain (amazonses.com != mojedomena.com). Alignment mode: relaxed.
Řešením je projít si stejným procesem i pro subdoménu:
- V AWS SES konzoli založit novou identitu pro subdoménu „projects.mojedomena.com“ a ověřit ji pomocí CNAME záznamů v DNS.
- Až proběhne validace subdomény, tak v její editaci zapnout „Custom MAIL FROM“ a definovat subdoménu subdomény, např. „mailfrom.projects.mojedomena.com“.
- Přidat do DNS MX záznam pro subdoménu mailfrom.projects.mojedomena.com např. s hodnotou „feedback-smtp.eu-central-1.amazonses.com.“ pro region Frankfurt.
- Přidat do DNS TXT záznam pro subdoménu mailfrom.projects.mojedomena.com s hodnotou „v=spf1 include:amazonses.com ~all“.
- V identitách u jednotlivých emailových adres se subdoménou (např. info@projects@mojedomena.com) zapnout custom MailFrom s hodnotou „mailfrom.projects.mojedomena.com“.
- Otestovat pomocí tlačítka Send test email na službu https://www.dmarctester.com/.
Zdroje:
https://docs.aws.amazon.com/ses/latest/dg/mail-from.html,
https://repost.aws/knowledge-center/ses-dmarc-spf-dkim-alignment
https://sendy.co/forum/discussion/15574/use-subdomain-of-a-subdomain-for-mail-from#gsc.tab=0 (subdomény)
Užitečné nástroje:
https://www.dmarctester.com/ – robot na otestování DMARC. Pošlete email na adresu, kterou Vám uvede a on vše zanalyzuje a předá Vám velmi přístupným způsobem.
https://dnsdumpster.com/ – zobrazí kompletní DNS zázmany pro jakoukoliv doménu, včetně grafického diagramu