-
DKIM w CentOS dla Postfix i Sendmail
DKIM to standard, który umożliwia kryptograficzne podpisywanie wysyłanej poczty elektronicznej oraz powiązanie z domeną w celu weryfikacji autentyczności nadawcy. Do przeprowadzenia omawianego procesu potrzebna będzie para kluczy- prywatny i publiczny, który publikujemy w rekordzie TXT naszej domeny.
openssl genrsa -out default 1024M
generujemy klucz prywatny o długości 1024 bitów
openssl rsa -in centos.org.pl -pubout -out centos.org.pl.public -outform PEM
Teraz generujemy klucz publiczny, którego zawartość będziemy musieli zapisać w DNS.Przykładowy wpis do pliku strefy domeny powinien wyglądać następująco:
„default” to dowolna nazwa- tzw. prefix, który będziemy musieli podać przy konfiguracji klucza prywatnego w DKIM-ie. PO wpisie do DNS, przystępujemy do edycji pliku „/etc/mail/dkim-milter/dkim-filter.conf”. Istotne według mnie są następujące wpisy:
ADSPDiscard yes
decydujemy, czy DKIM ma odrzucać niepodpisaną cyfrowo wiadomość (warunkiem pozytywnego działania omawianej opcji jest następujący wpis w pliku strefy danej domeny):
Powyższa funkcjonalność pomaga zabezpieczyć się przed podszywaniem się pod nadawcę, ale może spowodować nie otrzymywanie „chcianych” wiadomości.
AuthservID dowolny_wyraz
określamy token używany w nagłówku wiadomości np. Authentication-Results: dowolny_wyraz; dkim=pass (1024-bit key) header.i=domena.net; x-dkim-adsp=none
KeyList ścieżka_do_pliku_z_konfiguracją kluczy
Określamy położenie pliku ze ścieżkami do kluczy konkretnych domen. Przykładowa zawartość takiego pliku może wyglądać następująco:
*@centos.org.pl:centos.org.pl:/var/db/dkim/default
co oznacza, że dla wszystkich adresów nadawcy z domeny „centos.org.pl” będzie używany klucz prywatny z pliku „/var/db/dkim/default” (tzn. wiadomość będzie nim podpisana). Nazwa pliku klucza prywatnego musi być taka sama jak selektor wpisany w rekordzie TXT dotyczącego DKIM-a podpisywanej domeny. Następnie dopisujemy do pliku „/etc/postfix/main.cf” następujące dwie linie:
smtpd_milters = unix:/var/run/dkim-milter/dkim-milter.sock
non_smtpd_milters = unix:/var/run/dkim-milter/dkim-milter.sock
Następnie powinniśmy dopisać do grupy „dkim-milter” użytkownika postfix. Wpis w „/etc/group” powinien wyglądać np. tak:
dkim-milter:x:105:postfix
Następnie zmieniamy uprawnienia do katalogu „/var/run/dkim-milter/” na 710, aby postfix miał dostęp się do „/var/run/dkim-milter/dkim-milter.sock”.Dla pewności restartujemy posftixa i dkim-a. Następnie w pliku „/etc/mail/dkim-milter/dkim-filter.conf” zakomentowujemy linię rozpoczynającą się od „Selector” i odkomentowujemy następujące:
Syslog Yes
SyslogFacility mail
SyslogSuccess yes
Powyższe ustawienia dotyczą logowania poczynań naszego DKIM-a. Znajdziemy je w „/var/log/maillog”. Poniżej zaprezentuję konfigurację zachowania DKIM-a w konkretnych sytuacjach (ustawienia w „/etc/mail/dkim-milter/dkim-filter.conf”):
On-Default reject
domyślne zachowanie
On-BadSignature reject
zachowanie w przypadku błędnego podpisu
On-DNSError tempfail
zachowanie w przypadku problemów z DNS
On-InternalError accept
wewnętrzny błąd
On-NoSignature accept
nie podpisana wiadomość
On-Security tempfail
zachowanie w przypadku podejrzanych wiadomości
service dkim-milter restart
service postfix restart
Restartujemy DKIM-a i postfixa.
W przypadku implementacji w innym MTA, np. Sendmailu, musimy do pliku „/etc/mail/sendmail.mc” dopisać następującą linię:INPUT_MAIL_FILTER(`dkim-filter’, `S=local:/var/run/dkim-milter/dkim-milter.sock’)
Jeśli w innym miejscu tworzy się u nas plik „dkim-milter.sock”, to musimy poprawić powyższą ścieżkę. Następnie
make -C /etc/mail
service sendmail restart
Od teraz wiadomości wychodzące dla skonfigurowanych domen powinny być podpisywane a e-maile przychodzące kontrolowane pod kontem podpisu cyfrowego DKIM. Powodzenie :). W razie problemów, zapraszam na forum.