Folgendes Aufgabenstellung:
- Es gibt ein zentrales Mail-Relay (“Relay”)
- Es gibt einen Rechner mit einem lokalem Mailserver, bei dem smartd-Alarme etc. Cron-Jobs auf dem root-Account aufschlagen (“Server”)
- Die Mails des Rechners sollen an einen Account auf dem Relay geschickt werden, damit sie (zusammem mit den Mails anderer Rechner) gelesen werden
Damit die Mails nicht als Spam klassifiziert werden, muß die Auslieferung authentisiert verlaufen, d.h. wir benötigen auf dem Relay einen User in /etc/courier/userdb
der eingehende SMTP-Verbindungen erlaubt:
scriptuser hmac-md5pw=|esmtppw=|uid=65534|gid=65534|home=
Auf Server-Seite sollte auch das SSL-Paket installiert werden, damit die Verbindungen zum Relay verschlüsselt laufen können:
$ apt-get install courier-mta courier-mta-ssl
Weiterhin soll der lokale SMTP-Server nur localhost-Verbindungen annehmen und nicht etwa selbst als Relay konfiguriert sein:
$ grep "^ADDRESS=" /etc/courier/esmtpd ADDRESS=127.0.0.1
Als nächster Schritt wird die Domain des zentralen Admin-Accounts und der Hostname des Relays in /etc/courier/esmtproutes
eingetragen:
example.com: relay.example.com
Es ist auch möglich statt example.com
einen Leerstring anzugeben, dann würden alle Mails über das Relay zugestellt.
In /etc/courier/esmtpauthclient
(nur für daemon – User lesbar) steht die für das jeweilige Relay passende Username/Passwort-Kombination:
relay.example.com scriptuser xxxpasswortxxx
Die Mails werden bei courier nicht direkt an root ausgeliefert, deshalb wird in /etc/courier/aliases/system
ein regulärer Unix-User bestimmt, an die die administrativen Mails gehen sollen:
$ grep "^postmaster:" /etc/courier/aliases/system postmaster: unixuser $ makealiases
Nach dem Neustart des Mailservers kann die Konfiguration in dem Home-Verzeichnis des Unix-Users erfolgen:
$ maildirmake ~/Maildir $ cat ~/.courier ./Maildir/ | /usr/sbin/sendmail -f scriptuser@example.com admin@example.com
Anmerkungen zur dot-courier-Datei:
- Die Zustellung ins lokale Maildir kann auch weggelassen werden, ich habe sie dringelassen, damit – wenn der Master down ist – zumindest keine wichtigen Systemmails verloren gehen.
- Das Setzen des Envelope-From ist notwendig, damit der empfangende Server die Email überhaupt akzeptiert. Ansonsten wird nämlich der lokale Hostname herangezogen, der möglicherweise keine Entsprechung im weltweiten DNS hat.
- Die Authentifizierung des scriptuser sorgt dafür, daß auf Empfangsseite Spamassasin die Mails nicht gleich wegsortiert. Denn leider reagieren die Spamfilter etwas allergisch auf generierte Systemmails.
Zum Schluß kann man das Ganze noch testen mit:
echo -e "Subject: test\\n\\nTestmail" | sendmail unixuser