Greylisting und kritische Fehler
Greylisting reduziert Spam ganz enorm. Ich habe eine Anleitung geschrieben, wie man es mit Plesk und qmail installiert. Wenn man ein 64bit-System hat, kann es sein, dass die Pfade im Tarball nicht mehr stimmen.
strato:/usr/src/qmail-1.04 # grep "\/usr\/lib" Makefile
load qmail-envelope-scanner.o local_scan.o /usr/lib/mysql/libmysqlclient.a
./load qmail-envelope-scanner -lz -lm local_scan.o /usr/lib/mysql/libmysqlclient.a
Der Pfad "/usr/lib/" muss durch "/usr/lib64/" ersetzt werden. Die Installation und der Download hat sich nur wenig geändert. Es gibt jedoch von Linux zu Linux oder Plattform zu Plattform unterschiedliche Probleme und Fehler.
Kritische Fehler
Obwohl ich im C-Code einige der Warnungen bereinigt habe, können noch folgende "Fehler" auftreten:
qmail-qmtpd.c: In function 'resources':
qmail-qmtpd.c:16: warning: incompatible implicit declaration of built-in function '_exit'
qmail-smtpd.c: In function 'tls_verify':
qmail-smtpd.c:783: warning: pointer targets in assignment differ in signednesss
pfquery.c: In function 'main':spfquery.c:30:
warning: incompatible implicit declaration of built-in function 'strdup'
Diese Warnungen sind alle normal und treten (vielleicht) nicht bei allen Linux-Distributionen auf. Der C-Code ist nicht sauber programmiert und nicht auf unterschiedlichen Systemen getestet worden. Diese Warnungen können ignoriert werden. Die folgende Fehler sind jedoch kritisch:
qmail-remote.c:663: warning: return type of `main' is not `int'
make: *** [qmail-remote.o] Error 1
./compile: line 3: exec: cc: not found
make: *** [qmail-local.o] Error 127
collect2: ld returned 1 exit status
make: *** [qmail-envelope-scanner] Error 1
local_scan.c:255: error: `mysql' undeclared (first use in this function)
*** Error code 1
tls.c:12: error: conflicting types for 'strerror'
/usr/include/string.h:256: error: previous declaration of 'strerror' was here
make: *** [tls.o] Error 1
Die Fehler haben unterschiedliche Ursachen. Den Fehler in der Datei "tls.c" kann (dank an TJ) durch auskommentieren der Zeile 12 gefixt werden. Au��erdem muss sichergestellt sein, das die Pakete "gcc", "mysql-devel" und "openssl-devel" installiert sind. Sollte dennoch einer der oben genannten Fehler auftreten, dann bitte einen Post im Forum machen, danke!
Update: Cleanup-Perl-Skript von Gerard Earley
Wieder ist der Artikel (siehe Forum von SWsoft) nur frei und sinngemäß übersetzt. Gerard (aka Thratchen) hat die Datenbank und die Einträge in "relaytofrom" beobachtet. Die Registrierung der User seiner Mailinglisten, führten zu einigen Datensätzen und die Inhalt der Datenbank nahm immer mehr zu. In diesem Fall resultieren typischerweise 40% bis 80% der Einträge aus Zustellversuchen von Mailing-Listen. Normalerweise ist das kein Problem, aber auf einem System, das sehr beschäftigt ist, könnte das die "initial lookups" erheblich beeinträchtigen.
Programme für Mailing-Listen wie "Mailman" benutzen "Nur-einmal-benutzen" Mail-Adressen, um diese Mails an die "Subscribers" (Personen, die sich in die Mailing-Liste eintragen wollen) weiter zu leiten. Gerard hat über 75% solcher Einträge in seiner Greylist Datenbank gefunden.
Das Original-SQL von Brent arbeitet sehr gut, aber
DELETE FROM relaytofrom
WHERE record_expires < NOW() - INTERVAL 1 HOUR AND origin_type = 'AUTO';
Gerard hat zwei weiter SQL-Statements erstellt, die erheblich - und seiner Meinung nach einigermaßen sicher - die Anzahl der Datensätze in der Datenbank reduzieren:
DELETE FROM relaytofrom
WHERE passed_count = 0
AND last_update < NOW() - INTERVAL 1 DAY
AND origin_type = 'AUTO';
DELETE FROM relaytofrom
WHERE mail_from LIKE '%-return-%'
AND blocked_count = 1
AND passed_count = 1
AND origin_type = 'AUTO'
AND create_time < NOW() - INTERVAL 1 DAY;
Die erste Anweisung löscht Einträge, die älter als einen Tag sind und nicht erfolgreich zugestellt wurden. Bei der zweiten Anweisung müssen mehrere Kriterien erfüllt sein: Der Absender muss die Zeichen "-return-" enthalten.
[ erstellt am Dienstag, 03. Juli 2007 um 15:46:17 ]