Es ist schon nervig, dass es in Debian kein Paket für eine Sender Rewrite Scheme Dämon gibt. Hier nun eine kleine Anleitung wie man sich mit Hilfe eines Pakets aus den Postfix Tools das Problem vom Hals schafft. Danke an Benny Baumann für einige Vorarbeit.
Erzeugen der Hashs
Mit folgenden Skript kann man sich zufällige Hashs erzeugen lassen:
Die Hashs kopiert man dann in eine Datei und schützt sie, indem man sie nur lesbar durch den Nutzer root macht:
$ vim /etc/postfix/pfix-srs.secrets
$ chown root.root /etc/postfix/pfix-srs.secrets
$ chmod 400 /etc/postfix/pfix-srs.secrets
Die Optionendatei
Anschließend erzeugen wir eine Optionsdatei mit unserem Editor...
$ vim /etc/default/pfix-srsd
...und speichern die folgenden Zeilen dort:
DOMAIN=example.com
SECRETS=/etc/postfix/pfix-srs.secrets
OPTIONS=-I
example.com sollte dabei durch Eure eigene Maildomain (FQDN) ersetzt werden.
Installation benötigter Pakete für pfixtools
Anschließend installieren wir die nötigen Pakete für die Postfix Tools Suite. Zum Herunterladen der Pakete benötigen wir git und zum Kompilieren benötigen wir die build-essentials
$ aptitude install libev-dev libpcre3-dev git build-essentials
Das Paket libsrs2 ist derzeit nicht für Wheezy und Jessie gepackt. Es gibt jedoch wieder ein Paket mit gleicher Versionsnummer wie das Lenny-Paket in sid. Das Paket hat sich also nicht verändert und war nur zeitweise nicht unterstützt. Wir laden es behilfsweise manuell herunter und installieren es über dpkg:
$ cd ~/
$ wget http://ftp.de.debian.org/debian/pool/main/libs/libsrs2/libsrs2-0_1.0.18-4_amd64.deb
$ wget http://ftp.de.debian.org/debian/pool/main/libs/libsrs2/libsrs2-dev_1.0.18-4_amd64.deb
$ dpkg -i libsrs2-0_1.0.18-4_amd64.deb
$ dpkg -i libsrs2-dev_1.0.18-4_amd64.deb
Dann laden den Quellcode der pfixtools herunter und kompilieren uns diesen:
$ git clone https://github.com/Fruneau/pfixtools.git
$ cd pfixtools/common
$ git clone https://github.com/Fruneau/libcommon.git
$ mv libcommon/* ./
$ rm -rf libcommon
$ make
$ cd ../pfix-srsd/
$ make
Wir erhalten eine kompilierte Datei, diese können wir nach /usr/local/bin verschieben.
Erzeugen der Init-Datei
$ vim /etc/init.d/pfix-srsd
Dies ist der Inhalt der Datei:
#!/bin/sh
### BEGIN INIT INFO
# Provides: pfix-srsd
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: pfixtools SRS Daemon backend for Postfix
### END INIT INFO
PFIXSRSD_CONFIG="/etc/default/pfix-srsd"
NAME="pfix-srsd"
DAEMON="/usr/local/bin/pfix-srsd"
PID_FILE="/var/run/pfix-srsd.pid"
if [ -f $PFIXSRSD_CONFIG ]; then
. $PFIXSRSD_CONFIG
else
exit 0
fi
test -x $DAEMON || exit 0
case "$1" in
start)
echo -n "Starting Postfix SRS Daemon: $NAME"
start-stop-daemon -S -q -b -p $PID_FILE -x $DAEMON -- -p $PID_FILE $OPTIONS $DOMAIN $SECRETS
echo "."
;;
stop)
echo -n "Stopping Postfix SRS Daemon: $NAME"
if [ -f $PID_FILE ]; then
kill `cat $PID_FILE`
rm $PID_FILE
fi
echo "."
;;
restart)
$0 stop
$0 start
;;
force-reload)
$0 restart
;;
*)
echo "Usage: $0 start|stop|restart|force-reload"
exit 1
;;
esac
Anschließend machen wir das Skript ausführungsfähig:
$ chmod 755 /etc/init.d/pfix-srsd
Ausnahmedatenbank festlegen
Wir legen nun eine Datenbank an, auf die nach RFC Standard SRS nicht angewendet werden soll.
$ vim /etc/postfix/pfix-no-srs.cf
Sie sollte folgenden Inhalt besitzen:
#Addresses on mail.example.com that should not be rewritten
postmaster@mail.example.com postmaster@mail.example.com
abuse@mail.example.com abuse@mail.example.com
webmaster@mail.example.com webmaster@mail.example.com
Anschließend muss die Datei mit Postfix entsprechend übersetzt werden:
$ postmap /etc/postfix/pfix-no-srs.cf
$ postmap /etc/postfix/pfix-srs.norewrite
Anpassen der Postfix Konfigurationsdatei
Nun fehlen noch die neuen Konfigurationen in der main.cf von Postfix:
$ vim /etc/postfix/main.cf
Diese Zeilen sollten angefügt werden:
# SRS Remapping
recipient_canonical_maps = hash:/etc/postfix/pfix-no-srs.cf, tcp:127.0.0.1:10002
recipient_canonical_classes = envelope_recipient
sender_canonical_maps = hash:/etc/postfix/pfix-no-srs.cf, tcp:127.0.0.1:10001
sender_canonical_classes = envelope_sender
Postfix neustarten und testen
$ /etc/init.d/postfix reload
Init-Script in das Runlevel eintragen
$ update-rc.d pfix-srsd defaults
Changelog
- 14.8.2015: Anpassung des Tutorials an Debian Wheezy und Jessie