Przejdź do głównej zawartości

DKIM

DKIM (DomainKeys Identified Mail) to metoda uwierzytelniania poczty elektronicznej, która dodaje podpis kryptograficzny do nagłówków wiadomości wychodzącej, umożliwiając serwerom odbierającym zweryfikowanie, że wiadomość rzeczywiście pochodzi z deklarowanej domeny i nie została zmieniona w trakcie przesyłania.

Definicja

DKIM (DomainKeys Identified Mail) to specyfikacja uwierzytelniania poczty elektronicznej, która używa kryptografii klucza publicznego do podpisywania wiadomości wychodzących, umożliwiając serwerom odbierającym potwierdzenie, że wiadomość pochodzi z domeny, której nadawca ją przypisuje, oraz że treść wiadomości i wybrane nagłówki nie zostały zmodyfikowane w trakcie przesyłania. Domena podpisująca publikuje swój klucz publiczny w DNS; serwery odbierające pobierają ten klucz i używają go do weryfikacji podpisu osadzonego w nagłówku email DKIM-Signature.

DKIM został opracowany na podstawie dwóch wcześniejszych, częściowo nakładających się propozycji — DomainKeys firmy Yahoo i Identified Internet Mail firmy Cisco — i po raz pierwszy opublikowany jako IETF RFC 4871 w 2007 roku. Aktualną autorytatywną specyfikacją jest RFC 6376, opublikowany we wrześniu 2011 roku i zaktualizowany przez RFC 8301 (2018) oraz RFC 8463 (2018), aby narzucić silniejsze algorytmy kryptograficzne. DKIM jest powszechnie wdrożony w ekosystemie poczty elektronicznej i stanowi wymagany komponent polityki DMARC, która zapewnia znaczącą ochronę.

Jak to działa

Gdy serwer pocztowy organizacji wysyła wiadomość, moduł podpisywania DKIM (wbudowany w MTA takie jak Postfix, Exim i Microsoft Exchange, lub dostarczany jako usługa przez dostawców transakcyjnych, w tym SendGrid, Mailgun, Amazon SES i Postmark) wykonuje następujące operacje.

Podpisujący wybiera podzbiór nagłówków do uwzględnienia w podpisie — zazwyczaj From, To, Subject, Date i Content-Type — i kanonikalizuje je przy użyciu jednego z dwóch zdefiniowanych algorytmów: simple (minimalna normalizacja białych znaków) lub relaxed (bardziej tolerancyjny, znoszący drobne przepisania nagłówków podczas tranzytu). Treść wiadomości jest podobnie kanonikalizowana i haszowana przy użyciu SHA-256 (algorytm wymagany od czasu, gdy RFC 8301 wycofało starsze SHA-1). Następnie podpisujący oblicza cyfrowy podpis RSA lub Ed25519 nad hashem nagłówka oraz strukturyzowanym ciągiem metadanych podpisywania i wstawia nagłówek DKIM-Signature na początku wiadomości.

Nagłówek DKIM-Signature zawiera: v=1 (wersja), a=rsa-sha256 (algorytm), d=example.com (domena podpisująca, znana jako tag d=), s=selector1 (selektor, używany do wyszukania konkretnego klucza publicznego), h=from:to:subject (podpisane nagłówki), bh=<body hash> oraz b=<base64 signature>.

Właściciel domeny publikuje odpowiadający klucz publiczny pod <selector>._domainkey.<domain> jako rekord DNS TXT. Gdy Gmail, Outlook, Yahoo Mail lub jakikolwiek MTA zgodny z RFC 6376 odbiera wiadomość, odpytuje DNS o ten rekord, pobiera klucz publiczny i weryfikuje podpis kryptograficzny. Prawidłowy podpis daje wynik DKIM pass. Brakujący lub nieprawidłowy podpis, albo jakakolwiek modyfikacja podpisanych nagłówków lub treści w tranzycie, daje wynik fail lub neutral, który następnie jest przekazywany do silnika oceny DMARC.

Selektory (tag s=) pozwalają domenie publikować jednocześnie wiele kluczy DKIM — przydatne do rotacji kluczy bez przerwy w usłudze lub do izolacji kluczy w różnych systemach wysyłających (np. marketing._domainkey.example.com versus transactional._domainkey.example.com).

