Hallo,
um der Spam-Problematik ein wenig entgegen zu treten, haben wir schon seit langer Zeit auf diversen Mailservern (mit Postfix) "Greylisting" im Einsatz. Greylisting geht davon aus, dass sich eMail-Server und Clients an den RFC-Standard für SMTP halten. Greylisting an sich bricht die Verbindung das erste Mal mit einer temporären Fehlermeldung ab. Die IP der Gegenstelle wird in eine sogenannte Greylist geschrieben. Reguläre Mailserver versuchen es natürlich später nocheinmal und diesmal wird die Verbindung akzeptiert, weil die Gegenstelle ja schon in der Greylist steht. Auch weitere Verbindungen von dieser IP werden später akzeptiert. Wie lange die bekannten Gegenstellen akzeptiert werden ist individuell einstellbar.
Mit Hilfe von Greylisting konnte das Spam-Aufkommen auf unseren Servern um bis zu 80% gesenkt werden. Natürlich ist diese Technik durch die verursachte Verzögerung nicht unumstritten. Jedoch überwiegt nach Umfrage bei unseren Kunden der Vorteil der Verminderung von Spam diesen Umstand deutlich. Bei regelmäßiger Kommunikation mit den gleichen Kontakten kommt es in der Regel nur noch selten zu Verzögerungen da der Mailserver ja schon bekannt ist.
Ich habe mir nun vor einiger Zeit mal Lösungen für QMail angesehen. Ich möchte hier die Installation einer Greylisting-Lösung beschreiben. Die Integration auf eigene Gefahr. Ich übernehme keine Garantie für Richtigkeit und Vollständigkeit dieser Anleitung. Bitte macht Backups und integriert das nur wenn ihr wisst was ihr tut.
Ich habe mich für qgreylist (*1) von Jon Atkins entschieden. Alternativ gibt es da noch eine angepasste "RBL-Version" mit Namen qgreylistrbl (*2) die um RBL-Anfrage ergänzen wurde um Verbindungsaufbauten von nicht RBL-gelisteten Mailservern sofort zu akzeptieren. Eine Ausnahme bilden Dialin-Rechner. Der PTR-Record der Gegenstelle wird auf einige Regex hin überprüft. Handelt es sich offensichtlich um einen Dialin-Rechner, findet auch hier Greylisting statt. Für meinen Bedarf ist jedoch die Original-Lösung "qgreylist" die passendere. Los gehts.
---
Installation von qgreylist auf einen Linux Server mit PD-Admin und SE.
---
1. Download von qgreylist:
2. Entpacken des Packetes:
3. Verzeichnis für die Greylist-IPs erstellen
4. Verzeichnis für die Whitelist erstellen
mkdir /var/qmail/whitelist
chown qmaild:qmail /var/qmail/whitelist
chmod 755 /var/qmail/whitelist
Hier können bei Problemen bestimmte IPs freigegeben werden.
Ein mir bekannter Kandidat wäre z.b. der Freemailer Uboot.com.
5. Anpassen von qgreylist an die SE (mit dem Editor der Wahl)
z.b.: vi qgreylist/greylist
Erste Zeile:
#!/usr/bin/perl -w
ändern in
#!/usr/local/pd-admin2/bin/perl -w
Des weiteren sollte man die Variablen "my $domain","my $base", "my $whitelist" usw. ansehen und gegeben falls anpassen. Also eigentlich alle "my" Variablen. Ich habe z.b. bei Version einen Hinweis auf deine Erklärungs-Seite für Greylisting gegeben. Wichtige Variablen sind z.b. $greytime,$maxageonce,$maxagegood & $cleanupinterval ... $smtptimeout würde ich runter setzen. Auch die Meldungen kann man anpassen, ich finde die Statusmeldungen nicht so schön. Mit :xall kann man speichern. Mit :q! abbrechen ohne speichern.
6. Kopieren von qgreylist an die "richtige" Stelle
7. Anpassung des run Files von Daemontools (mit dem Editor der Wahl)
Hier in der exec Zeile nach "/var/qmail/bin/tcp-env relaylock" suchen und dahinter "/var/qmail/bin/greylist" einfügen. Mit :xall kann man speichern. Mit :q! abbrechen ohne speichern. Unter *3 habe ich die Original Zeile(bei meinen Systemen) sowie die geänderte gepostet. Wer mag kann gleich die ganze Zeile ersetzen.
8. QMail neu starten
9. Funktionalität prüfen!
Bitte schaut sofort in die entsprechenden Logfiles! Besonders ans Herz gelegt sei euch /var/log/mail sowie /var/log/messages. Wenn alles funktioniert hat solltet ihr nicht zu übersende (Debug)Status-Meldungen die mit "greylist" beginnen sehen. Wenn alles läuft könnt ihr in der /var/qmail/bin/greylist die Variable $debugmsg auf 0 setzen.
---
*1: http://www.jonatkins.com/page/software/qgreylist
*2: http://www.datenklause.de/de/software/qgreylistrbl
*3:
Original:
exec /usr/local/bin/softlimit -m 80000000 /usr/local/bin/tcpserver -x /etc/tcp.smtp.cdb -p -R -u $QMAILDUID -g $NOFILESGID -c 40 -v 0 smtp /var/qmail/bin/tcp-env relaylock /var/qmail/bin/qmail-smtpd $HOSTNAME /usr/local/pd-admin2/bin/checksmtppasswd /bin/true 2>&1 | /var/qmail/bin/splogger smtpd 3
Geändert - mit Greylisting:
exec /usr/local/bin/softlimit -m 80000000 /usr/local/bin/tcpserver -x /etc/tcp.smtp.cdb -p -R -u $QMAILDUID -g $NOFILESGID -c 40 -v 0 smtp /var/qmail/bin/tcp-env relaylock /var/qmail/bin/greylist /var/qmail/bin/qmail-smtpd $HOSTNAME /usr/local/pd-admin2/bin/checksmtppasswd /bin/true 2>&1 | /var/qmail/bin/splogger smtpd 3
P.S.: Bei der "RBL-Version" mit Namen qgreylistrbl müssen eventuell Perl Module installiert werden. Bei mir waren es folgende:
perl -MCPAN -e shell
install Bundle::CPAN
reload cpan
exit
perl -MCPAN -e shell (mit Enter durch)
install Test::Pod (mit Enter durch)
install NetAddr::IP
install Mail::RBL
Alles andere steht unter *2. Nun besteht nur noch die Frage ob es mit der Installation zu Problemen in Verbindung mit PD-Admin bzw. der SE kommen kann(Herr Bradler?). Die Installation läuft so seit einer Woche problemlos auf einem "PD-Admin-Server". Bisher konnte ich keine Fehler feststellen. Feedback ist erwünscht.