Ein überaus interessanter Thread in der Postgrey Mailingliste:
Hostname-based Selective Greylisting
Im Grunde genommen ist es genau das, was ich mir schon länger wünsche:
Nur dynamisch oder sonstwie verdächtig aussehende Clients landen im Greylisting, die Mails echter MXe (die sowieso weitere Zustellversuche machen würden) werden gleich weiter verarbeitet.
Da das Ganze mit regex funktioniert, ist es auch leicht anpassbar.
Der Aufwand zum Umstellen von globalem Greylisting zu selektivem ist angenehm gering: zwei Konfigurationsdateien werden angepasst.
Kurz zusammen gefasst:
Im Ordner /etc/postfix eine neue Datei mit den regex anlegen -
check_client_greylist:
# regex to check clients which seem to be dynamic
# only those will be greylisted
# inspired by: http://lists.ee.ethz.ch/postgrey/msg01214.html
#
# regex type, no postmap needed
/^unknown$/ check_greylist
/([0-9]{1,3}[.-]){3,4}[^0-9.]+/ check_greylist
/^(dhcp|dialup|ppp|adsl|host|static|www|server|client)[^.]*[0-9]/ check_greylist
/^[^.]*[0-9]{5}/ check_greylist
In /etc/postfix/
main.cf folgende Änderungen:
# selective greylisting
smtpd_restriction_classes = check_greylist
check_greylist = check_policy_service unix:postgrey/socket
und bei den smtpd_recipient_restrictions:
smtpd_recipient_restrictions =
permit_mynetworks
....
reject_unauth_destination
check_client_access regexp:/etc/postfix/check_client_greylist
Was passiert: check_policy_service wird vom letzten Platz bei den smtpd_recipient_restrictions verlagert zu smtpd_restriction_classes und eben diese wird nicht auf alle Clients angewendet, sondern selektiv nur auf jene, auf die eine der regexes passt.
Vorteile:
- Echte MXe und damit legitime Mails landen gar nicht erst im Greylisting, werden also nicht verzögert.
- Die blähen damit auch die Postgrey db's nicht unnötig auf.
- Postgreys Whitelists müssen kaum gepflegt werden (Stichwort Googlemail und neue Server).
Nachteile:
- Wem regex nicht liegt, hat es mit der Anpassung eventuell schwerer.
- Spam Clients können "durchflutschen", wenn die regex nicht passt und die Mails müssen vom Spamfilter (z.B. Amavis) verarbeitet werden.
Auch wenn ein legitimer MX im Greylisting landen sollte, ist noch nichts Schlimmes passiert - schließlich wäre das bei normalem (globalem) Greylisting ohnehin passiert.
Außerdem können die Whitelists wie gewohnt in /etc/postgrey/ verwaltet werden.
Testen der regulären Ausdrücke mit postmap:
postmap -q "bla-15-55-44-1.w80-15.spamdomain.br" regexp:/etc/postfix/check_client_greylist