Howto: Courier-MTA forward only setup

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