Kluczowe wnioski
- Postfix nie posiada wbudowanego modułu podpisującego DKIM, dlatego należy podłączyć moduł typu milter (OpenDKIM lub Rspamd), który podpisuje każdą wychodzącą wiadomość przed jej opuszczeniem serwera.
- OpenDKIM nadal działa w zakresie podpisywania, ale w ostatnich latach aktywność w projekcie głównej gałęzi była niewielka. Wybierz to rozwiązanie w przypadku prostych konfiguracji obejmujących jedną domenę, gdzie możesz sprawdzić aktualną obsługę przez dystrybucję, a w przypadku poczty obejmującej wiele domen lub poczty produkcyjnej lepiej wybierz Rspamd.
- Należy stosować klucze RSA o długości co najmniej 2048 bitów; klucze 1024-bitowe zostały wycofane zgodnie z RFC 8301. Jeśli zarówno serwer MTA/milter, jak i dostawca usług DNS obsługują algorytm Ed25519, należy preferować ten algorytm.
- Większość błędów związanych z brakiem podpisu wynika z niezgodności gniazda lub uprawnień. Jeśli program Postfix uruchamia smtpd w środowisku chroot (co jest powszechne w niektórych pakietach Debiana/Ubuntu), umieść gniazdo OpenDKIM w katalogu spool programu Postfix i upewnij się, że użytkownik postfix ma do niego dostęp (np. poprzez dodanie użytkownika postfix do grupy opendkim).
- Sam pozytywny wynik weryfikacji DKIM to za mało. Aby DMARC działał prawidłowo, konieczne jest zapewnienie zgodności – domena podpisująca musi być zgodna z nagłówkiem „From:”, a klucze powinny być odnawiane co najmniej raz w roku.
DKIM w Postfixie to podpis kryptograficzny, który dołącza się do wysyłanej poczty, aby serwery odbiorcze mogły potwierdzić, że wiadomość rzeczywiście pochodzi z Twojej domeny i nie została zmieniona podczas przesyłania.
Postfix sam z siebie tego nie robi. Należy podłączyć „milter” (filtr poczty), który podpisuje każdą wiadomość opuszczającą serwer.
W niniejszym przewodniku omówiono krok po kroku proces konfiguracji DKIM w Postfixie w 2026 roku: od wyboru modułu milter i wygenerowania nowoczesnych kluczy, po zintegrowanie go z Postfixem oraz rotację kluczy, zanim staną się one zagrożeniem.
OpenDKIM a Rspamd: Które rozwiązanie wybrać w 2026 roku?
Zanim będzie można podpisać jakąkolwiek wiadomość, należy wybrać moduł milter odpowiedzialny za podpisywanie. OpenDKIM i Rspamd to dwa najpopularniejsze rozwiązania do obsługi DKIM w połączeniu z Postfixem w 2026 roku.
Oba rozwiązania zapewnią prawidłowe uwierzytelnianie wysyłanej poczty. Różnią się one jednak pod względem wymagań dotyczących ich uruchomienia oraz tego, na ile można na nich polegać w przyszłości.
| Kryteria | OpenDKIM | Rspamd |
|---|---|---|
| Stan konserwacji | Niewielka aktywność w projekcie; ostatnia stabilna wersja to 2.10.3 (maj 2015 r.); gałąź 2.11.0 jest w fazie beta. Repozytorium Debian testing oznaczyło ten pakiet do automatycznego usunięcia (czerwiec 2026 r.) z powodu błędu związanego z zależnością od biblioteki libmemcached. | Aktywny rozwój, częste aktualizacje |
| Co robi | Wyłącznie podpisywanie/weryfikacja DKIM | Podpis DKIM oraz kompleksowe filtrowanie spamu |
| Złożoność konfiguracji | Proste, jednofunkcyjne | Więcej ruchomych elementów z przodu |
| Integracja z Postfixem | Milter (gniazdo) | Milter (gniazdo proxy) |
| Interfejs użytkownika w sieci WWW | Brak | Wbudowany pulpit nawigacyjny |
OpenDKIM poprawnie podpisuje wiadomości e-mail, a obecnie miliony serwerów polegają na tym rozwiązaniu. Należy jednak wziąć pod uwagę ryzyko związane z jego utrzymaniem, zanim zdecydujesz się na jego wdrożenie.
Ostatnią stabilną wersją z głównego gałęzi była wersja 2.10.3 z 12 maja 2015 r. Gałąź 2.11.0, w której dodano obsługę algorytmu Ed25519, nigdy nie wyszła z fazy beta. OpenDKIM nadal niezawodnie podpisuje wiadomości e-mail i pozostaje w pakietach głównych dystrybucji, ale w gałęzi testowej Debiana wersja 2.11.0~beta2 została oznaczona do automatycznego usunięcia (obecnie zaplanowanego na czerwiec 2026 r.) z powodu problemu z zależnością przechodnią od biblioteki libmemcached, a nie z powodu zaprzestania wsparcia przez autora. Przed podjęciem decyzji o długoterminowym wykorzystaniu OpenDKIM w środowisku produkcyjnym należy sprawdzić aktualny status pakietu w swojej dystrybucji.
Możesz z tego korzystać już dziś, ale opierasz się na oprogramowaniu, którego twórcy od dziesięciu lat nie wydali stabilnej wersji, i to właśnie jest ryzyko długoterminowe, które należy wziąć pod uwagę.
Rspamd to aktywnie rozwijana alternatywa. Obsługuje podpisywanie DKIM i filtruje spam z jednego modulu filtrującego (milter), dzięki czemu wystarczy uruchomić jedną usługę zamiast dwóch, jeśli potrzebna jest również ochrona poczty przychodzącej. Postfix jest najczęściej stosowanym serwerem MTA w połączeniu z Rspamd, a stosy takie jak Mailcow polegają na nim w zakresie podpisywania DKIM zamiast na OpenDKIM.
Oto jak dokonać wyboru:
- Wybierz OpenDKIM jeśli zarządzasz jedną domeną i chcesz jak najprostszą konfigurację z podpisywaniem DKIM i niczym więcej.
- Wybierz Rspamd , jeśli zarządzasz wieloma domenami, wysyłasz wiadomości produkcyjne lub korzystasz z rozwiązań takich jak Mailcow lub iRedMail.
Tak czy inaczej, poniżej omówiono obie opcje. Przejdź bezpośrednio do tej, którą wybrałeś.
Warto przeczytać: Czym jest DKIM?
Wymagania wstępne przed rozpoczęciem pracy
Zanim wygenerujesz klucz lub edytujesz plik konfiguracyjny, upewnij się, że te cztery elementy są już gotowe
- Działająca instalacja Postfixa, która już wysyła wiadomości e-mail: DKIM podpisuje wiadomości wysyłane przez serwer, więc serwer musi najpierw wysyłać je bezbłędnie. Jeśli Postfix nie został jeszcze skonfigurowany, należy to zrobić przed kontynuowaniem.
- Dostęp do DNS dla Twojej domeny: Twoje rekordy A i MX powinny być już opublikowane, a ponadto musisz mieć możliwość dodania rekordu TXT, ponieważ to właśnie tam będzie przechowywany Twój klucz publiczny.
- Uprawnienia administratora lub dostęp za pomocą sudo na serwerze pocztowym: Będziesz edytować pliki konfiguracyjne systemu i restartować usługi.
- Dostawca usług DNS, który obsługuje długie rekordy TXT: Klucz o długości 2048 bitów przekracza limit 255 znaków dla pojedynczego ciągu TXT, dlatego niektórzy dostawcy wymagają podzielenia go na dwa ciągi ujęte w cudzysłowy. Przed wygenerowaniem klucza upewnij się, że Twój dostawca obsługuje tę funkcję.
Najpierw wybierz rozmiar klucza: RSA 2048-bitowy lub Ed25519, jeśli zarówno Twój serwer MTA/milter, jak i dostawca usług DNS obsługują ten algorytm, ale nigdy nie wybieraj klucza 1024-bitowego. RFC 8301 zabrania stosowania algorytmu SHA-1 (NIE WOLNO używać rsa-sha1) i zaleca 2048-bitowy RSA jako minimum na poziomie „POWINIEN”, podczas gdy 1024-bitowy pozostaje minimalnym wymogiem protokołu (NALEŻY używać co najmniej 1024 bitów). Słabe klucze dają odbiorcom powód, by nie ufać Twojej poczcie.
Jak skonfigurować DKIM w Postfixie przy użyciu OpenDKIM
OpenDKIM to najprostszy sposób na dodanie podpisu DKIM do serwera Postfix obsługującego jedną domenę — wystarczy jeden demon, jeden klucz i żadnych dodatkowych elementów. Poniższe pięć kroków pozwoli Ci przekształcić serwer wysyłający niepodpisane wiadomości w serwer podpisujący każdą wychodzącą wiadomość kluczem, który odbiorcy mogą zweryfikować. Każdy krok opiera się na poprzednim, więc wykonuj je po kolei
Krok 1: Zainstaluj OpenDKIM
Zainstaluj dwa pakiety: opendkim (sam demon podpisujący) oraz opendkim-tools (narzędzia służące do generowania kluczy).
Ubuntu 24.04 / Debian 12:
bash
sudo apt update
sudo apt zainstaluj opendkim opendkim-tools
RHEL / Rocky 9 (pakiet OpenDKIM jest dostępny w repozytorium EPEL):
bash
sudo dnf zainstaluj epel-release
sudo dnf zainstaluj opendkim opendkim-tools
Włącz usługę, aby uruchamiała się podczas startu systemu:
bash
sudo systemctl włącz opendkim
Uwaga: W niektórych dystrybucjach nazwa usługi lub nazwa użytkownika/grupy może się różnić (np. opendkim vs. opendkim-daemon, opendkim:opendkim vs. opendkim:postfix). Jeśli polecenia nie są zgodne, sprawdź dokumentację pakietu lub jednostkę systemd.
Krok 2: Wygeneruj parę kluczy DKIM
Utwórz katalog, w którym będą przechowywane klucze domeny, a następnie wygeneruj parę kluczy o długości 2048 bitów:
bash
sudo mkdir -p /etc/opendkim/keys/example.com
sudo opendkim-genkey -b 2048 -d example.com -s selector2026 \
-D /etc/opendkim/keys/example.com/
Funkcje poszczególnych flag:
| Flaga | Znaczenie |
|---|---|
| -b 2048 | Długość klucza w bitach – RSA 2048-bitowy |
| -d example.com | Domena, dla której dokonujesz podpisu |
| -s selector2026 | Nazwa selektora (patrz uwaga poniżej) |
| -D /etc/opendkim/keys/example.com/ | Gdzie zapisać pliki wyjściowe |
W selektorze: na -s jest etykietą, która pojawi się w Twoim rekordzie DNS. Użyj nazwy opartej na roku, takiej jak selector2026. Teraz nic to nie kosztuje, a w przyszłym roku ułatwi rotację – wtedy wygenerujesz selector2027 , a stary wpis pozostanie aktywny podczas zmiany.
To polecenie tworzy dwa pliki:
| Plik | Czym to jest | Zasada |
|---|---|---|
| selector2026.private | Twój prywatny klucz podpisujący | Nigdy tego nie udostępniaj; zadbaj o to, by tylko OpenDKIM mógł to odczytać |
| selector2026.txt | Klucz publiczny w formacie zgodnym z DNS | Oto, co należy opublikować w kroku 5 |
Teraz ustaw uprawnienia właściciela. Nieprawidłowe uprawnienia są najczęstszą przyczyną niepowodzeń podpisywania przez OpenDKIM, więc nie pomijaj tego kroku:
bash
sudo chown -R opendkim:opendkim /etc/opendkim/keys
sudo chmod 600 /etc/opendkim/keys/example.com/selector2026.private
Zmodyfikuj nazwę użytkownika/grupy, jeśli Twoja dystrybucja używa innych nazw (np. opendkim:postfix). Aby to sprawdzić, zapoznaj się z dokumentacją pakietu lub jednostką systemd.
Krok 3: Skonfiguruj OpenDKIM
OpenDKIM odczytuje swoje główne ustawienia z pliku /etc/opendkim.conf, a następnie korzysta z trzech niewielkich plików odnośników, aby zdecydować, co podpisać i jakim kluczem. Najpierw należy ustawić podstawowe dyrektywy:
| Syslog | tak |
|---|---|
| UMask | 2 |
| Tryb | s |
| Kanonicyzacja | zrelaksowany/zrelaksowany |
| Gniazdo | local:/var/spool/postfix/opendkim/opendkim.sock |
| PidFile | /run/opendkim/opendkim.pid |
| Nadpisywanie nagłówków | Ze strony |
| Tabela kluczy | /etc/opendkim/key.table |
| Tabela podpisów | refile:/etc/opendkim/signing.table |
| Lista zewnętrznych elementów do pominięcia | /etc/opendkim/trusted.hosts |
| InternalHosts | /etc/opendkim/trusted.hosts |
Jakie są skutki tych ważnych dyrektyw:
| Dyrektywa | Co kontroluje |
|---|---|
| Tryby | Tylko podpis. Użyj opcji „sv”, jeśli chcesz, aby OpenDKIM weryfikował również pocztę przychodzącą. |
| Kanonicyzacja złagodzona/złagodzona | Akceptuje niewielkie zmiany w znakach spacji podczas przesyłania, dzięki czemu podpisy pozostają ważne. Uwaga: kanonizacja nie ma wpływu na zgodność z DMARC. Zgodność z DMARC zależy od tego, czy domena d= w podpisie DKIM pokrywa się z domeną w nagłówku „From:”, a nie od ustawienia kanonizacji. |
| Gniazdo | Miejsce, w którym OpenDKIM nasłuchuje połączeń z Postfixem. Ścieżka ta musi być zgodna z ustawieniem, które później wprowadzisz w Postfixie. |
| OversignHeaders Z | Podpisuje nagłówek „From”, dzięki czemu osoba atakująca nie może dodać drugiego nagłówka — to niewielki, ale skuteczny środek zapobiegający sfałszowaniu adresu. |
| Tabela kluczy / Tabela podpisów | Dwa pliki odnośników, które łączą domeny z selektorami i kluczami (poniżej). |
Następnie utwórz trzy pliki odnośników. Każdy z nich ma jedno zadanie:
| Plik | Praca | Przykładowy wiersz |
|---|---|---|
| tabela podpisów | Przypisuje nadawcę do selektora | *@example.com selector2026._domainkey.example.com |
| tabela kluczy | Mapuje ten selektor do jego klucza prywatnego na dysku | selector2026._domainkey.example.com example.com:selector2026:/etc/opendkim/keys/example.com/selector2026.private |
| trusted.hosts | Wyświetla listę hostów, których wiadomości wychodzące powinny być podpisane | 127.0.0.1 / localhost / ::1 / example.com |
Krok 4: Podłącz OpenDKIM do Postfixa
To właśnie w tym miejscu większość konfiguracji zawodzi, a przyczyną jest prawie zawsze gniazdo. OpenDKIM tworzy plik gniazda w celu komunikacji z Postfixem. Jeśli twój Postfix uruchamia smtpd w środowisku chroot — co jest ustawieniem domyślnym w pakietach Debiana/Ubuntu, ale nie w oryginalnej wersji Postfixa ani w systemach RHEL/Rocky — proces ten jest zablokowany w katalogu /var/spool/postfix i nie ma dostępu do gniazda znajdującego się poza tym katalogiem. Oba procesy nigdy się nie łączą, a Twoja poczta jest wysyłana bez podpisu.
Rozwiązaniem jest umieszczenie gniazda wewnątrz katalogu buforowego Postfixa oraz nadanie plikowi użytkownikowi dostęp do niego. Wykonaj następujące czynności w podanej kolejności:
1. Utwórz katalog „socket” w spoolu programu Postfix:
bash
sudo mkdir -p /var/spool/postfix/opendkim
sudo chown opendkim:postfix /var/spool/postfix/opendkim
Zmodyfikuj tę grupę, jeśli Twoja dystrybucja używa zamiast tego opendkim:opendkim.
2. Dodaj użytkownika do opendkim grupy , aby mógł odczytywać gniazdo:
bash
sudo gpasswd -a postfix opendkim
3. Sprawdź, czy ścieżka do gniazda środowiska uruchomieniowego z opendkim.conf. W systemach Ubuntu/Debian należy ustawić ją w pliku /etc/default/opendkim (lub w pliku nadpisującym systemd):
SOCKET=”local:/var/spool/postfix/opendkim/opendkim.sock”
4. Skieruj Postfix na moduł filtrujący w pliku pliku /etc/postfix/main.cf:
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
Co oznaczają te cztery dyrektywy Postfixa:
| Dyrektywa | Cel |
|---|---|
| milter_default_action = accept | Jeśli serwer milter nie działa, poczta nadal przepływa, a nieaktywny podpisujący nigdy nie powoduje cichego zablokowania kolejki. |
| milter_protocol = 6 | Wersja protokołu milter, z której obecnie korzysta OpenDKIM. |
| smtpd_milters | Stosuje moduł filtrujący do wiadomości e-mail otrzymanych przez protokół SMTP (Twoje wiadomości wychodzące). |
| non_smtpd_milters | Dotyczy to wiadomości e-mail, które nie zostały odebrane za pośrednictwem protokołu SMTP, np. wygenerowanych lokalnie. |
Ścieżka do gniazda w pliku pliku main.cf jest względna, local:opendkim/opendkim.sock, a nie pełna ścieżka w systemie plików, ponieważ Postfix odczytuje ją z poziomu swojego środowiska chroot.
Aby zastosować wszystkie zmiany, uruchom ponownie obie usługi:
bash
sudo systemctl restart opendkim
sudo systemctl restart postfix
Krok 5: Opublikuj rekord TXT DKIM w systemie DNS
Otwórz plik klucza publicznego wygenerowany w kroku 2:
bash
sudo cat /etc/opendkim/keys/example.com/selector2026.txt
Opublikuj tę treść u swojego dostawcy usług DNS jako nowy wpis:
| Pole | Wartość |
|---|---|
| Nazwa rekordu | selector2026._domainkey.example.com |
| Typ | TXT |
| Wartość | Wszystko, co znajduje się w nawiasach (ciąg znaków v=DKIM1; k=rsa; p=...) |
Ponieważ jest to klucz 2048-bitowy, jego wartość przekracza limit 255 znaków dla pojedynczego ciągu znaków w pliku TXT. Większość dostawców usług DNS dzieli go automatycznie. Jeśli Twój dostawca odrzuca taki wpis, podziel klucz publiczny na dwa ciągi znaków ujęte w cudzysłowy w ramach tego samego rekordu, co plik plik .txt już pokazuje, gdzie znajduje się miejsce podziału.
Podczas konfiguracji ustaw wartość TTL na 300 sekund, aby ewentualne błędy można było łatwo naprawić. Gdy upewnisz się, że podpisywanie działa poprawnie, zwiększ tę wartość do 3600.
Krok 6: Sprawdź przed wysłaniem
Propagacja zmian w systemie DNS wymaga czasu, a nieprawidłowo podzielony klucz 2048-bitowy będzie wyglądał poprawnie w edytorze strefy, ale spowoduje błąd w momencie, gdy odbiorca go odczyta.
Jak skonfigurować DKIM w Postfixie z wykorzystaniem Rspamd (wersja 2026 zalecana w przypadku wielu domen)
Rspamd to lepszy wybór, gdy korzystasz z więcej niż jednej domeny lub obsługujesz pocztę w środowisku produkcyjnym. Podpisuje on DKIM i filtruje spam z jednego modulu filtrującego, dzięki czemu wystarczy zarządzać jedną usługą zamiast dwiema.
Ponadto, ponieważ program automatycznie wyszukuje klucze według domeny, dodanie kolejnej domeny sprowadza się do zmiany w jednym wierszu, a nie do nowej konfiguracji. Oto pełna instrukcja dla programu Postfix, podzielona na pięć kroków.
Krok 1: Zainstaluj Rspamd
Wersja dostępna w podstawowych repozytoriach Twojej dystrybucji jest zazwyczaj nieaktualna, dlatego zainstaluj program z oficjalnego stabilnego repozytorium Rspamd.
bash
sudo apt install -y lsb-release wget gpg
sudo mkdir -p /etc/apt/keyrings
wget -O- https://rspamd.com/apt-stable/gpg.key | \
gpg –dearmor | sudo tee /etc/apt/keyrings/rspamd.gpg > /dev/null
echo „deb [signed-by=/etc/apt/keyrings/rspamd.gpg] \
http://rspamd.com/apt-stable/ $(lsb_release -cs) „main” | \
sudo tee /etc/apt/sources.list.d/rspamd.list
sudo apt update && sudo apt install rspamd
Włącz uruchamianie programu przy starcie systemu:
bash
sudo systemctl włącz rspamd
Zawsze sprawdzaj stronę rspamd.com, aby uzyskać najnowsze instrukcje instalacji, ponieważ adres URL repozytorium i procedury związane z kluczem GPG ulegają od czasu do czasu zmianom.
Krok 2: Wygeneruj swój klucz DKIM
Rspamd zawiera własny generator kluczy, rspamadm dkim_keygen , który nie wymaga żadnego dodatkowego pakietu narzędzi. Zapisuje on klucz prywatny do pliku, a klucz publiczny (Twój rekord DNS) wyświetla na ekranie, skąd możesz go skopiować do pliku .pub .
bash
sudo mkdir -p /var/lib/rspamd/dkim
sudo rspamadm dkim_keygen -s selector2026 -b 2048 -d example.com \
-k /var/lib/rspamd/dkim/example.com.selector2026.key | \
sudo tee /var/lib/rspamd/dkim/example.com.selector2026.pub
sudo chown -R _rspamd:_rspamd /var/lib/rspamd/dkim
Zmień ustawienia użytkownika/grupy, jeśli Twoja dystrybucja używa rspamd:rspamd zamiast _rspamd:_rspamd. Sprawdź plik jednostki systemd swojego pakietu, aby to potwierdzić.
Opcje są takie same jak w OpenDKIM: -s selektor, -b 2048 rozmiar klucza, -d domena, -k plik wyjściowy zawierający klucz prywatny. W rezultacie otrzymujemy dwa pliki:
| Plik | Czym to jest |
|---|---|
| example.com.selector2026.key | Prywatny klucz podpisujący używany przez Rspamd. Należy zadbać o to, by jego właścicielem był użytkownik _rspamd |
| example.com.selector2026.pub | Klucz publiczny w formacie zgodnym z DNS – należy go opublikować w kroku 5 |
Krok 3: Włącz podpisywanie DKIM
Rspamd obsługuje DKIM za pośrednictwem swojego modułu moduł dkim_signing . Należy go włączyć i wskazać lokalizację kluczy w pliku /etc/rspamd/local.d/dkim_signing.conf:
selector = „selector2026”;
path = „/var/lib/rspamd/dkim/$domain.$selector.key”;
allow_username_mismatch = true;
use_domain = „header”;
Funkcja poszczególnych ustawień:
| Ustawienia | Co kontroluje |
|---|---|
| selektor | Nazwa selektora musi być zgodna z nazwą pliku klucza oraz wpisem DNS |
| ścieżka | Miejsce, w którym Rspamd odnajduje klucz prywatny; zmienne $domain i $selector są wypełniane automatycznie |
| zezwól_na_niezgodność_nazwy_użytkownika | Wysyła wiadomości nawet wtedy, gdy uwierzytelniona nazwa użytkownika nie zgadza się z domeną nadawcy |
| use_domain = "header" | Wybiera domenę nadawcy na podstawie nagłówka „From” wiadomości |
To ścieżka linii sprawia, że Rspamd świetnie sprawdza się w przypadku wielu domen. Ponieważ rozpoznaje $domain oraz $selector na podstawie nazwy pliku, dodanie kolejnej domeny oznacza po prostu umieszczenie jej klucza w tym samym folderze — bez konieczności tworzenia nowego bloku konfiguracyjnego ani uruchamiania drugiego demona.
Krok 4: Podłącz Rspamd do Postfixa
Skonfiguruj Postfix tak, aby korzystał z modułu filtrującego Rspamd w pliku /etc/postfix/main.cf. Dyrektywy są identyczne jak w konfiguracji OpenDKIM, zmienia się jedynie gniazdo:
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:11332
non_smtpd_milters = $smtpd_milters
Rspamd nasłuchuje na swoim serwerze proxy na porcie TCP 11332 . Ponieważ jest to gniazdo sieciowe, omija się problem uprawnień do gniazda w środowisku chroot, który sprawia kłopoty OpenDKIM. Jedyna różnica między tymi dwoma filtrami milter to:
| Milter | Wiersz dotyczący gniazda w pliku main.cf |
|---|---|
| OpenDKIM | smtpd_milters = local:opendkim/opendkim.sock |
| Rspamd | smtpd_milters = inet:localhost:11332 |
Krok 5: Opublikuj rekord DNS
Otwórz klucz publiczny i opublikuj go dokładnie tak, jak w kroku 5 OpenDKIM, zachowując ten sam format nazwy rekordu, TXT oraz regułą podziału na 255 znaków dla klucza 2048-bitowego:
bash
sudo cat /var/lib/rspamd/dkim/example.com.selector2026.pub
Opcjonalnie można włączyć panel internetowy, ustawiając hasło w pliku /etc/rspamd/local.d/worker-controller.inc
Zapewnia to podgląd na żywo aktywności związanej z podpisywaniem i spamem. Następnie uruchom ponownie obie usługi:
bash
sudo systemctl restart rspamd postfix
Zanim zaczniesz polegać na opublikowanym wpisie, sprawdź go za pomocą narzędzia do weryfikacji DKIM, tak samo jak po skonfigurowaniu OpenDKIM.
Rspamd zastępuje zarówno OpenDKIM, , jak i SpamAssassin. Jeśli korzystałeś z oddzielnego filtra antyspamowego, możesz go tutaj wyłączyć, dzięki czemu będziesz mieć mniej usług, mniejszą powierzchnię konfiguracyjną oraz jedno miejsce do zarządzania zarówno podpisywaniem, jak i filtrowaniem.
Konfiguracja DKIM w Postfixie dla wielu domen
Obsługa kilku domen na jednym serwerze Postfix jest czymś normalnym, ale DKIM nie idzie na skróty w tej kwestii. Każda domena, z której wysyłasz wiadomości, wymaga własnej pary kluczy i własnego rekordu DNS, ponieważ każda z nich jest uwierzytelniana niezależnie, więc nie ma wspólnego klucza, który obejmowałby je wszystkie. Sposób skalowania zależy od wybranego modułu milter.
Dzięki OpenDKIM można rozszerzyć już utworzone tabele: Wygeneruj klucz dla każdej nowej domeny, a następnie dodaj dla niej po jednym wierszu w każdym pliku odnośników.
W tabeli podpisów:
*@example.com selector2026._domainkey.example.com
*@example.net selector2026._domainkey.example.net
W tabeli key.table:
selector2026._domainkey.example.com example.com:selector2026:/etc/opendkim/keys/example.com/selector2026.private
selector2026._domainkey.example.net example.net:selector2026:/etc/opendkim/keys/example.net/selector2026.private
Każda nowa domena to jeden dodatkowy klucz i dwa dodatkowe wiersze – trzeba to zrobić ręcznie, ale proces jest przewidywalny.
Dzięki Rspamd wszystko jest już załatwione: Ponieważ ustawienie ścieżki wykorzystuje $domain , Rspamd automatycznie odnajduje klucz każdej domeny na podstawie nazwy pliku. Wpisz example.net.selector2026.key do tego samego katalogu, a domena ta również zostanie podpisana bez konieczności wprowadzania jakichkolwiek zmian w konfiguracji. Jeśli chcesz mieć większą kontrolę, nadal możesz dodać bloki dla poszczególnych domen w pliku dkim_signing.conf.
Dwa nawyki pozwalają utrzymać porządek w podpisywaniu plików w wielu domenach:
- Używaj tego samego selektora we wszystkich domenach, selektor2026 wszędzie, dzięki czemu rotacja pozostaje jednym procesem, a nie kilkoma.
- Opublikuj osobny wpis DNS dla każdej domeny: jeśli pominiesz go w przypadku jednej z nich, poczta tej domeny zostanie podpisana lokalnie, ale nie przejdzie weryfikacji u odbiorcy.
Jak przetestować i zweryfikować konfigurację DKIM w Postfixie
Podpisanie wiadomości e-mail i upewnienie się, że została podpisana prawidłowo, to dwie różne rzeczy. Z punktu widzenia nadawcy wszystko może wyglądać w porządku, podczas gdy odbiorca po cichu odrzuca twój podpis, a ty nie dowiesz się o tym, dopóki nie pojawią się problemy z dostarczeniem wiadomości.
Te pięć kroków pozwala sprawdzić, czy DKIM faktycznie działa – od własnych logów aż po rzeczywistego odbiorcę. Należy postępować zgodnie z poniższą kolejnością:
Krok 1: Najpierw sprawdź dziennik poczty
Dziennik poczty to najszybszy sposób potwierdzenia, a ponadto jest to rozwiązanie lokalne. Obserwuj dziennik, wyślij wiadomość testową i sprawdź, czy pojawi się wpis dotyczący podpisania:
bash
sudo tail -f /var/log/mail.log
W systemie RHEL/Rocky plik ten znajduje się w lokalizacji /var/log/maillog. Należy poszukać wiersza wskazującego, że wiadomość została podpisana za pomocą Twojego selektora. Jeśli taki wiersz się tam znajduje, oznacza to, że Twój moduł filtrujący działa prawidłowo.
Sprawdzenie 2: Zweryfikuj klucz w systemie DNS (OpenDKIM)
Weryfikacja potwierdza, że klucz prywatny zapisany na dysku jest zgodny z opublikowanym przez Ciebie kluczem publicznym:
bash
opendkim-testkey -d example.com -s selector2026 -vvv
klucz OK oznacza, że obie połowy pasują do siebie. Każdy inny wynik wskazuje na literówkę w nazwie DNS lub niezgodność klucza, co należy naprawić przed kontynuowaniem.
Krok 3: Wyślij prawdziwy test
To jedyne sprawdzenie, które potwierdza, że odbiorca akceptuje Twój podpis. Wyślij wiadomość e-mail na konto Gmail, otwórz ją i wybierz opcję „Pokaż oryginał”. Poszukaj DKIM: „PASS” wraz z Twoją domeną, co oznacza, że serwer odbiorczy potwierdza, iż Twój podpis został zweryfikowany.
Krok 4: Uruchom zewnętrzne narzędzia sprawdzające
Narzędzie do sprawdzania DKIM pobiera i analizuje opublikowany rekord w taki sam sposób, jak zrobiłby to serwer odbierający, potwierdzając, że klucz jest prawidłowy i kompletny
Wypróbuj bezpłatne narzędzie DKIM Checker firmy PowerDMARC, a następnie wyślij wiadomość na adres mail-tester.com, aby uzyskać bardziej kompleksową ocenę dostarczalności, która uwzględnia DKIM wraz z SPF, DMARC i sygnałami spamowymi.
Sprawdź 5: Uważaj na pułapkę typu „DKIM przechodzi, ale DMARC nie”
Twój podpis może zostać poprawnie zweryfikowany, a mimo to DMARC może zakończyć się niepowodzeniem, ponieważ DMARC wymaga zgodności: domena w Twoim DKIM d= musi odpowiadać domenie widocznej w nagłówku „From:”.
Zaloguj się jako mail.example.com podczas wysyłania z adresu example.com – w tym przypadku tryb „relaxed” pozwoli uniknąć błędu, ale tryb „strict” już nie. Jeśli DMARC zakończy się niepowodzeniem pomimo pozytywnego wyniku DKIM, sprawdź, czy tabela podpisów jest przypisana do właściwej domeny.
Krok 6: Przeprowadź audyt wszystkich trzech elementów za jednym razem
Pomyślny wynik kontroli DKIM potwierdza, że część procesu uwierzytelniania działa prawidłowo, jednak skuteczność dostarczania wiadomości oraz ochrona przed podszywaniem się zależą od współdziałania protokołów DKIM, SPF i DMARC działają wspólnie.
Bezpłatne narzędzie PowerDMARC Domain Analyzer skanuje wszystkie trzy elementy jednocześnie i przyznaje ocenę w skali od A do F, dzięki czemu w jednym przebiegu dowiadujesz się, czy Twoja domena jest faktycznie chroniona od początku do końca, czy tylko częściowo.
Gdy napotkasz problemy takie jak pułapka „DKIM przechodzi, ale DMARC nie”, skorzystaj z bezpłatnego narzędzie do analizy nagłówków wiadomości e-mail umieszcza werdykt DKIM oraz wynik porównania, dzięki czemu w ciągu kilku sekund można zlokalizować dokładną niezgodność, zamiast mrużyć oczy, przeglądając surowe nagłówki.
Rotacja kluczy DKIM w Postfixie
Klucz prywatny, który od lat pozostaje nietknięty na serwerze, to klucz, którego ryzyko ujawnienia stale rośnie. Jeśli kiedykolwiek dojdzie do jego wycieku, osoba atakująca będzie mogła podpisywać wiadomości e-mail jako użytkownik z Twojej domeny, dopóki tego nie wykryjesz.
Regularna rotacja, co najmniej raz w roku, pozwala utrzymać ten przedział w niewielkich granicach. Selektor oparty na roku zapewnia płynną zamianę.
Proces obracania:
- Wygeneruj nowy klucz z nowym selektorem – selektor2027.
- Opublikuj nowy klucz publiczny jako nowy rekord DNS typu TXT, a stary rekord pozostaw bez zmian.
- Zaktualizuj swoją konfigurację, aby podpisywać dane przy użyciu nowego selektora.
- Zaktualizuj serwer milter i poczekaj, aż czas życia (TTL) rekordów DNS się rozprzestrzeni.
- Należy utrzymać stary rekord aktywny przez co najmniej poprzedni czas TTL plus 24–48 godzin (zazwyczaj łącznie 48–72 godzin), w zależności od wartości TTL i ilości przesyłek w trakcie przesyłania. Przesyłki już w trakcie przesyłania, podpisane starym kluczem, nadal wymagają weryfikacji.
- Wycofaj stary selektor i usuń jego rekord DNS.
To właśnie ta część, w której kroki 5 i 6 się pokrywają, nie może być przyspieszona. Jeśli stary rekord zostanie usunięty zbyt wcześnie, każda wiadomość, która jest w tym momencie weryfikowana na jego podstawie, nie przejdzie weryfikacji – a właśnie tego rodzaju cichej awarii uwierzytelniania ma zapobiegać protokół DKIM.
Ani OpenDKIM, ani Rspamd nie automatyzują generowania kluczy, publikowania w DNS ani synchronizacji okresów pokrywania się. W przypadku pojedynczej domeny wystarczy raz w roku ustawić przypomnienie w kalendarzu. Jednak w przypadku pięciu lub więcej domen staje się to powtarzającym się zadaniem, o którym łatwo zapomnieć, a rotacja, która po cichu nigdy nie ma miejsca, stanowi lukę w zgodności z przepisami, której nie zauważysz, dopóki ktoś nie poprosi cię o przedstawienie dowodu.
Typowe błędy DKIM w Postfixie i sposoby ich usuwania
Problemy z DKIM w Postfixie często wynikają z kilku typowych przyczyn, głównie związanych z uprawnieniami do gniazd, ścieżkami kluczy oraz zgodnością domen. W poniższej tabeli zestawiono występujące objawy wraz z ich najbardziej prawdopodobnymi przyczynami i sposobami rozwiązania, dzięki czemu możesz od razu przejść do swojego przypadku.
| Błąd | Prawdopodobna przyczyna | Fix |
|---|---|---|
| W nagłówkach brakuje podpisu DKIM | Urządzenie Milter nie jest podłączone lub nie pasuje gniazdo | Sprawdź, czy ścieżki gniazd są zgodne w plikach opendkim.conf i main.cf; upewnij się, że użytkownik postfix należy do grupy opendkim |
| Połącz się z usługą Milter... Odmowa połączenia | Demon OpenDKIM nie działa | systemctl start opendkim; sprawdź, czy plik gniazda rzeczywiście istnieje w katalogu spool |
| opendkim: nie udało się pobrać klucza | Nieprawidłowa ścieżka w tabeli kluczy lub nieprawidłowe uprawnienia | Sprawdź ścieżkę pliku .private w tabeli key.table; uruchom polecenie chown opendkim:opendkim na kluczu |
| DKIM przeszedł pomyślnie, ale DMARC nie | Niezgodność wyrównania | Domena podpisująca (d=) musi być zgodna z domeną w nagłówku „From:”; należy zastosować łagodniejsze kryteria dopasowania |
| Klucz 2048-bitowy odrzucony przez DNS | Limit długości wiadomości TXT u dostawcy: 255 znaków | Podziel klucz publiczny na dwa ciągi znaków ujęte w cudzysłowy w tym samym rekordzie TXT |
Kiedy warto odejść od ręcznej konfiguracji DKIM w Postfixie
W przypadku pojedynczej domeny samodzielnie zarządzany DKIM w Postfixie to idealny wybór. Wystarczy skonfigurować go raz, a potem działa bez zarzutu, jednak wraz ze wzrostem liczby wysyłanych wiadomości ręczne czynności z tym związane stają się raczej źródłem ryzyka niż sposobem na zachowanie kontroli.
Oto kilka oznak, że osiągnąłeś ten punkt:
- Rejestrujesz trzy lub więcej domen.
- Wiadomości są wysyłane z wielu źródeł: z serwisu ESP, w ramach korespondencji transakcyjnej oraz z Twojej aplikacji, a każde z nich wymaga własnych kluczy.
- Masz wyznaczony termin na dostosowanie się do przepisów i nie możesz sobie pozwolić na pominięcie kolejnej rotacji.
- Wszystkie informacje dotyczące DKIM posiada jedna osoba, a w razie jej odejścia cała ta wiedza przepadłaby wraz z nią.
Jeśli borykasz się z tymi problemami, zarządzanie DKIM w modelu hostowanym wypełnia te luki, całkowicie eliminując czynności wykonywane ręcznie. Oto, czym różni się ręczne zarządzanie DKIM od zarządzania DKIM w modelu hostowanym:
| Zadanie | Podręcznik (OpenDKIM / Rspamd) | Hostowany DKIM |
|---|---|---|
| Rotacja klucza | Ręcznie w każdym cyklu: generowanie, publikowanie, nakładanie się, wycofywanie | Automatycznie, bez konieczności edycji DNS w każdym cyklu |
| Wiele domen | Oddzielne klucze, rekordy i konfiguracje dla każdej domeny | Zarządzane centralnie |
| Rozmiar klucza | 2048 bitów (lub Ed25519) | Do 4096 bitów |
| Zarządzanie selektorami | Śledzone ręcznie | Automatycznie wykrywane dla głównych dostawców usług internetowych |
| Konserwacja systemu DNS | Edytowane przy każdej rotacji | Jeden rekord CNAME, opublikowany jednorazowo |
Jeśli zarządzasz DKIM w wielu domenach lub potrzebujesz niezawodnej rotacji kluczy zapewniającej zgodność z przepisami, usługa Hosted DKIM firmy PowerDMARC pozwoli Ci wyeliminować ręczne czynności i związane z nimi ryzyko.
Rozpocznij 15-dniowy bezpłatny okres próbny
Najczęściej zadawane pytania
Czym jest Postfix DKIM?
Postfix DKIM to kryptograficzne podpisywanie wiadomości wychodzących na serwerze Postfix, dzięki czemu odbiorcy mogą potwierdzić, że wiadomość pochodzi z Twojej domeny i nie została zmieniona. Postfix nie posiada wbudowanego modułu podpisującego, więc przekazuje każdą wiadomość do modułu filtrującego (milter) — OpenDKIM lub Rspamd — który dodaje podpis.
Czym jest OpenDKIM?
OpenDKIM to samodzielny moduł filtrujący (milter), który zajmuje się podpisywaniem i weryfikacją DKIM dla Postfixa i innych serwerów MTA – i niczym więcej. Jest to proste i powszechnie stosowane rozwiązanie, jednak od 2021 roku nie ukazała się żadna stabilna wersja, dlatego w przypadku długoterminowych wdrożeń należy rozważyć ryzyko związane z utrzymaniem tego rozwiązania.
Czym jest Rspamd?
Rspamd to aktywnie rozwijany system filtrowania spamu, którego moduł podpisywania DKIM umożliwia podpisywanie wiadomości wysyłanych przez Postfix. Ponieważ obsługuje on zarówno filtrowanie, jak i podpisywanie w ramach jednego modułu filtrującego (milter), zastępuje zarówno OpenDKIM, jak i SpamAssassin, co czyni go lepszym wyborem na rok 2026 w przypadku serwerów obsługujących wiele domen lub serwerów produkcyjnych.
Czym jest Postfix?
Postfix to powszechnie stosowany agent transferu poczty (MTA) typu open source, który kieruje i dostarcza wiadomości e-mail na serwerach typu uniksowego. Obsługuje on wysyłanie i odbieranie poczty, ale sam w sobie nie podpisuje wiadomości za pomocą DKIM — do tego potrzebny jest oddzielny moduł typu milter, taki jak OpenDKIM lub Rspamd.
Czy w 2026 roku powinienem używać OpenDKIM czy Rspamd z Postfixem?
W przypadku prostych konfiguracji obejmujących jedną domenę OpenDKIM nadal sprawdza się dobrze. W przypadku serwerów obsługujących wiele domen lub serwerów produkcyjnych lepszym wyborem jest Rspamd. Jest on aktywnie rozwijany i łączy podpisywanie DKIM z filtrowaniem spamu w jednym module filtrującym (milter).
Jak sprawdzić, czy moje wiadomości wychodzące są podpisywane za pomocą DKIM?
Sprawdź plik /var/log/mail.log w poszukiwaniu wpisów dotyczących podpisywania, uruchom opendkim-testkey, wyślij testową wiadomość e-mail do Gmaila i sprawdź surowe nagłówki pod kątem DKIM: PASSlub sprawdź swoją domenę za pomocą bezpłatnego narzędzia do sprawdzania DKIM.
- Jak skonfigurować DKIM w Postfixie w 2026 r. (OpenDKIM i Rspamd) - 19 czerwca 2026 r.




