Installation:
1. Einloggen auf der Synology als root-User und installieren von postgrey
ipkg install postgrey
Die benötigten perl-Bibliotheken werden dabei gleich mit installiert.
2. Erstellen von benötigten Dateien
Postgrey benötigt für die Ausführung zwei Konfigurationsdateien. Vorlagen dieser Dateien liegen sind
Rich (BBCode):
/opt/share/postgrey/postgrey_whitelist_clients
/opt/share/postgrey/postgrey_whitelist_recipients
postgrey_whitelist_clients beinhaltet alle Hostnamen, die sofort und ohne Greylisting zugestellt werden. Bei den einzelnen Einträgen ist auch erklärt, warum die in die Whitelist aufgenommen wurden. Hier könnt ihr am Schluss der Datei noch die von euch benötigten Domains hinzu fügen.
postgrey_whitelist_recipients beinhaltet alle Benutzer, für die das Whitelisting angewandt wird. Ist die Datei leer, so gilt Whitelisting für alle Benutzer.
Erstellt also zunächst das Standardkonfigurationsverzeichnis:
und kopiert dann die Datei postgrey_whitelist_clients in dieses Verzeichnis:
Rich (BBCode):
cp /opt/share/postgrey/postgrey_whitelist_clients /opt/etc/postfix
Bei mir gilt Whitelisting für alle Benutzer, deswegen erstelle ich eine leere Datei.
Rich (BBCode):
touch /opt/etc/postfix/postgrey_whitelist_recipients
Ihr könnt natürlich auch die Datei
/opt/share/postgrey/postgrey_whitelist_recipients ins Konfigurationsverzeichnis kopieren.
Da ja noch Sicherungskopien existieren, könnt ihr die Dateien direkt bearbeiten. Je nach Vorliebe eben mit vi oder mit nano (
ipkg install nano)
3. Erstellen eines Startscripts
Alle Startscripts der IPKG-Pakete liegen in
/opt/etc/init.d/. Damit postgrey bei einem Neustart der Synology gestartet wird, ist noch ein Startscript anzulegen. Dieses Startscript sieht bei mir wie folgt aus:
Rich (BBCode):
#!/bin/sh
#
# postgrey startup script
case "$1" in
start)
# Startet Postgrey
/opt/sbin/postgrey --delay=180 --inet=127.0.0.1:10024 -d --user=root --group=root --pidfile=/opt/var/run/postgrey.pid --greylist-text='Greylisted! Come back in 3 minutes'
;;
stop)
# Stoppt Postgrey
killall postgrey
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
Die einzelnen Parameter bedeuten:
--delay Zeit in Sekunden, nach der die E-Mail angenommen wird (Standard ist hier 5 Minuten, mir reichen 3 Minuten)
--inet=127.0.0.1:10024 Der erste Part sagt, dass postgrey für alle Internetverbindungen hergenommen wird, der zweite Part ist der Port, auf dem postgrey gestartet wird.
-d Startet Postgrey daemonized, d.h. als Hintergrundprogramm
--user und
--group Das hat die größten Probleme gemacht, da postgrey (zumindest bei mir und bisher) nur als root gestartet werden kann
--pidfile=/opt/var/run/postgrey.pid Hier soll das pid-file hin. Das Verzeichnis /opt/var/run existiert zunächst nicht und muss auch noch angelegt werden.
--greylist-text Hier habe ich meinen eigenen Text eingegeben, der im log erscheint und an den sendenden Mail Server zurück gegeben wird.
Wichtig ist, dass die Zeile mit "
/opt/sbin/postgrey ..." OHNE Umbruch gesichert wird! Wie üblich muss ein Startscript ausführbar mit den Rechten 755 gesichert werden.
Rich (BBCode):
chmod 755 /opt/etc/init.d/S10postgrey
Die Bezeichnung S10postgrey ist willkürlich. Ich habe nur zwei Startscripte. Syslog-ng trägt sich mit 01syslog-ng ein und postgrey wird eben danach aufgerufen.
4. Testaufruf
Nachdem die Vorbereitungen abgeschlossen sind, kann postgrey mit
Rich (BBCode):
sh /opt/etc/init.d/S10postgrey start
testweise gestartet werden. Geht alles gut (kommt keine Fehlermeldung im Terminal), taucht danach ein Eintrag in der Prozessliste auf:
Rich (BBCode):
Synology> ps | grep post
3505 root 7296 S /opt/sbin/postgrey --delay=180 --inet=127.0.0.1:10024
Erscheint der Eintrag nicht, wird postgrey nicht gestartet. Dann kann die Suche aufwendig werden, da der normale syslog-daemon keine vernünftigen Logs liefert. Auch das war der Grund, syslog-ng zu installieren.
Wichtig ist - zumindest bei mir-, dass user/group root angegeben wird. Defaultwerte sind hier postgrey. Aber selbst das anlegen des User "postgrey" ließ postgrey bei mir nicht starten.
5. Konfiguration in main.cf
Damit nur die Mail Station (postfix) auch die E-Mails von postgrey überprüfen lässt, muss main.cf noch entsprechend konfiguriert werden. Je nach Konfiguration liegt diese Datei standardmäßig in
Rich (BBCode):
/usr/syno/mailstation/etc
Vor dem Bearbeiten fertigt man sich natürlich eine Sicherungskopie an.
Rich (BBCode):
cp /usr/syno/mailstation/etc/main.cf /usr/syno/mailstation/etc/main.cf.backup
Sucht in der main.cf den Eintrag, der mit
Rich (BBCode):
smtpd_recipient_restrictions
beginnt. Hier ist defaultmäßig (je nach Einstellungen in der GUI) folgendes angegeben:
Rich (BBCode):
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
Kopiert nun diesen Eintrag (in main.cf gilt immer nur der zuletzt gefunden Paramter) und fügt ihn weiter unten hinzu und ergänzt ihn wie folgt:
Rich (BBCode):
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service inet:127.0.0.1:10024
Die Option "
check_policy_service net:127.0.0.1:10024" weist postfix an, jede eingehende E-Mail an postgrey zu senden. Natürlich muss hier der Port angegeben werden, den ihr konfiguriert habt.
Abschließend solltet ihr die Syno neu starten, um sicher zu sein, dass Postgrey auch nach einem Neustart funktioniert. Schickt euch auch zur Sicherheit von einem externen Mailaccount eine E-Mail und überprüft ob diese ankommt. Sollte etwas nicht ganz stimmen, so kann es sein, dass ihr überhaupt keine Mails mehr bekommt, da alle Zustellversuche abgewiesen werden.
Viel Erfolg!
Buntbaer2001