Dziś przedstawię technika podpisywania wiadomości przed serwer pocztowy – DKIM DomainKeys Identified Mail. Wiadomość z takim podpisem poprawnie zweryfikowanym oznacza, że jest wysłana przez serwer dedykowany dla tej domeny. Dzięki temu otrzymujemy dwie funkcjonalności:
- każdy może sprawdzić czy mail wysłany z serwera z domeny np przykladowadomena.pl jest naprawdę wysłany przez serwer dedykowany do tego. Nie ma możliwości podrobienia nagłówków.
- my możemy udowodnić czy mail nie był(lub był) wysłany przez serwer. Pomocne przy próbach wyłudzenia z cyklu „mamy mail od państwa i państwo zamawiali usługę”. Po nagłówkach można sprawdzić czy to prawda. Wszystkie inne nagłówki można spreparować z wyjątkiem właśnie sygnatury DKIM
DKIM wiadomości kluczem prywatnym szyfruje pola maila np:nadawce,adresata ,datę temat i na tej podstawie generuje klucz wiadomości. Odbiorca może dzięki temu zdeszyfrować (kluczem publicznym publikowanym na DNSie domeny) to i sprawdzić czy wszystko się zgadza. Duże portale używają DKIM: gmail,yahoo.com, wp.pl,onet.pl i wiele innych.
Zakładam, że użytkownik ma poprawnie skonfigurowane serwery poczty (Postfix) i DNS(Bind – chociaż tu rodzaj ma mniejsze znaczenie). Konfiguracja będzie oparta o opendkim. Wszystkie pliki będą w katalogu /etc/postfix/opendkim. Domena to przykladowadomena.pl. Nie będzie to kopia dostępnych tutorialii z sieci lecz kompletny przewodnik z uwzględnieniem obsługi wielu domen na jednym serwerze.
Konfiguracje opendkim
Najpierw należy wygenerować klucz prywatny i klucz publiczny dla domeny. Tworzymy katalog /etc/postfix/opendkim/przykladowadomena.pl w ktorym będą przechowywane klucze. Każda domena będzie miała osobny katalog i osobną parę kluczy (niezależny zestaw). Dobre rozwiązanie jeśli będzie trzeba kiedyś przenieść jedną z domen na inny serwer. Nie trzeba będzie po świecie wynosić klucza prywatnego jednego wspólnego dla wszystkich domen.
opendkim-genkey -t -s mail -d przykladowadomena.pl
ta komenda tworzy dwa pliki w katalogu. Klucz prywatny o nazwie mail.private i klucz publiczny w formacie przygotowanym do publikacji w Bindzie o nazwie mail.txt. Opcja s to tzw selektor czyli prefix w nazwie, która może być dowolna tu będzie standardowa mail.
Plik konfiguracyjny /etc/opendkim.conf wygląda tak
# This is a basic configuration that can easily be adapted to suit a standard # installation. For more advanced options, see opendkim.conf(5) and/or # /usr/share/doc/opendkim/examples/opendkim.conf.sample. # Log to syslog Syslog no # Required to use local socket with MTAs that access the socket as a non- # privileged user (e.g. Postfix) UMask 002 #AuthservID Authentication-Results: mailserver.almamarket.pl AuthservID poczta.przykladowadomena.pl KeyTable /etc/postfix/opendkim/domeny SigningTable /etc/postfix/opendkim/SigningTable
KeyTable to pliki to plik z definiowanymi parametrami dla każdej domeny.
Plik /etc/postfix/opendkim/domeny ma następująco postać
mail._domainkey.przykladowadomena.pl przykladowadomena.pl:mail:/etc/postfix/opendkim/przykladowadomena.pl/mail.private
przy większej ilości domen należy dodać następne linie. Każda linia zawiera selektor i domenę i powiązany z nimi klucz prywatny.
Plik /etc/postfix/opendkim/SigningTable zawiera domeny i powiązane z nimi subdomeny.
przykladowadomena.pl mail._domainkey.przykladowadomena.pl
Połączenie z Postfixem
Połączenie z Postfixem jest dośc proste w pliku /etc/postfix/main.cf dodajemy linie
# DKIM milter_default_action = accept milter_protocol = 2 smtpd_milters = inet:localhost:8891 non_smtpd_milters = inet:localhost:8891
Dopisanie do DNSu
I prawie skończone teraz należy tylko opublikować klucz publiczny przy pomocy pliku mail.txt. czyli coś taiego
mail._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQZNIOQUAA4GNADCBiQKBgQDX1SziGp/3KDnZ2kkWtTyIhMB2/9TO1SLCm4SUPNWcoP7BF8sYW5cCgae qcRBVD6VWVZE0dt2aJQkSvKPeHsyEOgFo7od5Xd4z3WyKRuNDMC3mYUcTyG8PesBfauRBHx4CkYLygRw20Gjzq6Fbg9viy6G1Z9qiK27I3/en5J5clQIDAQAB" ; ----- DKIM mail f or przykaldowadomena.pl
I sprawa zakończona , powinno działać. jak nie działa szukamy w logach i szukamy na necie:)
Wysyłamy testowego maila np dla gmail.com i powinna być w nagłówkach dwa nowe:
generowany przez nas serwer z DKIM-Signature w stylu
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=przykladowadomena.pl; s=mail; t=1431586094; bh=Y+4J+1NyUD0KT/Y4cIdpk8CDE+PIgFDHga1m1j9cQEo=; h=Date:From:To:Subject; b=R5tf6BsHZZUaIyEKBgeiqu3k27+svAnLPdp4cikBBB2Ip0nwGgIyJJbxQ/Pisl2cM osYgjgRv1sHo5nXSpGC2vABGsfTS1/B1lmYGdl4hqGlwB7SR+84EKuhECM7dno+7En k7OlPiRWyzPbNfwoWXFco4yBXkoXK9dQWr8amDlI=
Oraz linia generowane przez gmaila
Authentication-Results: dkim=pass
Opisany tu sposób ma tą zaletę, że łatwo dopisywać natępne domeny na jednym serwerze.
Podsumowanie
DKIM jest wygodnym sposobem podpisywania maili. Ma jedną wielka zaletę: nie da się spreparować nagłówków aby spoofingować źródło wysłania maili. Odbiorca może mieć pewność, że nasz dobry serwer wysłał maila. Pomaga to zdecydowanie w walce ze spamem(spoofingiem) ale o tym innym razem. Jedna z reguł w walce z fałszywymi przesyłkami DHL wykorzystywała brak DKIM.
Wszystkie uwagi i pytania najlepiej pisać w komentarzach. Niech inni tez skorzystają
Do poczytania:
W regułach 2 razy jest przyznawana punktacja za brak DKIM. Łapią się u mnie na to wszystkie maile wysłane z webmaila wp.pl. Czy ktoś może to sprawdzić czy rzeczywiście wp.pl nie używa dkim?
# Sprawdzanei domen czy maja DKIM
# https://zabojcaspamu.pl/sprawdzanie-podpisania-wiadomosci-dkimem/
oraz
#czy w domenie jest DKIM
#https://zabojcaspamu.pl/spf-i-dkim-pomagaja-ubijac-spam/
masz racje, pomylka naprawona.
Co do wp.pl to faktycznie dkim sie nie pojawia chociaz wczesniej był.
Sprawdze dokaldniej
Istotnie wp.pl przestało wysyłać DKIM i sami się „punktują”
DKIM jest na WP ale chyba tylko przy wysyłce z webmaila.
Takie pytanko, bo jest to dla mnie niejasne. Czy to jest do zrobienia na przykład na zwykłym hostingu od Nazwa.pl, czy trzeba mieć dedyka?
dostep do roota. Moze jakies sa jakies serwery z opcja DKIMa ale pewnie jakeis specjalizowane
I cały ten DKIM jest wujka warty.
Tony spamu przychodzą z bardzo ładnym nagłówkiem z DKIM.
Aż się zastanawiam czy punktacji nie obniżać jak jest podpis.
DKIM ma wlaczyc ze spoofingiema nie ze spamem.
Jesli beda punkty za DKIm ubijesz gmaila np