Der Autor hat den Free and Open Source Fund dazu ausgewählt, eine Spende im Rahmen des Programms Write for DOnations zu erhalten.
Postfix ist ein Mail Transfer Agent (MTA), eine Anwendung zum Senden und Empfangen von E-Mail. Er kann so konfiguriert werden, dass er sich nur zum Senden von E-Mails durch lokale Anwendungen verwenden lässt. Das ist in Fällen nützlich, in denen Sie regelmäßig E-Mail-Benachrichtigungen von Ihren Anwendungen senden oder einfach über viel ausgehenden Datenverkehr verfügen, den E-Mail-Drittanbieter nicht zulassen. Außerdem handelt es sich dabei um eine schlankere Alternative zur Ausführung eines kompletten SMTP-Servers, die dennoch die erforderliche Funktionalität bietet.
In diesem Tutorial installieren und konfigurieren Sie Postfix als Send-Only-SMTP-Server. Außerdem werden Sie kostenlose TLS-Zertifikate von Let’s Encrypt für Ihre Domäne anfordern und die ausgehenden E-Mails damit verschlüsseln.
your_domain
. Sie können einen Domänennamen unter Namecheap günstig erwerben oder einen kostenlosen von Freenom herunterladen,. oder einfach die Domänenregistrierngsstelle Ihrer Wahl verwenden.your-domain
, der auf die öffentliche IP-Adresse Ihres Servers verweist. Sie finden in dieser Einführung in DigitalOcean DNS Details dazu, wie Sie sie hinzufügen können.Anmerkung: Der Hostname Ihres Servers und der Name Ihres Droplets müssen your_domain
entsprechen, da DigitalOcean anhand des Namens automatisch PTR-Einträge für die IP-Adresse des Droplets festlegt.
Sie können den Hostnamen des Servers überprüfen, indem Sie hostname
in der Eingabeaufforderung eingeben. Die Ausgabe sollte mit dem Namen übereinstimmen, den Sie dem Droplet bei der Erstellung gegeben haben.
In diesem Schritt installieren Sie Postfix. Die schnellste Methode besteht aus der Installation des Pakets mailutils
, in dem Postfix mit einigen zusätzlichen Programmen gebündelt ist, die Sie zum Testversand von E-Mails verwenden werden.
Aktualisieren Sie zuerst die Paketdatenbank:
- sudo apt update
Installieren Sie dann Postfix, indem Sie den folgenden Befehl ausführen:
- sudo apt install mailutils
Kurz vor Ende der Installation wird Ihnen das Postfix-Konfigurationsfenster angezeigt:
Die Standardoption lautet Internet Site
(Internetseite). Das ist die empfohlene Option für Ihren Anwendungsfall. Drücken Sie also TAB
und dann ENTER
. Wenn Sie nur den Beschreibungstext sehen, drücken Sie TAB
, um OK
zu wählen, und dann ENTER
.
Wenn die Anzeige nicht automatisch erfolgt, führen Sie zum Starten den folgenden Befehl aus:
- sudo dpkg-reconfigure postfix
Danach erhalten Sie eine weitere Konfigurationsaufforderung in Bezug auf den System-E-Mail-Namen:
.
Der System-E-Mail-Name muss gleich sein wie der Name, den Sie bei der Erstellung Ihres Servers zugewiesen haben. Wenn Sie damit fertig sind, drücken Sie TAB
, gefolgt von ENTER
.
Sie haben Postfix jetzt installiert und können mit der Konfiguration beginnen.
In diesem Schritt konfigurieren Sie Postfix so, dass E-Mails nur von dem Server gesendet und empfangen werden, auf dem Postfix ausgeführt wird – d. h. von localhost
.
Dazu muss Postfix so konfiguriert werden, dass nur an der Loopback-Schnittstelle gelauscht wird; das ist die virtuelle Netzwerkschnittstelle, die der Server zur internen Kommunikation verwendet. Um die Änderungen vorzunehmen, müssen Sie die Hauptkonfigurationsdatei von Postfix namens main.cf
bearbeiten, die unter etc/postfix
gespeichert ist.
Öffnen Sie sie zum Bearbeiten in Ihrem bevorzugten Texteditor:
- sudo nano /etc/postfix/main.cf
Suchen Sie nach den folgenden Zeilen:
. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
. . .
Setzen Sie den Wert von inet_interfaces
auf loopback-only
:
. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
. . .
Eine weitere Anweisung, die Sie ändern müssen, ist mydestination
, die zur Angabe der Liste von Domänen dient, die über den Mailzustellungstransport local_transport
bereitgestellt werden. Standardmäßig sehen die Werte etwa wie folgt aus:
. . .
mydestination = $myhostname, your_domain, localhost.com, , localhost
. . .
Ändern Sie die Zeile, damit sie wie folgt aussieht:
. . .
mydestination = localhost.$mydomain, localhost, $myhostname
. . .
Wenn Ihre Domäne in Wahrheit eine Subdomäne ist und Sie möchten, dass die E-Mail-Nachrichten aussehen, als ob sie von der Hauptdomäne gesendet wurden, können Sie am Ende von main.cf
die folgende Zeile hinzufügen:
...
masquerade_domains = your_main_domain
Die optionale Einstellung masquerade_domains
gibt an, bei welchen Domänen der Subdomänenteil in der E-Mail-Adresse entfernt wird.
Wenn Sie fertig sind, speichern und schließen Sie die Datei.
Anmerkung: Wenn Sie mehrere Domänen auf einem Server hosten, können die anderen Domänen mit der Anweisung mydestination
ebenfalls an Postfix übergeben werden.
Starten Sie dann Postfix neu, indem Sie den folgenden Befehl ausführen:
- sudo systemctl restart postfix
Sie haben Postfix so konfiguriert, dass von Ihrem Server nur E-Mails gesendet werden. Sie werden dies nun testen, indem Sie eine Beispielnachricht an eine E-Mail-Adresse senden.
Im diesem Schritt testen Sie, ob Postfix E-Mails mit dem Befehl mail
an ein externes E-Mail-Konto senden kann. Dieser Befehl ist Teil des Pakets mailutils
, das Sie im ersten Schritt installiert haben.
Um eine Test-E-Mail zu senden, führen Sie den folgenden Befehl aus:
- echo "This is the body of the email" | mail -s "This is the subject line" your_email_address
Sie können den Text und den Betreff der E-Mail nach Ihren Wünschen ändern. Denken Sie daran, your_email_address
durch eine gültige E-Mail-Adresse zu ersetzen, auf die Sie zugreifen können.
Überprüfen Sie nun die E-Mail-Adresse, an die Sie diese Nachricht gesendet haben. Sie sollten die Nachricht in Ihrem Posteingang sehen. Wenn Sie sie dort nicht finden können, sehen Sie in Ihrem Spam-Ordner nach. Bislang sind alle von Ihnen gesendeten E-Mails unverschlüsselt, weswegen Dienstanbieter denken, dass es wahrscheinlich Spam-Nachrichten sind. Im Schritt 5 richten Sie die Verschlüsselung ein.
Wenn Sie einen Fehler vom Befehl mail
erhalten oder auch nach längerer Zeit keine Nachricht empfangen haben, dann vergewissern Sie sich, dass die von Ihnen bearbeitete Postfix-Konfiguration gültig ist und der Name sowie Hostname Ihres Servers auf Ihre Domäne festgelegt sind.
Achten Sie darauf, dass bei dieser Konfiguration die Adresse im Feld From
für die von Ihnen gesendeten Test-E-Mails in Format your_user_name@your_domain
vorliegt, wobei your_user_name
der Benutzername des Serverbenutzers ist, als der Sie den Befehl ausgeführt haben.
Sie haben nun eine E-Mail von Ihrem Server gesendet und überprüft, ob sie erfolgreich empfangen wurde. Im nächsten Schritt richten Sie die E-Mail-Weiterleitung für root
ein.
Im diesem Schritt richten Sie eine E-Mail-Weiterleitung für den Benutzer root
ein, damit systemgenerierte Nachrichten, die auf Ihrem Server an ihn gesendet werden, an eine externe E-Mail-Adresse weitergeleitet werden.
Die Datei /etc/aliases
enthält eine Liste von alternativen Namen für E-Mail-Empfänger. Öffnen Sie sie zum Bearbeiten:
- sudo nano /etc/aliases
Im Standardzustand sieht sie wie folgt aus:
# See man 5 aliases for format
postmaster: root
Die einzige vorhandene Anweisung gibt an, dass systemgenerierte E-Mails an root
gesendet werden.
Fügen Sie am Ende der Datei die folgende Zeile hinzu:
...
root: your_email_address
Mit dieser Zeile geben Sie an, dass an root
gesendete E-Mails an eine E-Mail-Adresse weitergeleitet werden. Denken Sie daran, your_email_address
durch Ihre persönliche E-Mail-Adresse zu ersetzen. Wenn Sie fertig sind, speichern und schließen Sie die Datei.
Um die Änderung anzuwenden, führen Sie den folgenden Befehl aus:
- sudo newaliases
Durch Ausführung von newaliases
wird eine Datenbank mit Aliassen erstellt, die der Befehl mail
verwendet. Die Aliasse werden aus der Konfigurationsdatei übernommen, die Sie gerade bearbeitet haben.
Testen Sie, ob E-Mails an root
gesendet werden, indem Sie Folgendes ausführen:
- echo "This is the body of the email" | mail -s "This is the subject line" root
Sie sollten die E-Mail unter Ihrer E-Mail-Adresse erhalten. Wenn Sie sie dort nicht finden können, sehen Sie in Ihrem Spam-Ordner nach.
Im diesem Schritt haben Sie eine Weiterleitung systemgenerierter Nachrichten an Ihre E-Mail-Adresse eingerichtet. Sie aktivieren jetzt die Nachrichtenverschlüsselung, damit alle E-Mails, die Ihr Server versendet, sicher vor Manipulation bei der Übertragung sind und als legitimer betrachtet werden.
Sie aktivieren jetzt SMTP-Verschlüsselung, indem Sie ein kostenloses TLS-Zertifikat von Let’s Encrypt für Ihre Domäne anfordern (mit Certbot) und Postfix so konfigurieren, dass das Zertifikat zum Senden von Nachrichten verwendet wird.
Ubuntu enthält Certbot in seinem standardmäßigen Packet-Repository; es kann aber sein, dass Certbot nicht auf dem neuesten Stand ist. Stattdessen fügen Sie das offizielle Repository hinzu, indem Sie den folgenden Befehl ausführen:
- sudo add-apt-repository ppa:certbot/certbot
Drücken Sie, wenn Sie dazu aufgefordert werden, zum Akzeptieren ENTER
. Aktualisieren Sie dann den Cache des Paketmanagers auf Ihrem Server:
- sudo apt update
Installieren Sie abschließend die neueste Version von Certbot:
- sudo apt install certbot -y
Im Rahmen der Ersteinrichtung des Servers in den Voraussetzungen haben Sie ufw
, die unkomplizierte Firewall, installiert. Sie müssen sie so konfigurieren, dass der HTTP-Port 80
zugelassen wird, damit die Verifizierung der Domäne abgeschlossen werden kann. Führen Sie den folgenden Befehl aus, um ihn zu aktivieren:
- sudo ufw allow 80
Die Ausgabe sieht in etwa folgendermaßen aus:
OutputRule added
Rule added (v6)
Nachdem der Port nun geöffnet ist, führen Sie Certbot aus, um ein Zertifikat zu erhalten:
- sudo certbot certonly --standalone --rsa-key-size 4096 --agree-tos --preferred-challenges http -d your_domain
Dieser Befehl weist Certbot dazu an, Zertifikate mit einer RSA-Schlüsselgröße von 4096 Bits auszugeben, einen temporären Standalone-Webserver (--standalone
) zur Verifizierung auszuführen und die Prüfung über Port 80
(--preferred-challenges http
) vorzunehmen. Denken Sie daran, your_domain
durch Ihre Domäne zu ersetzen, bevor Sie den Befehl ausführen, und geben Sie bei Aufforderung Ihre E-Mail-Adresse ein.
Die Ausgabe sieht ungefähr wie folgt aus:
OutputSaving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for `your_domain`
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your cert will expire on 2020-07-11. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Wie in den Anmerkungen erwähnt, wurden Ihr Zertifikat und Ihre private Schlüsseldatei unter /etc/letsencrypt/live/your_domain
gespeichert.
Nachdem Sie über das Zertifikat verfügen, öffnen Sie nun main.cf
zum Bearbeiten:
- sudo nano /etc/postfix/main.cf
Suchen Sie nach dem folgenden Abschnitt:
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
Ändern Sie ihn, damit er folgendermaßen aussieht, indem Sie your_domain
ggf. durch Ihre Domäne ersetzen, um Ihre TLS-Einstellungen für Postfix zu aktualisieren:
# TLS parameters
smtpd_tls_cert_file=/etc/letsencrypt/live/your_domain/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/your_domain/privkey.pem
smtp_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
Wenn Sie damit fertig sind, speichern und schließen Sie die Datei.
Wenden Sie die Änderungen durch Neustart von Postfix an:
- sudo systemctl restart postfix
Versuchen Sie nun, erneut eine E-Mail zu senden:
- echo "This is the body of an encrypted email" | mail -s "This is the subject line" your_email_address
Überprüfen Sie dann die von Ihnen angegebene E-Mail-Adresse. Es ist möglich, dass Sie die Nachricht sofort in Ihrem Posteingang sehen, da E-Mail-Anbieter verschlüsselte Nachrichten deutlich seltener als Spam markieren.
Sie können die technischen Informationen über die E-Mail-Nachricht in Ihrem Client prüfen, um zu sehen, ob die Nachricht tatsächlich verschlüsselt wurde.
Sie verfügen nun über einen Send-Only-E-Mail-Server, der von Postfix bereitgestellt wird. Das Verschlüsseln aller ausgehenden Nachrichten ist ein guter erster Schritt, damit E-Mail-Anbieter Ihre Nachrichten nicht von vornherein als Spam markieren. Wenn Sie das in einem Entwicklungsszenario tun, sollte diese Maßnahme ausreichen.
Wenn Ihr Anwendungsfall jedoch darin besteht, E-Mails an potenzielle Websitebenutzer zu senden (wie Bestätigungs-E-Mails für die Anmeldung bei einem Nachrichtenforum), sollten Sie sich mit der Einrichtung von SPF-Einträgen befassen, damit die E-Mails Ihres Servers mit noch höherer Wahrscheinlichkeit als legitim gelten.
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!