Eine frühere Version dieses Tutorials wurde von Justin Ellingwood verfasst
Postfix ist ein beliebter Open-Source Mail Transfer Agent (MTA), der zur Weiterleitung und Zustellung von E-Mails auf einem Linux-System verwendet werden kann. Schätzungen zufolge führen etwa 25 % der öffentlichen Mail-Server im Internet Postfix aus.
In diesem Leitfaden zeigen wir Ihnen, wie Sie Postfix auf einem Ubuntu 20.04 Server installieren und konfigurieren. Anschließend testen Sie, ob Postfix in der Lage ist, E-Mails korrekt weiterzuleiten, indem Sie s-nail
, einen Mail User Agent (MUA), auch als E-Mail-Client bekannt, installieren.
Beachten Sie, dass das Ziel dieses Tutorials darin besteht, Ihnen dabei zu helfen, Postfix schnell zum Laufen zu bringen, und zwar mit nur einigen grundlegenden E-Mail-Funktionen. Am Ende dieses Leitfadens werden Sie zwar noch nicht über einen voll funktionsfähigen E-Mail-Server verfügen, aber einige der grundlegenden Komponenten einer solchen Einrichtung werden Ihnen den Einstieg erleichtern.
Um diesem Leitfaden zu folgen, benötigen Sie Folgendes:
sudo
-Berechtigungen und eine mit UFW konfigurierte Firewall verfügen. Um das einzurichten, können Sie unserem Leitfaden zur Ersteinrichtung des Servers unter Ubuntu 20.04 folgen.Beachten Sie, dass dieses Tutorial davon ausgeht, dass Sie einen Host konfigurieren, der den FQDN von mail.example.com
hat. Falls erforderlich, stellen Sie sicher, dass Sie example.com
oder mail.example.com
so ändern, dass sie Ihren eigenen FQDN widerspiegeln.
Postfix ist in den Standard-Repositorys von Ubuntu enthalten, sodass Sie es mit APT installieren können.
Um zu beginnen, aktualisieren Sie Ihren lokalen apt
-Paketcache:
- sudo apt update
Installieren Sie dann das Paket postfix
mit dem folgenden Beachten Sie, dass wir hier die Umgebungssvariable DEBIAN_PRIORITY=low
an diesen Installationsbefehl übergeben. Dies führt dazu, dass der Installationsprozess Sie auffordert, einige zusätzliche Optionen zu konfigurieren:
- sudo DEBIAN_PRIORITY=low apt install postfix
Dieser Installationsprozess öffnet eine Reihe von interaktiven Eingabeaufforderungen. Verwenden Sie für die Zwecke dieses Tutorials die folgenden Informationen, um Ihre Eingabeaufforderungen auszufüllen:
mail.example.com
lautet. Wahrscheinlich möchten Sie den System-Mail-Namen auf example.com
setzen, sodass Postfix bei der Angabe des Benutzernamens user1
die Adresse user1@example.com
verwendet.root@
und postmaster@
adressierte Mail weitergeleitet wird. Verwenden Sie hierfür Ihr primäres Konto. In diesem Beispielfall sammy.0
deaktiviert jede Größenbeschränkung.+
funktioniert für dieses Tutorial.Um genau zu sein, sind dies die in diesem Leitfaden verwendeten Einstellungen:
example.com
(nicht mail.example.com
)$myhostname, example.com, mail.example.com, localhost.example.com, localhost
127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
0
+
Anmerkung: Wenn Sie jemals zurückkehren müssen, um diese Einstellungen zu ändern, können Sie dies durch die folgende Eingabe tun:
- sudo dpkg-reconfigure postfix
Die Eingabeaufforderungen werden mit Ihren vorherigen Antworten vorausgefüllt.
Wenn der Installationsprozess abgeschlossen ist, können Sie einige Aktualisierungen an Ihrer Postfix-Konfiguration vornehmen.
Jetzt können Sie einige Einstellungen anpassen, zu denen Sie bei der Paketinstallation nicht aufgefordert wurden. Viele der Konfigurationseinstellungen von Postfix sind in der Datei /etc/postfix/main.cf
definiert. Anstatt diese Datei direkt zu bearbeiten, können Sie den Befehl postconf
von Postfix verwenden, um Konfigurationseinstellungen abzufragen oder festzulegen.
Legen Sie zunächst den Speicherort für das Postfach Ihres Nicht-root-Ubuntu-Benutzers fest. In diesem Leitfaden verwenden wir das Format Maildir, das Nachrichten in einzelne Dateien trennt, die dann basierend auf Benutzeraktionen zwischen Verzeichnissen verschoben werden. Die alternative Option, die in diesem Leitfaden nicht abgedeckt ist, ist das mbox-Format, das alle Nachrichten innerhalb einer einzigen Datei speichert.
Setzen Sie die Variable home_mailbox
auf Maildir/
. Später erstellen Sie eine Verzeichnisstruktur unter diesem Namen innerhalb des Home-Verzeichnisses Ihres Benutzers. Konfigurieren Sie home_mailbox
durch Eingabe von:
- sudo postconf -e 'home_mailbox= Maildir/'
Als Nächstes legen Sie den Speicherort für die Tabelle virtual_alias_maps
fest, die beliebige E-Mail-Konten an Linux-Systemkonten abbildet. Führen Sie den folgenden Befehl aus, der den Tabellenspeicherort einer Hash-Datenbankdatei namens /etc/postfix/virtual
zuordnet:
- sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'
Nachdem Sie nun den Speicherort der virtuellen Zuordnungsdatei in Ihrer Datei main.cf
definiert haben, können Sie die Datei selbst erstellen und mit der Zuordnung von E-Mail-Konten zu Benutzerkonten auf Ihrem Linux-System beginnen. Erstellen Sie die Datei mit Ihrem bevorzugten Texteditor; in diesem Beispiel verwenden wir nano
:
- sudo nano /etc/postfix/virtual
Listen Sie alle Adressen auf, für die Sie E-Mail akzeptieren möchten, gefolgt von einem Leerzeichen und dem Linux-Benutzer, an den die E-Mail zugestellt werden soll.
Wenn Sie beispielsweise E-Mails bei contact@example.com
und admin@example.com
akzeptieren möchten und diese E-Mails an den Linux-Benutzer sammy zugestellt werden sollen, können Sie Ihre Datei wie folgt einrichten:
contact@example.com sammy
admin@example.com sammy
Nachdem Sie alle Adressen den entsprechenden Serverkonten zugeordnet haben, speichern und schließen Sie die Datei. Wenn Sie nano
verwendet haben, drücken Sie STRG+X
, Y
, dann ENTER
.
Wenden Sie die Zuordnung durch die folgende Eingabe an:
- sudo postmap /etc/postfix/virtual
Starten Sie den Postfix-Prozess neu, um sicherzustellen, dass alle Ihre Änderungen angewendet wurden:
- sudo systemctl restart postfix
Wenn Sie dem Leitfaden zur Ersteinrichtung des Servers gefolgt sind, der als Voraussetzung gilt, haben Sie eine mit UFW konfigurierte Firewall. Diese Firewall blockiert standardmäßig externe Verbindungen zu Diensten auf Ihrem Server, es sei denn, diese Verbindungen werden ausdrücklich zugelassen. Sie müssen daher eine Firewall-Regel hinzufügen, um eine Ausnahme für Postfix zuzulassen.
Sie können Verbindungen zu dem Dienst zulassen, indem Sie Folgendes eingeben:
- sudo ufw allow Postfix
Damit ist Postfix konfiguriert und bereit, externe Verbindungen zu akzeptieren. Sie sind jedoch noch nicht bereit, es mit einem Mail-Client auszutesten. Bevor Sie einen Client installieren und ihn für die Interaktion mit der an Ihren Server zugestellten E-Mail verwenden können, müssen Sie einige Änderungen an der Einrichtung Ihres Ubuntu-Servers vornehmen.
Um mit der zugestellten Mail zu interagieren, führt Sie dieser Schritt durch den Prozess des Installierens des Pakets s-nail
. Dies ist eine funktionsreiche Variante des BSD-xmail
-Clients, die das Maildir-Format korrekt verarbeiten kann.
Vor dem Installieren des Clients wäre es jedoch ratsam, sicherzustellen, dass Ihre Umgebungsvariable MAIL
korrekt festgelegt ist. s-nail
wird nach dieser Variable suchen, um herauszufinden, wo die Mail für Ihren Benutzer zu finden ist.
Um sicherzustellen, dass die Variable MAIL
unabhängig davon festgelegt ist, wie Sie auf Ihr Konto zugreifen – ob beispielsweise über ssh
, su
, su-
oder sudo
– müssen Sie die Variable in der Datei /etc/bash.bashrc
festlegen und sie zu einer Datei innerhalb von /etc/bash.bashrc
hinzufügen, um sicherzustellen, dass sie standardmäßig für alle Benutzer festgelegt ist.
Um die Variable zu diesen Dateien hinzuzufügen, geben Sie Folgendes ein:
- echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh
Um die Variable in Ihre aktuelle Sitzung einzulesen, rufen Sie die Datei /etc/profile.d/mail.sh
auf:
- source /etc/profile.d/mail.sh
Installieren Sie dann den E-Mail-Client s-nail
mit APT:
- sudo apt install s-nail
Bevor Sie den Client ausführen, müssen Sie noch einige Einstellungen vornehmen: Öffnen Sie die Datei /etc/s-nail.rc
in Ihrem Editor:
- sudo nano /etc/s-nail.rc
Fügen Sie am Ende der Datei die folgenden Optionen hinzu:
. . .
set emptystart
set folder=Maildir
set record=+sent
Diese Zeilen bewirken Folgendes:
set emptystart
: ermöglicht das Öffnen des Clients auch mit einem leeren Postfachset folder=Maildir
: setzt das Verzeichnis Maildir
auf die interne Folder
-Variableset record=+sent
erzeugt eine mbox-Datei sent
zum Speichern gesendeter E-Mails in dem Verzeichnis, das als Variable folder
festgelegt ist, in diesem Fall Maildir
Wenn Sie fertig sind, speichern und schließen Sie die Datei. Sie sind nun bereit, die Maildir-Struktur Ihres Systems zu initialisieren.
Eine schnelle Möglichkeit, die Maildir-Struktur in Ihrem Home-Verzeichnis zu erstellen, besteht darin, sich selbst mit dem Befehl s-nail
eine E-Mail zu senden. Da die Datei sent
erst zur Verfügung steht, wenn Maildir erstellt ist, sollten Sie das Schreiben an diese Datei für diese erste E-Mail deaktivieren. Führen Sie dies durch die Übergabe der Option -Snorecord
aus.
Senden Sie die E-Mail, indem Sie einen Zeichenfolge an den Befehl s-nail
übergeben. Passen Sie den Befehl so an, dass Ihr Linux-Benutzer als Empfänger markiert wird:
- echo 'init' | s-nail -s 'init' -Snorecord sammy
Anmerkung: Sie erhalten möglicherweise die folgende Antwort:
OutputCan't canonicalize "/home/sammy/Maildir"
Dies ist normal und kann nur beim Senden dieser ersten Nachricht erscheinen.
Sie können überprüfen, ob das Verzeichnis erstellt wurde, indem Sie nach Ihrem Verzeichnis ~/Maildir
suchen:
- ls -R ~/Maildir
Sie werden sehen, dass die Verzeichnisstruktur erstellt wurde und dass sich eine neue Nachrichtendatei im Verzeichnis ~/Maildir/new
befindet:
Output/home/sammy/Maildir/:
cur new tmp
/home/sammy/Maildir/cur:
/home/sammy/Maildir/new:
1463177269.Vfd01I40e4dM691221.mail.example.com
/home/sammy/Maildir/tmp:
Nachdem die Verzeichnisstruktur nun erstellt wurde, können Sie den s-nail
-Client testen, indem Sie die von Ihnen gesendete init
-Nachricht anzeigen und eine Nachricht an eine externe E-Mail-Adresse senden.
Führen Sie zum Öffnen des Clients den Befehl s-nail
aus:
- s-nail
In Ihrer Konsole sehen Sie einen rudimentären Posteingang, in dem die init
-Nachricht wartet:
Outputs-nail version v14.9.15. Type `?' for help
"/home/sammy/Maildir": 1 message 1 new
>N 1 sammy@example.com 2020-05-19 15:40 14/392 init
Drücken Sie ENTER
, um die Nachricht anzuzeigen:
Output[-- Message 1 -- 14 lines, 369 bytes --]:
From sammy@example.com Tue May 19 15:40:48 2020
Date: Tue, 19 May 2020 15:40:48 +0000
To: sammy@example.com
Subject: init
Message-Id: <20160513220749.A278F228D9@mail.example.com>
From: sammy@example.com
init
Sie können zurück zu der Nachrichtenliste gelangen, indem Sie h
eingeben und dann ENTER
drücken.
- h
Output>R 1 sammy@example.com 2020-05-19 15:40 14/392 init
Beachten Sie, dass die Nachricht jetzt den Status R
hat, was anzeigt, dass sie gelesen wurde.
Da diese Nachricht nicht sehr nützlich ist, können Sie sie löschen, indem Sie d
und dann ENTER
drücken.
- d
Um zurück zum Terminal zu gelangen, geben Sie q
und dann ENTER
ein:
- q
Prüfen Sie abschließend, ob s-nail
in der Lage ist, E-Mail-Nachrichten korrekt zu senden. Dazu können Sie den Inhalt einer Textdatei an den s-nail
-Prozess übergeben, wie Sie es mit der init
-Nachricht getan haben, die Sie im vorherigen Schritt gesendet haben.
Beginnen Sie mit dem Schreiben einer Testnachricht in einem Texteditor:
- nano ~/test_message
Geben Sie im Editor den Text ein, den Sie senden möchten:
Hello,
This is a test. Please confirm receipt!
Speichern und schließen Sie die Datei, nachdem Sie Ihre Nachricht geschrieben haben.
Verwenden Sie dann den Befehl cat
, um die Nachricht an den s-nail
-Prozess zu übergeben. Sie können dies mit dem folgenden Beispiel tun, das diese Optionen verwendet:
-s
: Dies definiert die Betreffzeile der E-Mail-Nachricht-r
: Eine optionale Änderung des Felds „Von:“ der E-Mail. Standardmäßig wird der Linux-Benutzer, unter dem Sie angemeldet sind, zum Ausfüllen dieses Feldes verwendet. Die Option -r
ermöglicht es Ihnen, diese mit einer gültigen Adresse zu überschreiben, z. B. mit einer der Adressen, die Sie in der Datei /etc/postfix/virtual
definiert haben. Zur Veranschaulichung verwendet der folgende Befehl contact@example.com
.Stellen Sie außerdem sicher, dass Sie user@email.com
in eine gültige E-Mail-Adresse ändern, auf die Sie Zugriff haben:
- cat ~/test_message | s-nail -s 'Test email subject line' -r contact@example.com user@email.com
Navigieren Sie dann zum Posteingang für die E-Mail-Adresse, an die Sie die Nachricht geschickt haben. Dort sehen Sie Ihre Nachricht fast sofort warten.
Anmerkung: Wenn sich die Nachricht nicht in Ihrem Posteingang befindet, wurde sie möglicherweise an Ihren Spam-Ordner geleitet.
Sie können Ihre gesendeten Nachrichten in Ihrem s-nail
-Client anzeigen. Starten Sie den interaktiven Client erneut:
- s-nail
Sie können Ihre gesendeten Nachrichten in dem E-Mail-Client anzeigen, indem Sie Folgendes eingeben:
- file +sent
Die Ausgabe sieht dann so aus:
Output+[/home/sammy/Maildir/]sent: 1 message 1 new
▸N 1 contact@example.com 2020-05-19 15:47 12/297 Test email subject line
Sie können gesendete Mail mit den gleichen Befehlen verwalten, die Sie für die eingehende Mail verwenden.
Sie haben Postfix nun auf Ihrem Ubuntu 20.04-Server konfiguriert. Die Verwaltung von E-Mail-Servern kann für neue Systemadministratoren eine schwierige Aufgabe sein, aber mit dieser Konfiguration sollten Sie über ausreichend MTA-E-Mail-Funktionen verfügen, um sofort loslegen zu können.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!