Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
centos:mailserver:greylisting_mit_postgrey [24.04.2009 10:38. ]
michi Dokumentation ergänzt - Erklärung(en) angefügt - Formatierung angepasst
centos:mailserver:greylisting_mit_postgrey [03.01.2011 16:48. ] (aktuell)
django Formatierung angepasst
Zeile 1: Zeile 1:
 +====== Greylisting ======
 +Ein auf SPAM-Versand optimiertes System, wird in aller regel sehr viel daran gelegen sein, möglichst eine große Anzahl von Nachrichten in möglichst kürzester Zeit zu verschicken. Jede Verzögerung beim SPAM-Versand wird sich äußerst ungünstig auf die Erfolgsquote des Versenders auswirken. Hintergrund beim Thema greylisting ist nun, unbekannte Einlieferer mit einem temporären Fehler abzuweisen und so eine erneute **erstmalige** Zeitverzögerung zu erzwingen. Vergleichbar mit einer //belegten Rufnummer// bei einem Faksimilegerät.
 +
 +Lediglich der aus den einschlägigen **BSI**((**B**otnet **S**pam **I**P-Ranges)) verschickten SPAMs lässt sich so nicht beikommen. Hier kann aber mit dem [[centos:​mailserver:​erweiterte_gewichtete_pruefungen_mittels_policyd-weight|policyd-weight]] ein weiteres wichtiges Werkzeug in die Waagschale geworfen werden.
 +
 +Beides, **//​greylisting//​** wie auch **//​policyd-weight//​** setzen auf das **PDP**((Policy Delegation Protocol)) von Postfix auf. Mit Hilfe des **Policy Delegation Protocols** besitzt Postfix eine mächtige Schnittstelle,​ an der u.a. die wichtigsten Merkmale einer angebotenen eMail an eine externe Instanz zur Prüfung und Bewertung weitergegeben wird und anschließend darüber eine Entscheidung mitgeteilt bekommt, was mit der eMail passieren soll.
 +
 +===== postgrey installieren =====
 +Für Centos steht ein RPM bereit, welches wir wie gewohnt einfach installieren.
 +<​code>​yum install postgrey</​code>​
 +===== postgrey konfigurieren =====
 +Eigentlich muss man nicht postgrey sondern postfix konfigurieren.
 +
 +Wir fügen also in unsere **/​etc/​postfix/​main.cf** folgende Option nach **# RBL überprüfen (Kapitel 10.11 Realtime Blackhole Lists)
 +** mit ein:
 +<​code>#​ Greylisting via postgrey checken via Unix-Socket ​     (Kapitel 9.2.5 postgrey installieren)
 +        check_policy_service unix:​postgrey/​socket,</​code>​
 +===== postgrey starten =====
 +Beim vorliegenden postgrey-RPM ist neben der Festlegung von User- und Dateirechten auch gleich ein passendes Startupscript installiert worden. Somit reicht ein einfaches **service postgrey start** aus:
 +<​code>​service postgrey start</​code>​
 +Mit einem Blick in die Prozessliste können wir uns vergewissern,​ ob der daemon auch gestartet wurde:
 +<​code>#​ ps auxw | grep postgrey
 +postgrey ​ 8228  0.0  3.1  13220  8076 ?        Ss   ​Oct09 ​  0:01 /​usr/​sbin/​postgrey -d --unix=/​var/​spool/​postfix/​postgrey/​socket</​code>​
 +Selbstverständlich "​verewigt"​ sich postgrey auch im Logfile unseres Mailservers:​
 +<​code>​Oct 13 21:37:35 nss postgrey[21879]:​ Process Backgrounded ​
 +Oct 13 21:37:35 nss postgrey[21879]:​ 2008/​10/​13-21:​37:​35 postgrey (type Net::​Server::​Multiplex) starting! pid(21879) ​
 +Oct 13 21:37:35 nss postgrey[21879]:​ Binding to UNIX socket file /​var/​spool/​postfix/​postgrey/​socket using SOCK_STREAM  ​
 +Oct 13 21:37:35 nss postgrey[21879]:​ Setting gid to "104 104" ​
 +Oct 13 21:37:35 nss postgrey[21879]:​ Setting uid to "​101"​ </​code>​
 +===== automatisches Starten des Dienste beim Systemstart ​ =====
 +Damit der postgrey-Daemon automatisch bei jedem Systemstart startet, denn ohne laufenden **postgrey** verweigert nun unser **postfix** die Annahme der Nachrichten,​ kann die Einrichtung des Start-Scripte über folgenden Befehle erreicht werden:
 +
 +<​code>#​ chkconfig postgrey on</​code>​
 +
 +Die Überprüfungung ob die beiden Dienste (Daemons) postfix und postgrey wirklich bei jedem Systemstart automatisch mit gestartet werden, kann durch folgenden Befehle erreicht werden:
 +
 +<​code>#​ chkconfig --list | grep post*
 +postfix ​        ​0:​Aus ​  ​1:​Aus ​  ​2:​Ein ​  ​3:​Ein ​  ​4:​Ein ​  ​5:​Ein ​  6:Aus
 +postgrey ​       0:Aus   ​1:​Aus ​  ​2:​Ein ​  ​3:​Ein ​  ​4:​Ein ​  ​5:​Ein ​  ​6:​Aus</​code>​
 +
 +Wichtig sind jeweils die Schalter **on** bei den Runleveln - **2 3 4 5**. 
 +
 +===== Ausnahmeregelungen ​ =====
 +==== für Empfänger ​ ====
 +Sollen einzelne Empfänger vom greylisting ausgenommen werden, wie z.B. die Role-Accounts **abuse** und **postmaster**,​ so definieren wir diese in der Ausnahmedatei **postgrey_whitelist_recipients**.
 +<​code>#​ cat postgrey_whitelist_recipients
 +# postgrey whitelist for mail recipients
 +# --------------------------------------
 +# put this file in /​etc/​postfix or specify its path
 +# with --whitelist-recipients=xxx
 +
 +postmaster@
 +abuse@</​code>​
 +
 +==== für Absender ​ ====
 +Leider kommt es auch vor, dass vor allem große Provider hinter ihren MX ein cluster betreiben, die mit wechselnden IP-Adrressen aus einem Pool aufschlagen. Damit können unter Umständen Probleme mit dem Tribble aus **HELO** , **IP-Adresse** und **Reverse-Lookup** entstehen. Diese schalten wir dann bei Bedarf in der **postgrey_whitelist_clients** frei.
 +<​code>​vim /​etc/​postfix/​postgrey_whitelist_clients
 +
 +# 2008-10-08: 1und1.com (big pool, inserted by Django)
 +#​moutng.kundenserver.de
 +/​^.*\.kundenserver\.de$/</​code>​
 +
 +===== erfolgreiches Greylisting ​ =====
 +Am nachfolgenden Beispiel sehen wir, dass ein Connectversuch von einem uns unbekanntem Mailserver erst einmal mit einem **450er** abgewiesen wird und später nocheinmal zugestellt werden soll.
 +<​code>​Oct 12 04:35:39 nss postfix/​smtpd[16118]:​ connect from mail04.mytoys-mail.de[213.61.120.248]
 +Oct 12 04:35:41 nss postgrey[8228]:​ action=greylist,​ reason=new, client_name=mail04.mytoys-mail.de,​ client_address=213.61.120.248,​ sender=newsletter@mytoys-mail.de,​ recipient=wtlbrft@nausch.org ​
 +Oct 12 04:35:41 nss postgrey[8228]:​ cleaning up old logs... ​
 +Oct 12 04:35:41 nss postfix/​smtpd[16118]:​ NOQUEUE: reject: RCPT from mail04.mytoys-mail.de[213.61.120.248]:​ 450 4.2.0 <​wtlbrft@nausch.org>:​ Recipient address rejected: Greylisted, see http://​postgrey.schweikert.ch/​help/​nausch.org.html;​ from=<​newsletter@mytoys-mail.de>​ to=<​wtlbrft@nausch.org>​ proto=ESMTP helo=<​mail04.mytoys-mail.de>​
 +Oct 12 04:35:41 nss postfix/​smtpd[16118]:​ disconnect from mail04.mytoys-mail.de[213.61.120.248]</​code>​
 +Beim nächsten Zustellversuch wird die eMail dann entsprechend akzeptiert:
 +<​code>​Oct 12 11:28:39 nss postfix/​smtpd[21938]:​ connect from mail04.mytoys-mail.de[213.61.120.248]
 +Oct 12 11:28:41 nss postgrey[8228]:​ action=pass,​ reason=triplet found, delay=24780,​ client_name=mail04.mytoys-mail.de,​ client_address=213.61.120.248,​ sender=newsletter@mytoys-mail.de,​ recipient=wtlbrft@nausch.org ​
 +Oct 12 11:28:41 nss postfix/​smtpd[21938]:​ 4EA6476022D:​ client=mail04.mytoys-mail.de[213.61.120.248]
 +Oct 12 11:28:41 nss postfix/​cleanup[21942]:​ 4EA6476022D:​ message-id=<​200810120235.m9C2Zceo068208@mail04.mytoys-mail.de>​
 +Oct 12 11:28:41 nss postfix/​qmgr[8783]:​ 4EA6476022D:​ from=<​newsletter@mytoys-mail.de>,​ size=80786, nrcpt=1 (queue active)
 +Oct 12 11:28:41 nss postfix/​local[21943]:​ 4EA6476022D:​ to=<​wtlbrft@nausch.org>,​ relay=local,​ delay=2.1, delays=2/​0.02/​0/​0.06,​ dsn=2.0.0, status=sent (delivered to mailbox)
 +Oct 12 11:28:41 nss postfix/​qmgr[8783]:​ 4EA6476022D:​ removed
 +Oct 12 11:31:13 nss postfix/​smtpd[21938]:​ disconnect from mail04.mytoys-mail.de[213.61.120.248]</​code>​
 +
  
  • centos/mailserver/greylisting_mit_postgrey.txt
  • Zuletzt geändert: 03.01.2011 16:48.
  • von django