Amazon SES już pierwszego dnia bez problemu wyśle pocztę, która przejdzie testy SPF i DKIM, a mimo to nie zaliczy DMARC. Powodem jest wyrównanie (alignment): SES podpisuje wiadomość mechanizmem DKIM Twoją domeną (co jest wyrównane), ale test SPF działa na własnej domenie kopertowej Amazona amazonses.com, więc nigdy nie wyrówna się z Twoim widocznym adresem From, dopóki nie ustawisz własnej poddomeny MAIL FROM. Ten przewodnik omawia pełną konfigurację DNS - trzy rekordy CNAME mechanizmu Easy DKIM, rekordy SPF TXT i MX dla MAIL FROM oraz sposób potwierdzenia pełnego wyrównania od końca do końca, zanim wymusisz politykę.
Odczytujemy wyłącznie publiczny DNS. Nic nie zapisujemy, dopóki nie przypiszesz domeny do konta.
Tożsamość zweryfikowana a tożsamość wysyłająca
Zanim SES cokolwiek wyśle, w konsoli SES tworzysz zweryfikowaną tożsamość. Możesz zweryfikować pojedynczy adres e-mail albo całą domenę. Zweryfikuj domenę. Tożsamość domenowa pozwala wysyłać z dowolnego adresu w tej domenie i jest jedyną drogą, która odblokowuje podpisywanie Easy DKIM Twoją własną domeną - a właśnie tego potrzebuje DMARC.
Gdy dodajesz tożsamość domenową, SES pyta, jak chcesz obsłużyć DKIM. Wybierz Easy DKIM (opcja domyślna). SES generuje parę kluczy 2048-bit, zatrzymuje klucz prywatny i przekazuje Ci trzy klucze publiczne do opublikowania jako rekordy CNAME. Gdy tylko się rozwiążą, SES oznacza tożsamość jako zweryfikowaną i zaczyna automatycznie podpisywać każdą wiadomość. Nie ma tu nic do ręcznej rotacji na co dzień - SES zarządza materiałem kluczy stojącym za tymi rekordami CNAME.
Weryfikacja to nie to samo co reputacja. Zweryfikowana tożsamość oznacza, że SES ufa, iż domena należy do Ciebie. Nie mówi nic o tym, czy Twoja poczta trafia do skrzynki odbiorczej. O tym decyduje uwierzytelnianie SPF, DKIM i DMARC i dlatego prawidłowe ustawienie DNS ma znaczenie nawet wtedy, gdy konsola pokazuje zielony znacznik.
Easy DKIM: przepływ trzech rekordów CNAME
Easy DKIM w SES nie daje Ci jednego długiego rekordu TXT, jak niektórzy dostawcy. Daje trzy rekordy CNAME, z których każdy kieruje host selektora do infrastruktury podpisującej Amazona. Wyglądają tak:
token1._domainkey.example.com CNAME token1.dkim.amazonses.com
token2._domainkey.example.com CNAME token2.dkim.amazonses.com
token3._domainkey.example.com CNAME token3.dkim.amazonses.com
Każdy token to unikalny ciąg, który SES przypisuje Twojej tożsamości. Opublikuj wszystkie trzy dokładnie tak, jak pokazano. Projekt oparty na trzech kluczach to właśnie to, co pozwala Amazonowi rotować klucze bazowe bez konieczności ponownego dotykania DNS: rekord CNAME wskazuje na Amazona, więc prawdziwy klucz publiczny znajduje się po ich stronie.
Kilka rzeczy potrafi tu podłożyć nogę. Jeśli Twój dostawca DNS automatycznie dokleja nazwę domeny, nie wklejaj pełnej kwalifikowanej nazwy dwa razy, bo skończysz z token1._domainkey.example.com.example.com. A ponieważ to są rekordy CNAME, host nie może mieć żadnego innego rekordu pod tą samą nazwą. Jeśli DKIM później pokaże się jako niedziałający, to jest pierwsze miejsce, w które warto zajrzeć. Różnicę między tym podejściem a surowym kluczem opisano w rekord DKIM CNAME kontra TXT.
DKIM wyrównuje się dla DMARC automatycznie przy SES, ponieważ tag d= podpisu to Twoja własna domena. To ta połowa układanki, którą SES robi dobrze od razu po wyjęciu z pudełka.
Dlaczego SES przechodzi SPF, ale go nie wyrównuje
Oto ukryty szczegół, który kosztuje ludzi zaliczony raport DMARC. Domyślnie SES używa własnej poddomeny jako nadawcy kopertowego (Return-Path / MAIL FROM), coś w rodzaju bounces+...@amazonses.com. Serwer odbierający uruchamia SPF na tej domenie kopertowej, sprawdza opublikowany rekord Amazona i SPF przechodzi.
Problem w tym, że DMARC nie obchodzi, że SPF przeszedł. DMARC obchodzi, czy domena, która zaliczyła SPF, pasuje do domeny w widocznym nagłówku From. Przy domyślnej konfiguracji SPF uwierzytelnił amazonses.com, podczas gdy Twój adres From to you@example.com. Te dwa nie dzielą wspólnej domeny organizacyjnej, więc wyrównanie SPF nie powiedzie się. Twoja poczta może nadal przejść DMARC na sile samego wyrównanego DKIM, ale jedziesz wtedy na jednym silniku zamiast dwóch, a pojedynczy przeskok przez przekierowanie, które zepsuje DKIM, zrzuci Cię poniżej progu DMARC. Aby zrozumieć, dlaczego oba testy mają znaczenie, przeczytaj SPF, DKIM i DMARC wyjaśnione.
Napraw wyrównanie SPF własną poddomeną MAIL FROM
Rozwiązaniem jest polecenie SES, aby użył poddomeny Twojej własnej domeny jako MAIL FROM. W konsoli SES otwórz tożsamość domenową, przejdź do ustawienia własnego MAIL FROM i wpisz poddomenę taką jak mail.example.com. SES poprosi Cię wtedy o opublikowanie dwóch rekordów DNS na tej poddomenie.
Najpierw rekord MX, aby odbicia (bounces) wracały prawidłowo. Cel jest zależny od regionu:
mail.example.com. MX 10 feedback-smtp.us-east-1.amazonses.com
Zamień us-east-1 na region, z którego wysyła Twoje konto SES. Po drugie, rekord SPF TXT na tej samej poddomenie:
mail.example.com. TXT "v=spf1 include:amazonses.com ~all"
Teraz nadawcą kopertowym staje się mail.example.com. SPF uwierzytelnia tę poddomenę, a ponieważ DMARC domyślnie używa wyrównania rozluźnionego (relaxed), domena organizacyjna mail.example.com (którą jest example.com) pasuje do domeny organizacyjnej Twojego adresu From. SPF jest teraz wyrównany. Wysyłasz zarówno na DKIM, jak i SPF, co jest dokładnie tym, czego chcesz przed włączeniem wymuszania.
Zwróć uwagę, że ten rekord SPF trafia na poddomenę MAIL FROM, niekoniecznie na Twoją domenę główną. Jeśli Twoja domena główna example.com również wysyła pocztę przez inne usługi, utrzymuj jej własny rekord SPF osobno i poprawnie.
Nie ustawiaj aspf=s - ścisłe wyrównanie psuje strumień SES
Pisząc rekord DMARC, możesz mieć pokusę, aby zablokować wyrównanie na ścisłe (strict). Nie rób tego przy konfiguracji w stylu wyłącznie SES. Oto dlaczego.
Ścisłe wyrównanie SPF (aspf=s) wymaga, aby domena MAIL FROM pasowała do domeny From dokładnie, znak po znaku. Twoje MAIL FROM to mail.example.com, a Twoje From to example.com. Przy wyrównaniu rozluźnionym są traktowane jako ta sama organizacja i SPF się wyrównuje. Przy ścisłym mail.example.com nie równa się example.com, więc wyrównanie SPF zawodzi i wracasz do polegania na samym DKIM. Wydawca, który ustawia aspf=s w przekonaniu, że jest to "bezpieczniejsze", po cichu psuje połowę SPF własnego strumienia SES.
Zostaw wyrównanie rozluźnione, co jest domyślnym ustawieniem DMARC. Bezpieczny rekord na początek:
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
Zacznij od p=none, aby móc obserwować raporty zbiorcze bez wpływu na dostarczanie, potwierdzić, że zarówno SES, jak i wszyscy inni nadawcy są wyrównani, a następnie przejść do quarantine i reject. Mechanikę tego stopniowego zaostrzania opisano w jak przejść z DMARC none do reject, a kompromis między rozluźnionym a ścisłym w całości w DMARC wyrównanie rozluźnione kontra ścisłe.
Zweryfikuj cały łańcuch od końca do końca
Opublikowanie rekordów to nie to samo co ich zaliczenie. Potwierdź faktyczny wynik, zanim cokolwiek wymusisz. Wyślij wiadomość testową z SES na adres, który kontrolujesz, i przeczytaj nagłówek Authentication-Results - chcesz zobaczyć spf=pass z domeną będącą Twoją poddomeną MAIL FROM, dkim=pass z d=example.com oraz dmarc=pass.
Następnie przepuść swoją domenę przez checker na górze tej strony. Rozwiązuje on Twoje rekordy CNAME DKIM SES, Twoje rekordy SPF i MX dla MAIL FROM oraz Twoją politykę DMARC i ocenia wynik. Jeśli SPF pokazuje się jako zaliczony, ale niewyrównany, Twoja poddomena MAIL FROM nie jest skonfigurowana. Jeśli DKIM zawodzi, sprawdź ponownie te trzy rekordy CNAME pod kątem zdublowanego sufiksu domeny. Napraw, przeskanuj ponownie i zaostrz politykę DMARC dopiero wtedy, gdy każdy rekord odczytuje się czysto.
Najczęściej zadawane pytania
Czy Amazon SES przechodzi DMARC bez własnego MAIL FROM?
Może przejść na samym wyrównaniu DKIM, ponieważ SES podpisuje Twoją domeną. Ale SPF uwierzytelni amazonses.com, a nie Twoją domenę, więc wyrównanie SPF zawiedzie. Ustaw własną poddomenę MAIL FROM, aby wyrównać oba mechanizmy i zapewnić sobie redundancję na wypadek przekierowania, które usuwa DKIM.
Dlaczego SES używa trzech rekordów CNAME zamiast jednego rekordu TXT?
Easy DKIM kieruje trzy nazwy hostów selektorów do usługi podpisującej Amazona przez CNAME. Ponieważ prawdziwy klucz publiczny znajduje się po stronie Amazona, mogą oni rotować klucze bez konieczności ponownej edycji DNS przez Ciebie. Opublikuj wszystkie trzy dokładnie tak, jak pokazuje je konsola.
Jakiego rekordu MX potrzebuje własne MAIL FROM w SES?
Rekordu MX na poddomenie MAIL FROM wskazującego na feedback-smtp.<region>.amazonses.com z priorytetem 10, na przykład 10 feedback-smtp.us-east-1.amazonses.com. Dopasuj region do tego, skąd wysyła Twoje konto SES. To prawidłowo kieruje informacje zwrotne o odbiciach i skargach.
Czy mogę użyć ścisłego wyrównania aspf=s z SES?
Nie, nie przy MAIL FROM będącym poddomeną. Ścisłe wyrównanie SPF żąda, aby domena MAIL FROM była dokładnie równa domenie From, ale SES używa poddomeny takiej jak mail.example.com. Utrzymuj wyrównanie rozluźnione, aby domeny organizacyjne pasowały, a SPF pozostawał wyrównany.