So ein Server mit Linux verschickt gerne mal die ein oder andere E-Mail wenn er was zu melden hat. Ohne ein wenig Hand anzulegen, bleiben diese aber ungesehen auf dem Server selbst. Daher empfiehlt es sich einen Blick auf den Mailversand zu werfen.
Installation
Recht einfach funktioniert unter Debian der Mailversand mit der Software Exim4. Der erste Schritt ist dabei die Installation zusammen mit ein paar zusätzlichen Tools:
sudo apt-get update mailutils exim4-daemon-light
Grundkonfiguration
Nach der Installation ist Exim für den lokalen Betrieb eingerichtet. Das heißt, es werden nur Mail von lokalen Benutzern für lokale Benutzer entgegengenommen. Das ist jetzt keine Verbesserung da die E-Mails ja gerade außerhalb des Servers gelesen werden sollen. Daher ändern wir die Konfiguration auf ein anderes Profil:
sudo dpkg-reconfigure exim4-config
Dieser Befehl startet einen Konfigurationsdialog in dem verschiedene Profile ausgewählt und deren Parameter angegeben werden können. Zuerst wird das grundlegende Profil (Configuration Type) auf den Wert „mail sent by smarthost; no local mail“ festgelegt. Als „Mail Name“ ist der Name des Servers vorbelegt und kann so übernommen werden. Auch die Werte für die IP-Adressen kann auf der Vorgabe „172.0.0.1; ::1“ belassen werden. Damit wird verhindert das Exim von außen angreifbar ist da er nur Verbindungen von sich selbst (localhost) entgegennimmt. Danach werden die „Local Domains“ abgefragt, das Feld hierzu bleibt leer. Im nächsten Schritt geht es um die „Visible domain names for local users“. Dieser Wert kann, korrespondierend zum Mail Name, auf dem vorgegebenen Wert verbleiben. Die nächste Angabe die abgefragt wird ist die relevante: Als „Outgoing Smarthost“ wird der externe Server angegeben der zukünftig die Mails zustellen soll. Hier sollte man den SMTP-Server seines Mail-Providers angeben. Wenn man dabei einen Port angeben muss braucht man zwei Doppelpunkte anstelle des bei URLs üblichen Einzelnen. Die beiden nächsten und letzen Einstellungen sind Ja-Nein-Fragen die beide mit Nein beantwortet werden können.
Zusätzlich zu den obigen Angaben muss man noch Benutzernamen und Password für den Smarthost angeben damit dieser die zu versendenden E-Mails auch entgegennimmt. Dies geschieht in der Datei /etc/exim4/passwd.client indem man pro Server dessen Hostnamen, den Benutzer und das Passwort in eine Zeile schreibt. Getrennt werden die drei Angaben durch je einen Doppelpunkt.
smtp.mailserver.example:benutzername:passwort
Eine bebilderte Anleitung für die gleiche Konfiguration findet man auf dem Blog root@home:~#.
Intern goes Extern
Mit der neuen Konfiguration kann man jetzt E-Mails an externe Adressen verschicken. Der Versuch die Mail an einen lokalen Benutzer zu senden führt aber voraussichtlich zu einem Fehler weil die Adresse, zusammengesetzt aus dem Benutzernamen und dem FQDN des Servers, auf dem Smarthost nicht bekannt ist.
Um das Problem zu umgehen kann die Datei /etc/aliases manipuliert werden. Die genannte Datei enthält Zuordnungen von Benutzern auf Aliasnamen. Ein Alias kann ein anderer Benutzername oder eine externe E-Mail-Adresse sein.
Dabei kann auch eine ganze Kette von Aliasen aufgebaut werden. So führt, unter Debian, der Benutzer postmaster zum Benutzer root und dieser wiederum zu dem bei der Installation angelegten primären User. Wenn man für diesen Benutzer nun einen weiteren Alias auf die eigene E-Mail-Adresse einträgt landen die Mails auch im entsprechenden Postfach.
sebastian: me@mailserver.example
Um die ganze Konfiguration wirksam werden zu lassen ist es angeraten die Konfiguration für Exim neu einzulesen und einen Neustart durchzuführen:
sudo update-exim4.conf
sudo service exim4 restart
Testen und Fehleranalyse
Um die Konfiguration zu testen kann man über folgendes Kommando eine Mail versenden. Diese sollte nun im gewünschten Postfach ankommen. Wenn nicht, muss man die Logs unterhalb von /var/log/exim/ nach dem Fehler durchsuchen.
echo 'Test Mail' | mail -s 'SMTP Test' root