Po co poczcie w ogóle to wszystko
Oto niewygodna prawda o e-mailu: zaprojektowano go na początku lat 80. dla małej sieci ludzi, którzy sobie ufali. Domyślnie każdy może wysłać e-mail, który twierdzi, że pochodzi od [email protected]. W podstawowym protokole nic tego nie blokuje.
SPF, DKIM i DMARC dodano później, żeby to naprawić. Razem pozwalają stronie odbierającej, czyli np. Gmailowi, Outlookowi czy Yahoo, odpowiedzieć na jedno pytanie: czy ten e-mail naprawdę pochodzi z domeny, z której twierdzi, że pochodzi? Gdy odpowiedź brzmi „nie”, wiadomość ląduje w spamie albo zostaje odrzucona. A jeśli Twoja własna domena nie ma ich skonfigurowanych, Twoje prawdziwe e-maile mogą być traktowane jak podróbki.
Pomoże szybkie porównanie:
- SPF to lista gości: które serwery mogą wysyłać e-maile w imieniu Twojej domeny.
- DKIM to lakowa pieczęć: podpis, który dowodzi, że e-mail nie został zmieniony po drodze.
- DMARC to instrukcje dla bramkarza: co zrobić, gdy e-mail nie przejdzie kontroli, i komu o tym powiedzieć.
SPF: lista gości
SPF (Sender Policy Framework) to jedna linijka tekstu, którą publikujesz w DNS swojej domeny. Wymienia serwery i usługi, które mogą wysyłać e-maile w Twoim imieniu. Gdy Gmail dostaje wiadomość z Twojej domeny, sprawdza tę listę i patrzy, czy serwer, który ją wysłał, jest na niej.
Typowy rekord SPF wygląda tak:
v=spf1 include:_spf.google.com include:sendgrid.net ~allCzytając od lewej do prawej:
v=spf1: „to jest rekord SPF”.include:_spf.google.com: Google Workspace może wysyłać w moim imieniu.include:sendgrid.net: SendGrid też (powiedzmy, dla e-maili z mojej aplikacji).~all: cała reszta to prawdopodobnie nie ja, więc traktuj ją podejrzliwie. (-alloznacza „na pewno nie ja, odrzuć”.)
Jest też limit 10 zapytań DNS w jednym rekordzie SPF. Liczy się każde include:, a także include'y zagnieżdżone w nich. Jeśli korzystasz z wielu usług, możesz przekroczyć limit, nawet o tym nie wiedząc, a wtedy SPF zawodzi dla wszystkich.
DKIM: lakowa pieczęć
SPF sprawdza, skąd przyszedł e-mail. DKIM (DomainKeys Identified Mail) sprawdza, czy sama wiadomość nie została zmieniona. Twoja usługa pocztowa podpisuje każdą wychodzącą wiadomość kluczem prywatnym, który zna tylko ona. Pasujący klucz publiczny publikujesz w swoim DNS. Serwer odbiorcy używa go do sprawdzenia podpisu.
Jeśli ktoś zmienił e-mail po drodze, choćby jedno słowo w treści, podpis przestaje się zgadzać. To jak lakowa pieczęć na dawnym liście: jeśli jest złamana, wiesz, że ktoś go otwierał.
Rekord DKIM publikuje się pod specjalną nazwą, na przykład google._domainkey.yourdomain.com, a jego wartość wygląda mniej więcej tak:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1...Dobra wiadomość: nigdy nie piszesz tego sam. Generuje go Twój dostawca poczty, a Ty po prostu kopiujesz go do DNS. Słowo przed ._domainkey (tutaj google) nazywa się selektorem. Pozwala po prostu mieć kilka kluczy, po jednym na usługę.
DMARC: instrukcje dla bramkarza
SPF i DKIM dostarczają serwerowi odbiorcy faktów. DMARC (Domain-based Message Authentication, Reporting and Conformance) mówi mu, co z tymi faktami zrobić. Dodaje też jedną ważną zasadę zwaną wyrównaniem (alignment): domena, która przechodzi SPF lub DKIM, musi zgadzać się z domeną, którą czytelnik faktycznie widzi w polu „Od”. Bez tej zasady oszust mógłby przejść SPF ze swoją domeną, a wyświetlać Twoją.
Rekord DMARC znajduje się pod _dmarc.yourdomain.com i wygląda tak:
v=DMARC1; p=none; rua=mailto:[email protected]p=none: tylko obserwuj, niczego jeszcze nie blokuj. Idealne na początek.p=quarantine: e-maile, które nie przejdą kontroli, wysyłaj do spamu.p=reject: całkowicie odrzucaj e-maile, które nie przejdą kontroli. Najsilniejsza ochrona.rua=mailto:...: dokąd odbiorcy mają wysyłać Ci codzienne raporty zbiorcze.
Te raporty to ukryty skarb. Pokazują każdy serwer, który wysyła e-maile z użyciem Twojej domeny, w tym usługi, o których zapomniałeś, i każdego, kto próbuje się pod Ciebie podszywać.
Konfiguracja krok po kroku
Powiedzmy, że masz domenę myshop.com, skrzynkę w Google Workspace i usługę w rodzaju SendGrid albo Mailgun do potwierdzeń zamówień. Ja zrobiłbym to w takiej kolejności:
- Spisz wszystko, co wysyła e-maile z Twojej domeny: dostawcę skrzynki, stronę lub aplikację, narzędzie do newslettera, helpdesk, program do faktur. Ten krok ludzie pomijają i to on później sprawia najwięcej problemów.
- Utwórz jeden rekord SPF w DNS (rekord TXT na
myshop.com), który obejmuje je wszystkie i kończy się na~all. - Włącz DKIM w każdej usłudze. Każda da Ci rekord do skopiowania do DNS. Potem kliknij w tej usłudze „zweryfikuj” albo „rozpocznij uwierzytelnianie”.
- Dodaj rekord DMARC z
p=nonei adresem do raportów, na_dmarc.myshop.com. - Odczekaj tydzień lub dwa i przeczytaj raporty. Napraw wszystko, co jest legalne, a nie przechodzi.
- Zaostrz politykę do
p=quarantine, a później dop=reject, gdy będziesz pewien, że wszystkie Twoje prawdziwe e-maile przechodzą.
Jak sprawdzić je w każdym otrzymanym e-mailu
Nie potrzebujesz żadnych narzędzi. Twoja aplikacja pocztowa już pokazuje wyniki:
- Gmail: otwórz e-mail, kliknij trzy kropki, a potem Pokaż oryginał. Na górze zobaczysz linijki w stylu
SPF: PASS,DKIM: PASSiDMARC: PASS. - Outlook: otwórz wiadomość, potem View i View message details (albo Message source) i poszukaj nagłówka
Authentication-Results. - Apple Mail: View, potem Message, potem All Headers.
Prawdziwy nagłówek wygląda mniej więcej tak:
Authentication-Results: mx.google.com;
dkim=pass header.d=myshop.com;
spf=pass smtp.mailfrom=myshop.com;
dmarc=pass (p=QUARANTINE) header.from=myshop.comTrzy razy „pass” i zgodne domeny: ten e-mail jest prawdziwy. Jeśli widzisz fail albo domeny nie zgadzają się z nadawcą, którego widzisz, uważaj. To jeden z sygnałów ostrzegawczych, które opisuję w artykule jak rozpoznać e-mail phishingowy.
Jeśli konfigurujesz własną domenę, szybki test wygląda tak: wyślij e-mail do tymczasowej skrzynki i na adres Gmail, a potem sprawdź nagłówki kopii w Gmailu. Zajmuje to dwie minuty i pokazuje dokładnie to, co widzi świat zewnętrzny.
Częste problemy i szybkie poprawki
- „SPF: softfail” albo „neutral”: serwera, który wysłał e-mail, nie ma w Twoim rekordzie SPF. Dodaj usługę za pomocą
include:, które od niej dostaniesz. - „SPF permerror”: zwykle dwa rekordy SPF albo ponad 10 zapytań. Połącz je w jeden rekord i usuń usługi, z których już nie korzystasz.
- „DKIM: fail” po edycji szablonu: coś przepisało e-mail już po podpisaniu (robią tak niektóre usługi przekierowujące i stopki e-maili). Wyślij bezpośrednio i przetestuj ponownie.
- DMARC nie przechodzi, choć SPF przechodzi: to kwestia wyrównania. SPF przeszedł dla domeny Twojej usługi wysyłkowej, a nie dla Twojej. Włącz w tej usłudze DKIM z własną domeną albo ustaw własną domenę return-path.
- E-maile nadal trafiają do spamu, choć wszystko przechodzi: uwierzytelnianie dowodzi, kim jesteś, a nie że ludzie chcą Twoich e-maili. Liczą się też treść, reputacja nadawcy i liczba zgłoszeń. Piszę o tym więcej w artykule dlaczego e-maile z aplikacji trafiają do spamu.
Czy naprawdę potrzebujesz wszystkich trzech?
Tak. Od 2024 roku Gmail i Yahoo wymagają SPF, DKIM i rekordu DMARC od każdego, kto wysyła większe ilości e-maili, a nawet mali nadawcy mają znacznie lepszą dostarczalność, gdy mają skonfigurowane wszystkie trzy. Co ważniejsze, to właśnie DMARC z p=reject powstrzymuje oszustów przed wysyłaniem fałszywych e-maili w Twoim imieniu do Twoich własnych klientów.
Konfiguracja zajmuje jedno popołudnie. Potem po cichu chroni Twoją domenę każdego dnia. Jeśli masz domenę i odkładasz to od dawna, to jest Twój znak. Zacznij dziś od p=none. Zaostrzyć możesz później.