Przejdź do treści

DKIM – jak działa podpis, selektory i rotacja kluczy

Ostatnia aktualizacja: 25:10:2026

English version

Co potwierdza DKIM

DKIM (DomainKeys Identified Mail, RFC 6376) pozwala domenie wziąć odpowiedzialność za wiadomość. Serwer nadawcy podpisuje kluczem prywatnym wybrane nagłówki i treść, a wynik dodaje jako nagłówek DKIM-Signature. Serwer odbiorcy pobiera z DNS odpowiadający mu klucz publiczny i sprawdza podpis. Jeśli weryfikacja się powiedzie, odbiorca wie dwie rzeczy: wiadomość naprawdę podpisała domena wskazana w znaczniku d=, a podpisane części nie zostały po drodze zmienione.

W przeciwieństwie do SPF DKIM nie interesuje się tym, który serwer dostarczył wiadomość, więc podpis zwykle przetrwa przekierowanie. Może go jednak zepsuć wszystko, co po drodze modyfikuje wiadomość – na przykład lista dyskusyjna dopisująca stopkę albo tag w temacie. Sam DKIM nie mówi też, co zrobić z pocztą bez podpisu – to zadanie DMARC.

Budowa podpisu DKIM

Skrócony nagłówek z podpisem wygląda tak:

Nagłówek DKIM-Signature (skrócony)

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=firma.pl;
  s=mail2026; h=from:to:subject:date:message-id;
  bh=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=;
  b=Kx9f...podpis w base64...
ZnacznikZnaczenie
d=domena podpisująca – bierze odpowiedzialność za wiadomość; to ją DMARC porównuje z adresem From:
s=selektor – wskazuje, który z kluczy domeny pobrać z DNS
h=lista podpisanych nagłówków; From: jest na niej zawsze
bh= / b=skrót treści i sam podpis
d=
Znaczenie: domena podpisująca – bierze odpowiedzialność za wiadomość; to ją DMARC porównuje z adresem From:
s=
Znaczenie: selektor – wskazuje, który z kluczy domeny pobrać z DNS
h=
Znaczenie: lista podpisanych nagłówków; From: jest na niej zawsze
bh= / b=
Znaczenie: skrót treści i sam podpis

Selektory, czyli kilka kluczy w jednej domenie

Selektor to dowolna wybrana nazwa, która określa, gdzie leży klucz publiczny: selektor mail2026 w domenie firma.pl oznacza, że klucz jest opublikowany pod nazwą mail2026._domainkey.firma.pl. Każdy selektor to osobna nazwa w DNS, więc domena może mieć jednocześnie wiele kluczy – po jednym dla każdej usługi wysyłającej pocztę (skrzynki, newsletter, system helpdesk), a w trakcie wymiany klucza także stary i nowy klucz obok siebie. Klucze różnych usług nigdy sobie nie przeszkadzają, inaczej niż w SPF, gdzie wszystko musi zmieścić się w jednym rekordzie.

Rekord TXT z kluczem DKIM

Klucz publiczny publikuje się jako rekord TXT pod nazwą selektora:

Rekord z kluczem publicznym DKIM

mail2026._domainkey.firma.pl.  3600  IN  TXT  "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."
  • v=DKIM1 to wersja, k=rsa – typ klucza, a p= – klucz publiczny zakodowany w base64. Puste p= oznacza, że klucz został unieważniony.
  • W panelu DNS jako nazwę hosta zwykle wpisujesz samo mail2026._domainkey – panel sam dopisze domenę. Wpisanie pełnej nazwy często kończy się rekordem mail2026._domainkey.firma.pl.firma.pl.
  • Skopiuj wartość co do znaku. Brakujący znak, przypadkowa spacja albo złamanie wiersza w środku klucza sprawią, że żaden podpis nie przejdzie weryfikacji.
  • Niektórzy dostawcy zamiast rekordu TXT proszą o rekord CNAME wskazujący klucz, który sami utrzymują. To również działa – użyj po prostu tego typu rekordu, który podaje dostawca.

