Tutorial

Installieren und Konfigurieren von Postfix unter Ubuntu 20.04

UbuntuEmailUbuntu 20.04

Eine frühere Version dieses Tutorials wurde von Justin Ellingwood verfasst

Einführung

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.

Voraussetzungen

Um diesem Leitfaden zu folgen, benötigen Sie Folgendes:

  • Einen Server mit Ubuntu 20.04, der als Postfix Mail-Server fungiert. Dieser Server sollte über einen Nicht-root-Benutzer mit 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.
  • Einen vollständig qualifizierten Domänennamen, der auf Ihren Ubuntu 20.04-Server verweist. Hilfe bei der Einrichtung Ihres Domänennamens mit DigitalOcean finden Sie, indem Sie unserer Dokumentation Domänen und DNS-Netzwerke folgen. Beachten Sie, dass Sie, wenn Sie den Zugriff auf E-Mails von einem externen Standort planen, sicherstellen müssen, dass Sie auch über einen MX-Datensatz verfügen, der auf auf Ihren Mail-Server verweist.

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.

Schritt 1 — Installieren von Postfix

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:

  • General type of mail configuration? Wählen Sie hierfür Internet Site, da dies unseren Infrastrukturanforderungen entspricht.
  • System mail name: Dies ist die Basisdomäne, die zur Erstellung einer gültigen E-Mail-Adresse verwendet wird, wenn nur der Kontoteil der Adresse angegeben wird. Nehmen wir beispielsweise an, dass der Hostname Ihres Servers 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 and postmaster mail recipient: Dies ist das Linux-Konto, das an root@ und postmaster@ adressierte Mail weitergeleitet wird. Verwenden Sie hierfür Ihr primäres Konto. In diesem Beispielfall sammy.
  • Other destinations to accept mail for: Dies definiert die E-Mail-Ziele, die diese Postfix-Instanz akzeptiert. Wenn Sie weitere Domänen hinzufügen müssen, für deren Empfang dieser Server verantwortlich ist, fügen Sie diese hier hinzu. Andernfalls ist die Standardeinstellung ausreichend.
  • Force synchronous updates on mail queue?: Da Sie wahrscheinlich ein journalisiertes Dateisystem verwenden, akzeptieren Sie hier No.
  • Local networks: Dies ist eine Liste der Netzwerke, für die Ihr Mail-Server für die Weiterleitung von Nachrichten konfiguriert ist. Die Standardeinstellung wird für die meisten Szenarien funktionieren. Wenn Sie sie jedoch modifizieren möchten, stellen Sie sicher, dass Sie in Bezug auf den Netzwerkbereich sehr restriktiv sind.
  • Mailbox size limit: Dies kann verwendet werden, um die Größe von Nachrichten zu begrenzen. Eine Einstellung auf 0 deaktiviert jede Größenbeschränkung.
  • Local address extension character: Dies ist as Zeichen, das verwendet werden kann, um den regulären Teil der Adresse von einer Erweiterung zu trennen (verwendet zur Erstellung dynamischer Aliase) Die Standardeinstellung + funktioniert für dieses Tutorial.
  • Internet protocols to use: Wählen Sie, ob die IP-Version, die Postfix unterstützt, eingeschränkt werden soll. Wählen Sie für die Zwecke dieses Tutorials all aus.

Um genau zu sein, sind dies die in diesem Leitfaden verwendeten Einstellungen:

  • General type of mail configuration?: Internet Site
  • System mail name: example.com (nicht mail.example.com)
  • Root and postmaster mail recipient: Der Benutzername Ihres primären Linux-Kontos (in unserem Beispiel sammy).
  • Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • Force synchronous updates on mail queue?: No
  • Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • Mailbox size limit: 0
  • Local address extension character: +
  • Internet protocols to use: all

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.

Schritt 2 — Ändern der Postfix-Konfiguration

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:

/etc/postfix/virtual
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.

Schritt 3 — Installieren des Mail-Clients und Initialisieren der Maildir-Struktur

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:

/etc/s-nail.rc
. . .
set emptystart
set folder=Maildir
set record=+sent

Diese Zeilen bewirken Folgendes:

  • set emptystart: ermöglicht das Öffnen des Clients auch mit einem leeren Postfach
  • set folder=Maildir: setzt das Verzeichnis Maildir auf die interne Folder-Variable
  • set 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:

Output
Can'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.

Schritt 5 – Testen des Clients

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:

Output
s-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:

~/test_message
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.

Zusammenfassung

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.

Creative Commons License