Milter-Greylist
Allgemein
Das sogenannte Greylisting ist eine zweischneidige Sache. Auf der einen Seite erschlaegt es einen grossen Prozentsatz an SPAM, auf der anderen Seite bereitet Greylisting bei grossen Domains allerhand Probleme auf die wir spaeter eingehen. Fuer eine kleine Seite wie die pilgerer.org ist Greylisting auf alle Faelle ein Segen. Beim Greylisting wird der erste connect eines MTAs der eine Email absetzen moechte mit einem 421 Resource temporary not available abgelehnt. Die Email bleibt also auf dem sendenden MTA in der mailqueue liegen und wird beim 2. Zustellversuch der mindestens X Minuten (kann konfiguriert werden, siehe unten) spaeter sein muss angenommen. SPAMBots haben typischerweise keine mailqueue sondern verschicken Emails im Batchmode an eine Liste an Empfaengern. Daher wird der 2. Zustellversuch in der Regel nicht stattfinden.
Installation unter FreeBSD
cd /usr/ports/mail/milter-greylist make make install cp /usr/local/etc/mail/greylist.conf.sample /usr/local/etc/mail/greylist.conf
Anschliessend die folgende Zeile in die rc.conf hinzufuegen:
miltergreylist_enable="YES"
Erstkonfiguration
vi /usr/local/etc/mail/greylist.conf
Hier sind eventuell folgende Optionen von vorlaeufigem Interesse:
Wartezeit bis zum 2. Zustellversuch. Diese ist im default eine Stunde was den meisten Usern wohl nicht unbedingt gefallen wuerde.
# How long a client has to wait before we accept # the messages it retries to send. Here, 1 hour. # May be overridden by the "-w greylist_delay" command line argument. greylist 1h #greylist 5m # pilgerer.org
Das eigene Netz sollte aus dem Greylisting befreit werden
You will want to avoid greylisting your own clients # as well, by filtering out your IP address blocks. # Here is an example if you use 192.0.2.0/16. acl whitelist addr your_network_ip/24
Die Zeitspanne die ein Whitelisting Eintrag Gueltigkeit hat ist eventuell ebenfalls etwas niedrig.
# How long does auto-whitelisting last (set it to 0 # to disable auto-whitelisting). Here, 3 days. # May be overridden by the "-a autowhite_delay" command line argument. autowhite 3d # autowhite 10d # pilgerer.org
Milter Interaktion mit sendmail
Folgende Zeilen an die .mc Datei anhaengen, und sendmail neu bauen.
MAILER(smtp)
INPUT_MAIL_FILTER(`greylist', `S=local:/var/milter-greylist/milter-greylist.sock')
define(`confMILTER_MACROS_CONNECT', `j, {if_addr}')
define(`confMILTER_MACROS_HELO', `{verify}, {cert_subject}')
define(`confMILTER_MACROS_ENVFROM', `i, {auth_authen}')
define(`confMILTER_MACROS_ENVRCPT', `{greylist}')unter BSD reicht
cd /etc/mail make make restart
Peering
Peering einrichten
Hat man mehrere MTAs, macht es Sinn, dass auch alle MTAs die gleichen Greylist Eintraege besitzen. Dazu gibt es das Feature peering:
# If you work with multiple MXs, list them with # peer entries to enable greylist sync among the MXs. peer ip-host1 peer ip-host2
Logfile
Im Logfile sieht man nach einem Neustart der Milter nun Zeilen wie die folgende:
Nov 14 14:55:26 oberon milter-greylist: (mxsync): addr 194.97.153.79 from <no-reply@lokalisten.de> rcpt <le-friseur@le-friseur.de>: autowhitelisted for more 72:00:00
Die Zeile mxsync gibt an das die Rule via Sync gelernt wurde.
Syncaddress
Das naechste Beispiel zeigt die Moeglichkeit eine IP Adresse und einen Port anzugeben als SRC fuer den mxsync. Dies kann unter umstaenden bei Dualhomed Hosts oder speziellen Firewall Settings von interesse sein. (oder ipsec)
#syncaddr 192.0.2.2 port 5252
Defaults
Der default Port ist im uebrigen 5252
Ungewollte Seiteneffekte
Allgemein
Ein einlesen der Konfiguration durch kill -HUP pid funktioniert nicht richtig. Der Milter verliert dabei seinen Socket und man muss den Milter neustarten nachdem der Prozess entfernt wurde.
Grosse Setups
Probleme bei grossen Mailsites bereitet die Regelsetzung (IP, sender, receiver). Hier wird pro Sender/Empfaenger und IP Kombination ein Greylist Eintrag vorgehalten. Nehmen wir also an das Firma a) 50 Rechnungen an Firma b) schickt, und Firma b) Blacklisting aktiviert hat. Die Emails landen beim ausgehenden MTA von Firma a) der sie versucht loszuweren. Der MTA von Firma b) schickt einen 421 You are greylistet fuer das erste oben beschriebene Paar. Nun merkt sich der MTA von Firma a), dass die Site von Firma b) down ist. Dies fuehrt nun dazu das in diesem Queuerun (ausgehend von Sendmail) keine Mail an Firma b) mehr versucht wird zuzustellen. Wenn nun nach 5 Minuten Mailserver a) wieder versucht eine Mail an b) zuzustellen, ist dies sehr wahrscheinlich nicht die gleiche Mail wie zuvor (QueueSortOrder). Daher wird der gleiche Vorgang wie oben wiederholt. usw. Bei diesem Beispiel kann man davon ausgehen das die 50. Mail mehrere Stunden, eventuell sogar Tage in der Queue bei a) liegen bleibt. Bei grossen Seiten muss man also entweder
{{{# Uncomment if you want auto-whitelist to work for # the IP rather than for the (IP, sender, receiver) # tuple. #lazyaw }}} verwendem oder/und noch besser eine Vorlaufzeit fuer das Greylisting verwenden und IPs von authorisierten Sendern Whitelisten.
Mehr Info
Links