Gdzie się z tym spotkasz

DKIM jest fundamentalnym wymaganiem dostarczalności dla każdej usługi zależnej od poczty elektronicznej. Dostawcy poczty transakcyjnej, tacy jak Amazon SES, SendGrid (część Twilio), Mailgun (część Sinch), Postmark i SparkPost, włączają podpisywanie DKIM jako obowiązkowy krok konfiguracyjny podczas weryfikacji domeny. Dostawca generuje parę kluczy RSA-2048 lub Ed25519, wyświetla klucz publiczny jako rekord DNS TXT i prosi właściciela domeny o jego opublikowanie przed włączeniem wysyłki z tej domeny.

Dla platform konkursowych, które wysyłają emaile potwierdzenia głosu, podpisywanie DKIM jest szczególnie ważne, ponieważ emaile potwierdzające muszą przejść kontrole uwierzytelniania stosowane przez głównych dostawców skrzynek pocztowych — Google Workspace / Gmail, Microsoft Outlook i Exchange Online Protection, Yahoo Mail, Apple iCloud Mail oraz ProtonMail. Niepodpisane wiadomości lub wiadomości, których podpisy zawodzą, są znacznie częściej dostarczane do spamu lub całkowicie blokowane, uniemożliwiając wyborcom potwierdzenie ich zgłoszeń.

Narzędzia testowania poczty, takie jak Mail-Tester, GlockApps i MXToolbox DKIM Lookup, pozwalają nadawcom sprawdzać i walidować ich konfigurację DKIM przed wysyłką produkcyjną. Google Postmaster Tools i Microsoft SNDS zapewniają agregowane dane dostarczalności, które odzwierciedlają wskaźniki przejścia DKIM w czasie.

Praktyczne przykłady

Platforma konkursowa skonfigurowana z selektorem DKIM s=contest dla domeny votes.example.com publikuje klucz publiczny pod contest._domainkey.votes.example.com. Każdy wychodzący email potwierdzający niesie nagłówek DKIM-Signature podpisany odpowiadającym kluczem prywatnym. Gdy konto Gmail wyborcy odbiera wiadomość, filtr przychodzący Gmaila odpytuje DNS, weryfikuje podpis, rejestruje przejście i przekazuje wynik do swojego klasyfikatora spamu. Potwierdzone przejście DKIM, w połączeniu z wyrównaniem SPF, spełnia warunki zgodności DMARC.

Administrator konkursu rotuje klucz RSA 1024-bitowy (już nieuznawany za kryptograficznie wystarczający) na klucz RSA 2048-bitowy po przeczytaniu RFC 8301. Stary selektor jest utrzymywany w stanie aktywnym przez siedem dni, aby objąć wszelkie wiadomości w tranzycie, a następnie usuwany z DNS. Wszystkie nowe wiadomości używają zaktualizowanego selektora i klucza.

Powiązane pojęcia

DKIM współpracuje z Rekordem SPF — który uwierzytelnia adres IP serwera wysyłającego — oraz z DMARC — który definiuje akcję polityki i mechanizm raportowania na podstawie wyników SPF i DKIM. Oba sygnały trzeba rozumieć łącznie; samo przejście DKIM nie czyni wiadomości zgodnej z DMARC, jeśli domena d= nie jest wyrównana z domeną RFC5322.From. W kontekście operacji konkursowych praktyczne konsekwencje awarii DKIM są wyjaśnione w Email Confirmation Vote, gdzie umieszczenie wiadomości potwierdzającej w skrzynce odbiorczej bezpośrednio decyduje o tym, czy oddany głos zostanie zliczony.

Z bloga — przewodniki i studia przypadków

Praktyczne przewodniki, głębokie analizy techniczne i anonimizowane studia przypadków.60+ artykułów. Wybór obraca się.

Victor Williams — founder of Buyvotescontest.com
Victor Williams
Online · zwykle odpowiada w 5 min

Cześć 👋 — wyślij URL konkursu, w ciągu godziny dam wycenę. Karta jeszcze niepotrzebna.