Czym Jest Rekord DKIM?
DKIM (DomainKeys Identified Mail, RFC 6376) dodaje podpis cyfrowy do każdej wiadomości wysyłanej przez Twój serwer. Podpis powstaje przy użyciu klucza prywatnego, który pozostaje na serwerze. Pasujący klucz publiczny jest publikowany w DNS jako rekord TXT pod adresem selector._domainkey.yourdomain.com, a odbiorcy pobierają go, aby sprawdzić, czy wiadomość naprawdę pochodzi z Twojej domeny i nie została zmieniona po drodze.
Selektor to po prostu wybrana przez Ciebie etykieta, np. default lub s1. Pozwala jednej domenie publikować kilka kluczy jednocześnie, po jednym na usługę lub generację klucza. Prawidłowy podpis DKIM z Twojej własnej domeny pozwala też poczcie przejść DMARC, gdy SPF nie może zostać wyrównany, na przykład po przekazaniu wiadomości dalej.

Czy Musisz Generować Własny Klucz DKIM?
Często nie. Google Workspace tworzy klucz za Ciebie (konsola administracyjna, Aplikacje, Google Workspace, Gmail, Uwierzytelnianie e-maili), a Microsoft 365 używa dwóch rekordów CNAME, selector1._domainkey i selector2._domainkey, które wskazują na klucze zarządzane przez Microsoft. Większość usług newsletterowych i transakcyjnych również podaje własne rekordy.
Własnej pary kluczy potrzebujesz, gdy prowadzisz własny serwer pocztowy, np. Postfix z OpenDKIM lub rspamd albo Exim, lub gdy aplikacja albo przekaźnik (relay) prosi o przesłanie klucza prywatnego. Do tego właśnie służy ten generator.
Advertisement
Jak Wygenerować Klucze DKIM i Opublikować Rekord
Selektor może składać się z dowolnych liter, cyfr i łączników. Selektor oparty na dacie, np. s2026, ułatwia śledzenie rotacji kluczy.
RSA 2048 bitów to właściwy wybór niemal dla każdego. Para kluczy powstaje w Twojej przeglądarce zaraz po załadowaniu strony i ponownie po zmianie typu.
Pobierz go i zainstaluj na serwerze pocztowym. Nie jest nigdzie przechowywany, więc jeśli go zgubisz, potrzebna będzie nowa para.
Dodaj rekord TXT z hostem selector._domainkey i wygenerowaną wartością, wyślij do siebie wiadomość i sprawdź ją narzędziem Sprawdzanie DKIM.
Składnia Rekordu DKIM
Rekord klucza DKIM to lista par tag=wartość oddzielonych średnikami. Wymagany jest tylko p=, ale publikuj też v i k.
Oznacza rekord jako klucz DKIM. Jeśli występuje, musi być pierwszy.
Algorytm klucza. Jeśli tagu brak, domyślny jest rsa.
Klucz publiczny w base64. Puste p= oznacza, że klucz został unieważniony, a podpisy złożone nim nie przechodzą weryfikacji.
Prosi odbiorców, by traktowali domenę jako testującą DKIM. Usuń go, gdy podpisy zaczną przechodzić weryfikację.
Tryb ścisły: tożsamość i= w podpisie musi używać dokładnie domeny d=, a nie jej subdomeny.
Ograniczają algorytmy skrótu (h=sha256) lub usługę, do której przeznaczony jest klucz (s=email). Większość rekordów je pomija.
Advertisement
RSA 2048 vs 1024 vs 4096 vs Ed25519
RSA 2048 bitów: zalecany rozmiar. RFC 8301 mówi, że podpisujący powinni używać co najmniej 2048 bitów. Wartość TXT ma około 410 znaków.
RSA 1024 bity: nadal weryfikowany i będący minimum akceptowanym przez odbiorców, ale słaby według dzisiejszych standardów. Podpisy z krótszych kluczy nie są uznawane za ważne. Używaj go tylko wtedy, gdy Twój dostawca DNS nie może przechować dłuższej wartości.
RSA 4096 bitów: odbiorcy muszą weryfikować klucze do 4096 bitów, ale wartość ma około 750 znaków, a niektóre panele DNS i starsze systemy źle sobie z nią radzą. Daje niewiele więcej niż 2048.
Ed25519: nowoczesny, znacznie krótszy klucz (cały rekord ma około 66 znaków, RFC 8463). Nie każdy odbiorca go jeszcze weryfikuje, więc podpisuj także kluczem RSA, pod drugim selektorem.
Dlaczego Mój Rekord DKIM Jest Podzielony na Kilka Ciągów?
Pojedynczy ciąg TXT może zawierać najwyżej 255 znaków, a wartość DKIM 2048 bitów jest dłuższa. DNS rozwiązuje to, zapisując wartość jako kilka ciągów w cudzysłowach, które odbiorcy z powrotem łączą.
Większość paneli DNS przyjmuje długą wartość w całości i dzieli ją za Ciebie. Amazon Route 53 i pliki strefy BIND wymagają samodzielnego wpisania podzielonej formy i to właśnie daje przycisk pliku strefy (w Route 53 wklej tylko ciągi w cudzysłowach, w jednej linii). Nie dodawaj spacji ani podziałów linii wewnątrz klucza i nie umieszczaj każdej połowy w osobnym rekordzie.
Advertisement
Skonfiguruj Klucz na Serwerze Pocztowym
Zapisz klucz prywatny jako default.private (z nazwą swojego selektora), nadaj mu prawo odczytu tylko dla usługi podpisującej i wskaż go w jej konfiguracji. Przykład dla OpenDKIM, domeny example.com i selektora default:
sudo mkdir -p /etc/opendkim/keys/example.com
sudo mv default.private /etc/opendkim/keys/example.com/
sudo chown opendkim:opendkim /etc/opendkim/keys/example.com/default.private
sudo chmod 600 /etc/opendkim/keys/example.com/default.privatedefault._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private*@example.com default._domainkey.example.comopenssl genrsa -out default.private 2048
openssl rsa -in default.private -pubout -out default.publicopendkim-genkey -b 2048 -d example.com -s defaultJak Rotować Klucze DKIM
Wygeneruj nową parę kluczy pod nowym selektorem, np. s2027.
Opublikuj nowy rekord TXT i poczekaj, aż będzie wszędzie widoczny.
Przełącz serwer pocztowy na podpisywanie nowym selektorem.
Zachowaj stary rekord przez mniej więcej tydzień, aż poczta nim podpisana zostanie dostarczona i sprawdzona.
Następnie usuń stary rekord lub opublikuj go z pustym
p=, aby go unieważnić.
Advertisement
Więcej Narzędzi do Uwierzytelniania E-maili
DKIM to jeden z trzech rekordów sprawdzanych przez odbiorców. Uzupełnij zestaw:
Wyszukaj opublikowany klucz po selektorze i sprawdź jego składnię i rozmiar.
Zbuduj rekord SPF dla swoich dostawców z bieżącym licznikiem zapytań.
Utwórz politykę DMARC, która korzysta z wyników SPF i DKIM.
Sprawdź, czy prawdziwa wiadomość przeszła DKIM, SPF i DMARC.