Installation von qgreylist auf einen Linux Server mit PD-Admin und SE

  • 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:

    Code
    wget http://www.jonatkins.com/qgreylist/qgreylist-0.3.tar.gz


    2. Entpacken des Packetes:

    Code
    gzip -d -c qgreylist-0.3.tar.gz | tar xvf -


    3. Verzeichnis für die Greylist-IPs erstellen

    Code
    mkdir /var/qmail/greylist
    chown qmaild:qmail /var/qmail/greylist
    chmod 755 /var/qmail/greylist


    4. Verzeichnis für die Whitelist erstellen

    Code
    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)

    Code
    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

    Code
    cp qgreylist/greylist /var/qmail/bin/
    chown root:qmail /var/qmail/bin/greylist


    7. Anpassung des run Files von Daemontools (mit dem Editor der Wahl)

    Code
    cp /service/qmail-smtpd/run /service/qmail-smtpd/run.orig
    z.b.: vi /service/qmail-smtpd/run


    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

    Code
    svc -d /service/qmail-smtpd
    killall tcpserver
    svc -u /service/qmail-smtpd


    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. :D 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:

    Code
    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:

    Code
    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.

  • Soweit scheint die Lösung zu funktionieren. Nur leider schlägt das Greylisting-Verfahren auch bei Usern mit SMTP-AUTH zu. User die sich authen sollen gleich senden dürfen. Wie biege ich das dem System bei?


    EDIT:


    Ah, hab' die Lösung gefunden mit port 587. Wer suchet der findet :baby:

  • Jap...konnte nur noch nicht antworten. ;) Wir haben unsere Kunden an Port 587 gewöhnt. Aber auch ohne diesen Port haben wir dazu irgendwie noch nicht eine Meldung bekommen. ;)

  • Hallo,


    1. wie kann ich denn domains in die whitelist eintragen?
    Für die MAilprovider die nicht erneut senden, wie z.b Yahoo.


    Und wie ist das mit dem Port? Hab da was gelesen, das qmail-smtp nochmal parallele auf Port 587 lauschen muss. Geht das automatisch. Wo müsste ich das einstellen.


    Vielen Dank im vorraus. :rolleyes:



    spoli