Für ein aktuelles Projekt von mir ist es wichtig, dass mein Debian Home Server E-Mails versenden kann. Diese sollen jedoch zu Testzwecken, unabhängig vom angegebenen Absender und Empfänger, immer an eine bestimmte E-Mail-Adresse geschickt werden. Das hat den Vorteil, dass ich ganz viele verschiedene E-Mail-Adressen verwenden kann und dabei niemand mit Mails belästigt wird, die er nicht haben möchte. Spam mag niemand!

Hierbei ist zu beachten, dass man im Normalfall keine E-Mails von einem Home Server aus versenden sollte. Warum das so ist? Nicht ein einziger E-Mail-Anbieter würde sie annehmen. Das liegt ganz einfach daran, dass ein Home-Server, beziehungsweise der Internet-Anschluss in einer Wohnung, keine statische IP-Adresse verwendet (aus nicht-DSL-Bereichen) und ebenfalls keinen gültigen Hostnamen besitzt. Somit gilt man unter keinen Umständen als legitimer und seriös arbeitender Versender von E-Mails.

Um das Problem zu lösen, versenden wir daher unsere E-Mails mit dem MTA (Mail-Transfer-Agent) Postfix per SMTP über einen der vielen legitimen und seriösen Anbieter, die es im Internet so gibt. In meinem Fall ist dies GMX.

Installation

Als Erstes installieren wir Postfix.

sudo apt-get install postfix

Anschließend öffnet sich ein Dialogfeld, in dem wir einige grundsätzliche Einstellungen vornehmen müssen. Bei der ersten Frage, nach der Art der Konfiguration, wählen wir „Satellitensystem“ aus, gehen per Tab-Taste auf „Ok“ und bestätigen dies mit der Enter-Taste.

postfix konfiguration satellitensystem

Im nächsten Schritt wird der System-E-Mail-Name abgefragt. Hier habe ich den vorausgefüllten Namen meines Servers belassen.

postfix konfiguration domainname

Nun werden wir nach dem SMTP-Relay-Server gefragt. Hier kommt der SMTP-Server eures Anbieters rein. In meinem Fall „mail.gmx.net“.

postfix konfiguration smtp relay server

Sollte man während dieser Eingaben bei der Postfix Konfiguration einen Fehler gemacht haben und dies erst später bemerken, kann mit dem folgenden Befehl die Konfiguration erneut gestartet werden.

sudo dpkg-reconfigure postfix

Einrichtung

Die weiteren Schritte bei der Einrichtung von Postfix müssen per Hand durchgeführt werden. Dafür bearbeiten wir als Erstes die Konfigurationsdatei mit dem Befehl:

sudo nano /etc/postfix/main.cf

Am Ende dieser Datei müssen die folgenden Zeilen eingefügt werden:

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
sender_canonical_maps = regexp:/etc/postfix/sender_canonical  
recipient_canonical_maps = regexp:/etc/postfix/recipient_canonical  
smtp_tls_security_level = encrypt

Hierdurch legen wir fest, dass der SMTP Anbieter eine Authentifizierung benötigt, die Verbindung über eine sichere TLS Verbindung erfolgen soll und in welcher Datei die Zugangsdaten stehen. Des Weiteren verweisen wir auf zwei Dateien, durch die beim Versand einer E-Mail zum einen der Absender und zum anderen der Empfänger verändert wird.

Jetzt kümmern wir uns als Erstes um die Zugangsdaten. Dafür erstellen wir mit dem ersten Befehl eine neue Datei und bearbeiten diese Datei mit dem zweiten Befehl.

sudo touch /etc/postfix/sasl_password
sudo nano /etc/postfix/sasl_password

Dort wird eine neue Zeile eingefügt. ADRESSE und PASSWORT müssen selbstverständlich durch eure Daten ersetzt werden.

mail.gmx.net ADRESSE@gmx.de:PASSWORT

Nun legen wir fest, wer der Absender aller E-Mails sein soll, indem wir eine neue Datei anlegen und diese bearbeiten.

sudo touch /etc/postfix/sender_canonical
sudo nano /etc/postfix/sender_canonical

Hier fügen wir die folgende Zeile ein. ADRESSE müsst Ihr erneut ersetzen.

/.+/ ADRESSE@gmx.de

Dasselbe machen wir mit der Empfänger-Adresse, an die alle E-Mails geschickt werden sollen.

sudo touch /etc/postfix/recipient_canonical
sudo nano /etc/postfix/recipient_canonical

In diese Datei kommt die folgende Zeile. ADRESSE muss wieder ausgetauscht werden. Wenn die Empfänger-Adresse dieselbe wie die vom Absender sein soll, ist die Zeile identisch mit der aus der vorherigen Datei.

/.+/ ADRESSE@gmx.de

Um die veränderte Konfiguration von Postfix zu übernehmen, müssen aus unseren neuen Dateien Datenbanken erstellt werden. Dies machen wir mit diesen Befehlen:

sudo postmap hash:/etc/postfix/sasl_password
sudo postmap /etc/postfix/recipient_canonical
sudo postmap /etc/postfix/sender_canonical

Abschließend starten wir Postfix neu.

sudo service postfix restart

Um zu testen, ob alles funktioniert, könnt Ihr mit dem folgenden Befehl eine E-Mail verschicken.

echo Das ist ein Test! | mail -s Test EMPFÄNGERADRESSE

Diese E-Mail erhaltet Ihr jetzt mit dem von euch festgelegtem Absender an eure festgelegte E-Mail-Adresse. Unabhängig davon, wer eine E-Mail verschickt oder wer diese erhalten soll. Um als Entwickler verschiedene Funktionen zu testen, ist dies genau das richtige.

Mir ist bewusst, dass es viel kleinere und einfacherer Lösungen gibt, um dies zu realisieren. Zum Beispiel mit sSMTP oder Nullmailer. Bei beiden hatte ich aber massive Probleme mein Passwort zu hinterlegen und habe hierfür auch keine funktionierende Lösung finden können. Das Problem war, dass meine Passwörter sehr sicher sind und aus vielen Zeichen bestehen, die auch Sonderzeichen beinhalten. Mit diesen Sonderzeichen können beide Programme scheinbar nicht umgehen. Nur hierfür mein Passwort zu ändern und überall anpassen zu müssen sehe ich nicht ein. Ganz davon abgesehen, dass das Passwort dann etwas unsicherer wäre. Des Weiteren können bei sSMTP auch E-Mails verloren gehen, wenn keine Internetverbindung bestehen sollte. Das liegt daran, dass es leider keine Warteschlange gibt und E-Mails nach dem Versenden gelöscht werden. Selbst dann, wenn es einen Fehler bei der Übermittlung gab.