Der Autor hat den kostenlosen Open-Source-Fonds ausgewählt, um eine Spende als Teil des Write for DOnations-Programms zu erhalten.
Einleitung
Postfix ist ein mail transfer agent (MTA), eine Anwendung zum senden und empfangen von E-Mail. Es kann so konfiguriert werden, dass es nur zum Senden von E-Mails über eine lokale Anwendung verwendet werden kann., Dies ist nützlich in Situationen, in denen Sie regelmäßig E-Mail-Benachrichtigungen von Ihren Apps senden müssen oder einfach viel ausgehenden Datenverkehr haben, den ein Drittanbieter-E-Mail-Dienstanbieter nicht zulässt. Es ist auch eine leichtere Alternative zum Ausführen eines ausgewachsenen SMTP-Servers unter Beibehaltung der erforderlichen Funktionalität.
In diesem Tutorial installieren und konfigurieren Sie Postfix als reinen Send-SMTP-Server. Sie werden auch kostenlose TLS-Zertifikate von Let ‚ s Encrypt für Ihre Domain anfordern und die ausgehenden E-Mails mit ihnen verschlüsseln.
Voraussetzungen
- Ein Ubuntu 18.,04 server einrichten mit dem ersten Server-Setup mit Ubuntu 18.04, einschließlich der Erstellung eines Sudo-Nicht-Root-Benutzers.
- Ein vollständig registrierter Domainname. In diesem Tutorial wird
your_domain
verwendet. Sie können einen Domainnamen auf Namecheap erwerben, einen kostenlosen auf Freenom erhalten oder den Domain-Registrar Ihrer Wahl verwenden. - Ein DNS-Eintrag mit
your_domain
, der auf die öffentliche IP-Adresse Ihres Servers verweist. Sie können dieser Einführung in DigitalOcean DNS folgen, um Details zum Hinzufügen zu erhalten.,
Hinweis: Der Hostname Ihres Servers und der Name Ihres Droplets müssen mit your_domain
übereinstimmen, da DigitalOcean automatisch PTR-Datensätze für die IP-Adresse des Droplets entsprechend seinem Namen festlegt.
Sie können den Hostnamen des Servers überprüfen, indem Sie hostname
an der Eingabeaufforderung eingeben. Die Ausgabe sollte mit dem Namen übereinstimmen, den Sie dem Tröpfchen beim Erstellen gegeben haben.
Schritt 1-Installieren von Postfix
In diesem Schritt installieren Sie Postfix., Der schnellste Weg ist die Installation desmailutils
– Pakets, das Postfix mit einigen zusätzlichen Programmen bündelt, mit denen Sie das Senden von E-Mails testen.
Aktualisieren Sie zuerst die Paketdatenbank:
- sudo apt update
Installieren Sie Postfix, indem Sie den folgenden Befehl ausführen:
- sudo apt install mailutils
Am Ende des Installationsprozesses wird Ihnen das Postfix-Konfigurationsfenster angezeigt:
Die die Standardoption ist Internet Site
., Das ist die empfohlene Option für Ihren Anwendungsfall, also drücken Sie TAB
und dann . Wenn Sie nur den Beschreibungstext sehen, drücken Sie TAB
, um OK
und dann auszuwählen.,
Wenn es nicht automatisch angezeigt wird, führen Sie den folgenden Befehl aus, um es zu starten:
- sudo dpkg-reconfigure postfix
Danach erhalten Sie eine weitere Konfigurationsaufforderung bezüglich des System-Mail-Namens:
Der System-Mail-Name muss mit dem Namen übereinstimmen, den Sie Ihrem Server zugewiesen haben, als Sie ihn erstellt haben. Wenn Sie fertig sind, drücken Sie TAB
, gefolgt von .
Sie haben jetzt Postfix installiert und können mit der Konfiguration beginnen.,
Schritt 2-Konfigurieren von Postfix
In diesem Schritt konfigurieren Sie Postfix so, dass E—Mails nur von dem Server gesendet und empfangen werden, auf dem sie ausgeführt werden-dh von localhost
.
Dazu muss Postfix so konfiguriert werden, dass es nur auf der Loopback-Schnittstelle, der virtuellen Netzwerkschnittstelle, die der Server für die interne Kommunikation verwendet, abhört. Um die Änderungen vorzunehmen, müssen Sie die Haupt-Postfix-Konfigurationsdatei mit dem Namen main.cf
bearbeiten, die unter etc/postfix
gespeichert ist.,
Öffnen Sie es zur Bearbeitung mit Ihrem bevorzugten Texteditor:
- sudo nano /etc/postfix/main.cf
Suchen Sie die folgenden Zeilen:
. . .mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = all. . .
Setzen Sie den Wert der Einstellung auf loopback-only
:
. . .mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = loopback-only. . .
Eine weitere Direktive, die Sie ändern müssen, ist mydestination
, die verwendet wird, um die Liste der Domänen anzugeben, die über den local_transport
mail delivery transport geliefert werden., Standardmäßig sind die Werte ähnlich wie folgt:
. . .mydestination = $myhostname, your_domain, localhost.com, , localhost. . .
Ändern Sie die Zeile so:
. . .mydestination = localhost.$mydomain, localhost, $myhostname. . .
Wenn Ihre Domain tatsächlich eine Subdomain ist und Sie möchten, dass die E-Mail-Nachrichten so aussehen, als ob sie von der Hauptdomäne gesendet würden, sie können die folgende Zeile am Ende von main.cf
hinzufügen:
...masquerade_domains = your_main_domain
Die optionale masquerade_domains
– Einstellung gibt an, für welche Domänen der Subdomain-Teil in der E-Mail-Adresse entfernt wird.
Wenn Sie fertig sind, speichern und schließen Sie die Datei.
Hinweis: Wenn Sie mehrere Domains auf einem einzelnen Server hosten, können die anderen Domains auch mit der mydestination
Direktive 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 nur E-Mails von Ihrem Server gesendet werden., Sie werden es jetzt testen, indem Sie eine Beispielnachricht an eine E-Mail-Adresse senden.
Schritt 3-Testen des SMTP-Servers
In diesem Schritt testen Sie, ob Postfix E-Mails mit dem Befehl mail
an ein externes E-Mail-Konto senden kann, das Teil des Pakets mailutils
ist, 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 es nicht da ist, überprüfen Sie Ihren Spam-Ordner. Zu diesem Zeitpunkt sind alle von Ihnen gesendeten E-Mails unverschlüsselt, sodass Dienstanbieter glauben, dass es sich wahrscheinlich um Spam handelt. Sie richten die Verschlüsselung später in Schritt 5 ein.,
Wenn Sie einen Fehler vom Befehl mail
erhalten oder nach längerer Zeit keine Nachricht erhalten haben, überprüfen Sie, ob die von Ihnen bearbeitete Postfix-Konfiguration gültig ist und dass der Name und der Hostname Ihres Servers auf Ihre Domäne festgelegt sind.
Beachten Sie, dass bei dieser Konfiguration die Adresse im Feld From
für die von Ihnen gesendeten Test-E-Mails die Form von your_user_name@your_domain
hat, wobei your_user_name
der Benutzername des Serverbenutzers ist, unter dem Sie den Befehl ausgeführt haben.,
Sie haben jetzt 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.
Schritt 4-Weiterleitung der Systempost
In diesem Schritt richten Sie die E-Mail-Weiterleitung für den Benutzer root
ein, sodass vom System generierte Nachrichten, die an Ihren Server gesendet werden, an eine externe E-Mail-Adresse weitergeleitet werden.
Die/etc/aliases
– Datei enthält eine Liste alternativer Namen für E-Mail-Empfänger., Öffnen Sie es zur Bearbeitung:
- sudo nano /etc/aliases
In seinem Standardzustand sieht es so aus:
Die einzige vorhandene Direktive gibt an, dass vom System generierte 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.
Damit die Änderung wirksam wird, führen Sie den folgenden Befehl aus:
- sudo newaliases
Wenn Sie newaliases
ausführen, wird eine Datenbank mit Aliasnamen erstellt, die der Befehl mail
verwendet, die aus der gerade bearbeiteten Konfigurationsdatei stammen.
Testen Sie, ob das Senden von E-Mails an root
funktioniert, 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 an Ihre E-Mail-Adresse erhalten. Wenn es nicht da ist, überprüfen Sie Ihren Spam-Ordner.,
In diesem Schritt haben Sie die Weiterleitung von systemgenerierten Nachrichten an Ihre E-Mail-Adresse eingerichtet. Sie aktivieren nun die Nachrichtenverschlüsselung, sodass alle E-Mails, die Ihr Server sendet, immun gegen Manipulationen während des Transports sind und als legitimer angesehen werden.
Schritt 5-SMTP-Verschlüsselung aktivieren
Sie aktivieren nun die SMTP-Verschlüsselung, indem Sie ein kostenloses TLS-Zertifikat von Let ‚ s Encrypt für Ihre Domain anfordern (mit Certbot) und Postfix konfigurieren, um es beim Senden von Nachrichten zu verwenden.
Ubuntu enthält Certbot in ihrem Standard-Paket-Repository, aber es kann vorkommen, dass es veraltet 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 zum Akzeptieren aufgefordert werden. Aktualisieren Sie dann den Paketmanager-Cache Ihres Servers:
- sudo apt update
Schließlich installieren Sie die neueste Version von Certbot:
- sudo apt install certbot -y
Als Teil der ersten Servereinrichtung in den Voraussetzungen haben Sie ufw
, die unkomplizierte Firewall, installiert. Sie müssen es so konfigurieren, dass der HTTP-Port 80
, damit die Domänenüberprüfung abgeschlossen werden kann., Führen Sie den folgenden Befehl aus, um ihn zu aktivieren:
- sudo ufw allow 80
Die Ausgabe sieht folgendermaßen aus:
OutputRule addedRule added (v6)
Nachdem der Port 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 befiehlt Certbot, Zertifikate mit einer RSA-Schlüsselgröße von 4096 Bit auszustellen, um eine temporäre standalone-Webserver (--standalone
) zur Überprüfung und Überprüfung über Port 80
(--preferred-challenges http
)., Denken Sie daran, your_domain
durch Ihre Domäne zu ersetzen, bevor Sie den Befehl ausführen, und geben Sie Ihre E-Mail-Adresse ein, wenn Sie dazu aufgefordert werden.
Die Ausgabe ähnelt der folgenden:
OutputSaving debug log to /var/log/letsencrypt/letsencrypt.logPlugins selected: Authenticator standalone, Installer NoneObtaining a new certificatePerforming the following challenges:http-01 challenge for `your_domain`Waiting for verification...Cleaning up challengesIMPORTANT 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 Notizen beschrieben, wurden Ihr Zertifikat und Ihre private Schlüsseldatei unter /etc/letsencrypt/live/your_domain
gespeichert.
Nachdem Sie Ihr Zertifikat haben, öffnen Sie main.cf
zur Bearbeitung:
- sudo nano /etc/postfix/main.cf
Hier finden Sie den folgenden Abschnitt:
Ändern Sie es so, dass es so aussieht, und ersetzen Sie bei Bedarf your_domain
durch Ihre Domain, wodurch Ihre TLS-Einstellungen für Postfix aktualisiert werden:
Speichern und schließen Sie die Datei, sobald Sie fertig sind.
Übernehmen Sie die Änderungen, indem Sie Postfix neu starten:
- 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 unverschlüsselte Nachrichten viel eher als Spam markieren.,
Sie können die technischen Informationen zur E-Mail-Nachricht in Ihrem Client überprüfen, um festzustellen, dass die Nachricht tatsächlich verschlüsselt ist.
Sie haben jetzt einen Nur-Send-E-Mail-Server, der von Postfix unterstützt wird. Das Verschlüsseln aller ausgehenden Nachrichten ist ein guter erster Schritt für E-Mail-Anbieter, die Ihre Nachrichten nicht direkt als Spam markieren. Wenn Sie dies in einem Entwicklungsszenario tun, sollte diese Maßnahme ausreichen.,
Wenn Ihr Anwendungsfall jedoch darin besteht, E-Mails an potenzielle Site-Benutzer zu senden (z. B. Bestätigungs-E-Mails für eine Message Board-Anmeldung), sollten Sie die Einrichtung von SPF-Datensätzen prüfen, damit die E-Mails Ihres Servers noch wahrscheinlicher sind als legitim angesehen werden.