Moduł 4 · 4.4
DKIM: podpis pod Państwa pocztą
Moduł 4: Rekordy dla poczty e-mail · Czas czytania: 8 min
Cel lekcji: Po tej lekcji będą Państwo potrafili wyjaśnić, jak działa DKIM, odnaleźć i sprawdzić rekord DKIM oraz poprawnie umieścić rekord DKIM usługi zewnętrznej (jako TXT lub jako CNAME).
Pojęcia kluczowe: DKIM, podpis cyfrowy, klucz prywatny i klucz publiczny, selektor, _domainkey, d= i s=, v=DKIM1; k=rsa; p=, DKIM przez CNAME, rotacja kluczy
Pieczęć na każdej wiadomości
SPF (lekcja 4.3) sprawdza, z którego serwera pochodzi wiadomość. DKIM (DomainKeys Identified Mail, RFC 6376) działa inaczej: umieszcza podpis cyfrowy na samej wiadomości.
Działa to tak:
- Serwer wysyłający wiadomość posiada tajny klucz prywatny. Za jego pomocą tworzy dla każdej wiadomości podpis obejmujący najważniejsze elementy: nadawcę, temat, datę i treść.
- Ten podpis trafia do nagłówka wiadomości:
DKIM-Signature. - Odpowiadający mu klucz publiczny znajduje się w DNS domeny, w rekordzie TXT.
- Odbiorca pobiera ten klucz publiczny i sprawdza podpis. Jeśli się zgadza, wie dwie rzeczy: wiadomość została rzeczywiście podpisana przez kogoś, kto zarządza DNS tej domeny, oraz wiadomość nie została zmieniona w drodze.
Zaletą DKIM jest to, że działa nadal po przekazaniu wiadomości dalej, o ile jej treść nie została zmieniona. SPF ma z tym problem.
Gdzie znajduje się klucz? Selektor
Domena może mieć kilka kluczy DKIM: jeden od Państwa własnego serwera pocztowego, jeden od Microsoft 365, jeden od usługi newsletterowej. Aby je rozróżnić, każdy klucz ma nazwę, czyli selektor.
W podpisie znajdują się dwa ważne pola:
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=mail2026; ...d=example.com: domena podpisująca.s=mail2026: selektor.
Odbiorca wyszukuje klucz pod tą nazwą:
<selector>._domainkey.<domein>
mail2026._domainkey.example.comCzęść _domainkey jest stała. Rekord wygląda na przykład tak:
mail2026._domainkey.example.com. 3600 IN TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOC..."| Element | Znaczenie |
|---|---|
v=DKIM1 | To jest klucz DKIM. |
k=rsa | Rodzaj klucza. RSA jest powszechnie stosowany; istnieje też ed25519 (RFC 8463). |
p=... | Sam klucz publiczny, długi ciąg liter i cyfr. Jeśli p= jest puste, klucz został unieważniony. |
Klucz RSA o długości 2048 bitów to standardowy wybór; 1024 bity to minimum (RFC 8301). Taki klucz jest dłuższy niż 255 znaków, więc rekord składa się z kilku fragmentów tekstu (lekcja 4.2). Większość paneli zajmuje się tym samodzielnie.
Własny DKIM i DKIM usług zewnętrznych
Państwa pakiet hostingowy lub serwer pocztowy. Na wielu serwerach DKIM jest domyślnie włączony, a panel sam umieszcza rekord w DNS. Zobaczą wtedy Państwo rekord TXT o nazwie takiej jak x._domainkey lub default._domainkey.
Jeśli DNS Państwa domeny znajduje się u innego dostawcy (na przykład Cloudflare lub u rejestratora), serwer pocztowy nie może umieścić tam rekordu samodzielnie. W takim przypadku należy skopiować nazwę i pełną wartość z panelu hostingowego i utworzyć u dostawcy DNS rekord TXT z dokładnie taką samą nazwą i wartością. Jest to coś, o czym często się zapomina przy zmianie serwerów nazw: poczta trafia wtedy nagle częściej do spamu.
Usługi zewnętrzne. Microsoft 365, Google Workspace i usługi newsletterowe podpisują wiadomości własnym kluczem. Otrzymują Państwo od nich jeden lub więcej rekordów:
- Jako TXT, na przykład Google Workspace: nazwa
google._domainkey, wartośćv=DKIM1; k=rsa; p=z długim kluczem po niej. - Jako CNAME, na przykład Microsoft 365 (
selector1._domainkeyiselector2._domainkey) lub Mailchimp (k2._domainkeyik3._domainkey). CNAME wskazuje na klucz zarządzany przez samą usługę. Zaleta: usługa może wymienić swój klucz bez konieczności działania z Państwa strony.
Wszystkie te rekordy mają własny selektor i dlatego nie wchodzą sobie wzajemnie w drogę. Nie należy usuwać rekordu DKIM własnego serwera pocztowego przy dodawaniu kolejnej usługi.
Dlaczego dwa selektory?
Usługi takie jak Microsoft 365 wymagają dwóch rekordów CNAME, selector1 i selector2. Podpisują one wiadomości jednym kluczem naraz i w określonych momentach przełączają się na drugi (rotacja kluczy). Jeśli ustawią Państwo tylko selector1, działa to do pierwszej zmiany, a potem DKIM przestaje działać od razu. Dlatego należy zawsze ustawić wszystkie rekordy podane przez usługę.
Najczęstsze błędy
- Podwójna nazwa domeny. Wpisują Państwo
k2._domainkey.example.comw panelu, który sam dodaje nazwę domeny na końcu. Rezultat:k2._domainkey.example.com.example.com. Należy wpisać tylkok2._domainkey. - TXT zamiast CNAME (lub odwrotnie). Należy zastosować dokładnie taki typ, jaki podaje usługa.
- Brak kropki na końcu celu CNAME. W panelach, które tego wymagają:
dkim2.mcsv.net.z kropką. - Obcięty klucz. Przy kopiowaniu brakuje ostatniego fragmentu
p=. Należy porównać początek i koniec z oryginałem. - DKIM włączony w panelu usługi, ale rekordy nie zostały ustawione, lub odwrotnie. U większości usług trzeba najpierw ustawić rekordy, a dopiero potem włączyć DKIM w panelu zarządzania.
Sprawdzanie, czy DKIM działa
Proszę wysłać wiadomość na adres u dużego dostawcy (na przykład Gmail) i obejrzeć oryginał wiadomości (Pokaż oryginał lub Pokaż źródło). Proszę wyszukać dkim=pass i sprawdzić, jaka domena jest przy tym podana. Można też wysłać wiadomość do usługi testowej, takiej jak mail-tester.com. Rekord można też samodzielnie sprawdzić za pomocą narzędzia DNS: proszę pobrać rekord TXT dla <selector>._domainkey.<domein>.
W praktyce: tak wygląda to w panelu
W tym przykładzie korzystamy z DirectAdmin. W Administracja DNS znajduje się rekord TXT o nazwie x._domainkey; wartość zaczyna się od v=DKIM1; k=rsa; p=. W Zarządzanie pocztą E-mail, Konta E-mail znajduje się przycisk do włączania lub wyłączania DKIM. Rekord CNAME od usługi tworzy się przez Dodaj rekord, typ CNAME, nazwa k2._domainkey, wartość z kropką na końcu.
W innych panelach DKIM znajduje się czasem pod nazwą "Uwierzytelnianie e-mail" lub "Bezpieczeństwo e-mail", ale rekord w DNS jest wszędzie taki sam.
Podsumowanie
- DKIM umieszcza podpis cyfrowy na każdej wiadomości; klucz publiczny znajduje się w DNS.
- Klucz znajduje się pod adresem
<selector>._domainkey.<domein>. Selektor jest podany w podpisie (s=), podobnie jak domena (d=). - Każda usługa ma własny selektor; rekordy różnych usług współistnieją ze sobą bez konfliktu.
- Usługi często korzystają z rekordów CNAME i wielu selektorów. Należy ustawić je wszystkie, z dokładnie podanym typem.
- Jeśli DNS Państwa domeny znajduje się u innego dostawcy, trzeba tam samodzielnie umieścić klucz DKIM własnego serwera pocztowego.
Quiz
Zadanie
Zadanie Z4.4: Wyszukiwanie DKIM. Proszę otworzyć wiadomość otrzymaną od firmy lub organizacji i obejrzeć oryginał. W nagłówku DKIM-Signature proszę znaleźć domenę (d=) i selektor (s=). Proszę wpisać oba elementy. Weryfikacja wyszuka odpowiedni klucz.
Zadanie O4.4: Samodzielne ustawienie w strefie ćwiczeniowej. W strefie ćwiczeniowej korzystają Państwo z fikcyjnej usługi; przy prawdziwej domenie przejmują Państwo rzeczywisty klucz lub CNAME od swojego serwera pocztowego lub usługi. Przy zadaniu otrzymują Państwo klucz ćwiczeniowy (wartość po p=). Ten klucz jest długi: proszę wkleić go w całości, niczego nie pomijając. Proszę utworzyć w swojej strefie ćwiczeniowej :<code>.dnspractice.eu
- rekord TXT w
cursus._domainkeyz wartościąv=DKIM1; k=rsa; p=<oefensleutel>; - rekord CNAME w
k2._domainkeywskazujący nadkim.newsletter-demo.dnspractice.eu.(z kropką na końcu, jeśli wymaga tego Państwa panel).
Zadanie O4.4
To zadanie wykonują Państwo we własnej strefie ćwiczeniowej: prawdziwej strefie DNS na serwerach nazw WebOké, przeznaczonej tylko dla Państwa. Proszę zalogować się za pomocą adresu e-mail. Otrzymają Państwo link logujący e-mailem i wrócą następnie do tej lekcji. Adres e-mail wykorzystujemy wyłącznie na potrzeby kursu.
Dalsza lektura
Kroki opisane w tych artykułach dotyczą paneli WebOké; w innych panelach działanie jest podobne.
- Instrukcja DirectAdmin 5.8: DKIM włączanie i sprawdzanie
- Konfiguracja DKIM, gdy DNS działa na zewnętrznym serwerze
- Instrukcja DirectAdmin 5.4: Rekordy CNAME i kropka na końcu
- Podręcznik WebOké 6.7: Karta Konfiguracja poczty e-mail (MX, SPF, DKIM, DMARC)
- RFC 6376 (DKIM), RFC 8301 (długość klucza), RFC 8463 (Ed25519)