Długość klucza: dlaczego 2048 bitów

Kluczy RSA krótszych niż 1024 bity nie wolno używać w DKIM (RFC 8301), a klucze 1024-bitowe uchodzą dziś za słabe. Używaj kluczy 2048-bitowych: to długość zalecana przez dużych operatorów poczty i obsługiwana praktycznie przez każdy serwer odbiorcy. Jedynym kosztem jest rozmiar – 2048-bitowy klucz publiczny to około 400 znaków base64, więcej niż limit 255 znaków pojedynczego ciągu w rekordzie TXT. Rekord trzeba wtedy podzielić na kilka ciągów w ramach jednego rekordu (większość paneli robi to sama, zob. jak dodać rekordy DNS). Istnieją też klucze Ed25519 (RFC 8463), ale nie wszystkie serwery odbiorców je obsługują, dlatego stosuje się je obok RSA, a nie zamiast.

AnyMail generuje osobny 2048-bitowy klucz RSA dla każdego serwera pocztowego, a jego część prywatną przechowuje w postaci zaszyfrowanej.

Bezpieczna wymiana (rotacja) klucza DKIM

Regularna wymiana kluczy ogranicza szkody na wypadek wycieku klucza prywatnego i jest dobrą praktyką w domenach używanych przez lata – często robi się to raz w roku. Najważniejsza jest kolejność: serwer odbiorcy musi móc znaleźć nowy klucz publiczny, zanim zobaczy pierwszą podpisaną nim wiadomość, a stary klucz musi pozostać dostępny, dopóki podpisana nim poczta może być jeszcze sprawdzana.

Rotacja w dwóch fazach

  1. Przygotowanie. Wygeneruj nową parę kluczy pod nowym selektorem i opublikuj klucz publiczny obok obecnego. Podpisuj dalej starym kluczem.
  2. Weryfikacja. Poczekaj, aż nowy rekord będzie publicznie widoczny – co najmniej tyle, ile wynosi TTL rekordu.
  3. Przełączenie. Zacznij podpisywać nowym kluczem.
  4. Wycofanie. Zostaw stary rekord jeszcze przez kilka dni, żeby wiadomości czekające w kolejkach lub sprawdzane ponownie nadal przechodziły weryfikację – i dopiero wtedy go usuń.

AnyMail działa dokładnie według tego schematu. Rozpoczęcie rotacji tworzy nowy klucz pod świeżym selektorem, a dotychczasowy klucz dalej podpisuje pocztę. AnyMail sam sprawdza nowy rekord w DNS i pozwala aktywować klucz dopiero wtedy, gdy DNS rzeczywiście serwuje właściwą wartość. Po aktywacji stary klucz pozostaje przez siedem dni oznaczony jako wycofany, z informacją, od kiedy można usunąć jego rekord. Nic nie dzieje się automatycznie – to Ty decydujesz o przełączeniu, a panel podpowiada rotację, gdy klucz ma ponad rok.

Jak sprawdzić DKIM

Sprawdź klucz poleceniem dig TXT mail2026._domainkey.firma.pl +short albo za pomocą narzędzia do sprawdzania domeny. Potem wyślij wiadomość na zewnętrzną skrzynkę i zajrzyj do nagłówka Authentication-Results: dkim=pass header.d=firma.pl oznacza, że podpis został zweryfikowany dla Twojej domeny. Przy dkim=fail najczęstsze przyczyny to ucięty klucz, niezgodny selektor albo system, który modyfikuje wiadomości już po ich podpisaniu.

Niech AnyMail zajmie się tymi rekordami za Ciebie

AnyMail generuje rekordy MX, SPF, DKIM i DMARC dla Twojej domeny, automatycznie sprawdza każdy z nich i wskazuje, który trzeba poprawić – a potem utrzymuje Twoje skrzynki. Usługa działa z Polski, dane przechowujemy w UE.