Implementacja DKIM (DomainKeys Identified Mail) w Postfix: Kompletny przewodnik
DKIM (DomainKeys Identified Mail) to mechanizm uwierzytelniania wiadomości e-mail, który pozwala odbiorcom zweryfikować, czy wiadomość została wysłana przez autoryzowany serwer i czy nie została zmodyfikowana w trakcie przesyłania. W tym artykule omówimy konfigurację DKIM w Postfix, publikację rekordów DKIM w DNS oraz weryfikację podpisów DKIM przez serwery odbierające.
1. Co to jest DKIM i dlaczego jest ważny?
DKIM to technologia umożliwiająca podpisywanie wiadomości e-mail cyfrowym podpisem kryptograficznym, który odbiorcy mogą zweryfikować za pomocą publicznego klucza DKIM w DNS.
✅ Korzyści DKIM:
✔ Chroni przed fałszowaniem nadawcy i spoofingiem.
✔ Zapobiega modyfikacji treści wiadomości w trakcie przesyłania.
✔ Pomaga poprawić dostarczalność e-maili i zmniejszyć prawdopodobieństwo trafienia do spamu.
🚨 Ograniczenia DKIM:
- DKIM nie chroni przed phishingiem – sprawdza tylko integralność wiadomości, ale nie nadawcę.
- DKIM działa najlepiej w połączeniu z SPF i DMARC.

2. Instalacja i konfiguracja DKIM w Postfix
W systemach Debian/Ubuntu do obsługi DKIM używamy OpenDKIM.
2.1. Instalacja OpenDKIM
sudo apt update
sudo apt install opendkim opendkim-tools
Na systemach CentOS/RHEL instalujemy:
sudo yum install opendkim opendkim-tools
3. Generowanie kluczy DKIM
Klucze DKIM składają się z dwóch części:
- Klucz prywatny – używany do podpisywania wiadomości.
- Klucz publiczny – publikowany w rekordzie DNS i używany do weryfikacji.
3.1. Tworzenie katalogów i nadanie uprawnień
sudo mkdir -p /etc/opendkim/keys/example.com
sudo chown -R opendkim:opendkim /etc/opendkim
sudo chmod -R 700 /etc/opendkim
3.2. Generowanie kluczy
cd /etc/opendkim/keys/example.com
sudo opendkim-genkey -b 2048 -d example.com -s dkim2025
Co oznaczają parametry?
-b 2048
– generuje klucz 2048-bitowy (zalecany dla bezpieczeństwa).-d example.com
– domena, dla której generujemy klucz.-s dkim2025
– selektor DKIM (można ustawić dowolną unikalną nazwę).
W katalogu /etc/opendkim/keys/example.com/
pojawią się dwa pliki:
dkim2025.private
– klucz prywatny do podpisywania wiadomości.dkim2025.txt
– rekord DNS zawierający klucz publiczny.
Zmieniamy uprawnienia do klucza prywatnego:
sudo chown opendkim:opendkim dkim2025.private
sudo chmod 600 dkim2025.private
4. Konfiguracja OpenDKIM
Edytujemy plik konfiguracyjny /etc/opendkim.conf:
sudo nano /etc/opendkim.conf
Dodajemy lub modyfikujemy następujące linie:
AutoRestart Yes
AutoRestartRate 10/1h
Mode sv
Syslog yes
LogWhy yes
Canonicalization relaxed/simple
KeyTable /etc/opendkim/keytable
SigningTable /etc/opendkim/signingtable
InternalHosts /etc/opendkim/trustedhosts
Socket inet:8891@localhost
5. Konfiguracja tabel DKIM
5.1. KeyTable – lista kluczy DKIM
Edytujemy plik /etc/opendkim/keytable
:
sudo nano /etc/opendkim/keytable
Dodajemy linię:
dkim2025._domainkey.example.com example.com:dkim2025:/etc/opendkim/keys/example.com/dkim2025.private
5.2. SigningTable – przypisanie podpisu DKIM do domeny
Edytujemy plik /etc/opendkim/signingtable
:
sudo nano /etc/opendkim/signingtable
Dodajemy:
*@example.com dkim2025._domainkey.example.com
5.3. TrustedHosts – lista zaufanych hostów
sudo nano /etc/opendkim/trustedhosts
Dodajemy:
127.0.0.1
localhost
*.example.com
Restartujemy OpenDKIM:
sudo systemctl restart opendkim
sudo systemctl enable opendkim
6. Integracja OpenDKIM z Postfix
Edytujemy plik /etc/postfix/main.cf:
sudo nano /etc/postfix/main.cf
Dodajemy:
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
Restartujemy Postfix:
sudo systemctl restart postfix
7. Publikacja klucza publicznego DKIM w DNS
Otwieramy plik dkim2025.txt
i kopiujemy jego zawartość. Przykładowy rekord TXT:
dkim2025._domainkey TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSI..."
Dodajemy rekord TXT w konfiguracji DNS domeny. Po zapisaniu czekamy na propagację DNS (może to potrwać kilka godzin).
8. Testowanie DKIM
8.1. Sprawdzenie rekordu DKIM w DNS
nslookup -type=TXT dkim2025._domainkey.example.com
Powinniśmy zobaczyć wpis zawierający klucz publiczny.
8.2. Wysłanie testowej wiadomości
Wysyłamy e-mail do Gmaila i sprawdzamy nagłówki wiadomości w sekcji „Oryginalna wiadomość”. Powinniśmy zobaczyć:
Authentication-Results: spf=pass; dkim=pass; dmarc=pass
8.3. Użycie narzędzi do weryfikacji DKIM
- https://www.mail-tester.com
- https://dmarcian.com/dkim-inspector/
Podsumowanie
Konfiguracja DKIM w Postfix pozwala zwiększyć bezpieczeństwo wiadomości e-mail i zapobiegać podszywaniu się pod nadawcę. W artykule omówiliśmy:
✅ Instalację OpenDKIM.
✅ Generowanie i konfigurację kluczy DKIM.
✅ Publikację klucza DKIM w DNS.
✅ Weryfikację działania DKIM.
Dzięki tej konfiguracji Twoje e-maile będą bezpieczniejsze i rzadziej oznaczane jako spam.