SPF i DKIM pomagają ubijać spam- właściwie spoofing bo do tego zostały stworzone. Ale można ich używać do różnych celów.
W tym poście zakładam, ze DKIM jest sprawdzany przez serwer poczty. Może to robić SA i wtedy reguły sa odpowiednie gotowe. Używany do tego jest plugin DKIM.
Jeśli domena ma podpis DKIM to wtedy serwer ją sprawdza. Ale co jeśli ktoś się podszywa np wysyła niby z gmaila a nie ma DKIM? Wtedy taki mail przejdzie bez problemu bo skąd system ma wiedzieć, ze tam ma być podpis. Należy pokazać gdzie ma to być, oto reguła która zapobiega takim nadużycią:
header __ZABOJCASPAMU_FROM_DKIM_SIGNER2 From:addr =~ /\@(hotmail\.com|yahoo\.|gmail\.com|googlemail\.com|facebookmail\.com|wp\.pl|goldenline\.pl|gumtree\.pl|interia\.pl|nasza\-klasa\.pl|praca\.pl|pro\.onet\.pl|yahoo\.pl)/ header __ZABOJCASPAMU_DKIM_EXISTS_D DKIM-Signature=~/d=(hotmail\.com|yahoo\.|gmail\.com|googlemail\.com|facebookmail\.com|wp\.pl|goldenline\.pl|gumtree\.pl|interia\.pl|nasza\-klasa\.pl|praca\.pl|pro\.onet\.pl|yahoo\.pl)/m meta ZABOJCASPAMU_DKIM_NO_EXISTS __ZABOJCASPAMU_FROM_DKIM_SIGNER2 && ! __ZABOJCASPAMU_DKIM_EXISTS_D describe ZABOJCASPAMU_DKIM_NO_EXISTS Powinien byc DKIM a nie ma score ZABOJCASPAMU_DKIM_NO_EXISTS 1
Małe wyjaśnienie:
From oznacza, że szukać ma w całym polu From
From:addr tylko w adresie tego pola
Oczywiście już zgodnie z tą reguła jeśli mail jest z yahoo.com a podpis ma z gmaila.com to też przejdzie ale nie przesadzajmy:) Inaczej trzeba by pisać regułę dla każdego serwera osobno. Ale nawet taka reguła ma pewna pułapke. Jeśli mamy na stronach formularze to należy IP strony WWW dodać do whitelisty IP.
Jeśli tego nie zrobimy może odrzucać maile z formularzu. Jeśli adresem nadawcy jest podany przez usera to maile z gmail nie będą miały DKIM i będą odrzucane. Należy IPki swoich stron www z formularzami dodać do dozwolonych serwerów
Ale ta reguła nie jest często aktywowana przez maile. Ale co ciekawe niektórzy wysyłają swoje CV automatami z adresami np wp.pl nie z portalu wp.pl. Gratulacje:)
Oczywiście można ubijać maile które mają nieprawidłowy podpis DKIM. Nie jest to trudne wystarczy sprawdzać czy w mailach są odpowiednie pola.
header ZABOJCASPAMU_DKIM_FAIL Authentication-Results=~/dkim=fail/ describe ZABOJCASPAMU_DKIM_FAIL Nieprawidlowy DKIM score ZABOJCASPAMU_DKIM_FAIL 10
Problemem z DKIMem jest taki, że aby wiedzieć czy domena ma ten system trzeba dostać maila. Selector może być dowolny więc trudno w ciemno znależć czy domena podpisuje mila.
A co ze SPFem?
Czy domena ma SPF czy nie jest bardzo łatwo sprawdzić. Wystarczy sprawdzic rekord txt w DNSie. Można to zrobić sprawdzić na stronie lub komendami
host -t txt przykaldowadomena.txt
albo komendą dig
Należy pamiętać o ograniczeniu SPFu (nie pozwala dokonywać forwardingu maili między domenami). Ale są domeny które nie forwarduja maili. Np DHL, poczta-polska itd. Wystarczy stworzyć regułę która będzie sprawdzać czy niektórych domenach jest spf. Oto reguła:
header __ZABOJCASPAMU_SPF_REQ_1 From:addr=~/(dhl\.com|dhl\.pl|poczta\-polska\.pl|inpost\.pl|paczkomaty\.pl)/ meta ZABOJCASPAMU_SPF_REQ __ZABOJCASPAMU_SPF_REQ_1 && ! SPF_PASS describe ZABOJCASPAMU_SPF_REQ Wymagane SPF dla domen score ZABOJCASPAMU_SPF_REQ 5
Oczywiście można dopisywać następne domeny.
Czy taka reguła chronii całkowicie przed spoofingiem? Oczywiście nie. Sprawdza tylko pola adresu z From. Fake z DHLu mial inne dowolne adresy a w polu From byl tylko tekst DHL. Co zrobić jak żyć jak się bronić? O tym niedługo….
Jakiś czas temu otrzymałem prawidłową wiadomość z adresu @pro.onet.pl nie zawierającą DKIM, czy na pewno go używają ?
az sprawdze to dokaldniej
Zastosowałem ostatnią regułę i ogólnie nie działa 🙂
W czym rzecz: mam na serwerze Sender Rewriting Scheme (SRS), zakładam na nim domenę np. inpost.pl. I wysyłam maila na serwer na którym jest ta reguła. Pole from mam test@inpost.pl, pole Return-Path: SRS0+b63C=NS=inpost.pl=test@mojadomena.pl.
I tak: serwer z powyższą regułą przyjmuje maila bo mam SPF_PASS [ xx.xx.xx.xx is authorized to use ‚SRS0+b63C=NS=inpost.pl=test@mojadomena.pl’ in ‚mfrom’ identity (mechanism ‚ip4:xx.xx.xx.xx’ matched) ].
Nie wiem czy to normalne że spamassassin czyta Return-Path zamiast From, czy może błąd w konfiguracji?
W sumie faktycznie moze nie zadziałać:) Piszać widziałem o tym, ze hurtowe sprawdzanie moze dac taki rezultat w pewnych warunkach.
należałoby sprawdzać pole From i również SPF czy jest sprawdzane dla tych domen. czyli musi byc pole From z inpost i spf=pass dla domeny inpost.
Tak jak w DKIM wyżej.
W tym tygodniu uścisle to w nowym wpisie, dzieki za info:)