Einrichten eines Mail-Relays mit Postfix und Mailgun unter Ubuntu 16.04

Einführung

Das Einrichten eines SMTP-Servers ist keine Aufgabe für schwache Nerven. Sicherheit ist nicht nur ein Hauptanliegen, auch die Zustellbarkeit von E-Mails ist ein noch größeres Problem. Eine hohe Zustellbarkeit von E-Mails von einem eigenen SMTP-Server zu gewährleisten, ohne als Spam gekennzeichnet zu sein, ist aufgrund des hohen Spam-Schutzes, den die meisten E-Mail-Anbieter heutzutage bieten, nicht sehr praktikabel.

Ein Mail-Relay löst beide Probleme. Die Konfiguration ist viel einfacher als bei einem vollwertigen SMTP-Server, da Sie alle von Ihrem Server generierten E-Mails einfach an einen professionell verwalteten SMTP-Server weiterleiten. Infolgedessen sind Sie von den meisten Problemen mit der Zustellbarkeit von E-Mails befreit.

Es gibt zwei Arten von Mail-Relays:open undclosed. Ein Open-Mail-Relay leitet E-Mails von externen Quellen sowie von internen Servern weiter. Diese Art von Relais ist für den Missbrauch durch Spammer geeignet. Ein geschlossenes Relay leitet nur die Nachrichten weiter, die intern auf unserem Server und im internen Netzwerk generiert wurden.

Während Sie jeden externen SMTP-Server zum Weiterleiten von E-Mails verwenden können, bietet Mailgun viele Vorteile gegenüber anderen SMTP-Servern. Es ist kostenlos für bis zu 10.000 E-Mails pro Monat, unglaublich zuverlässig und ermöglicht das Senden von E-Mails von einer separaten Domain. Indem Sie eine andere Domain als Ihre normale Geschäfts-E-Mail-Domain verwenden, fügen Sie eine weitere Schutzstufe hinzu, damit Sie nicht versehentlich auf die schwarze Liste gesetzt werden.

In diesem Tutorial werden Sie durch den Prozess des Erstellens und Einrichtens eines kostenlosen Mailgun-Kontos und einer Subdomain, des Einrichtens der erforderlichen DigitalOcean-DNS-Einträge und des Einrichtens eines geschlossenen Mail-Relays mithilfe von Postfix geführt.

Voraussetzungen

Bevor Sie mit diesem Handbuch beginnen, benötigen Sie Folgendes:

  • Ein Ubuntu 16.04-Server, der von folgendenthe Ubuntu 16.04 initial server setup guide eingerichtet wurde, einschließlich eines Sudo-Nicht-Root-Benutzers und einer Firewall.

  • Ein registrierter Domainname wieexample.com, der auf die Nameserver von DigitalOcean verweist. Sie können dies einrichten, indem Sie dem TutorialHow to Set Up a Host Name with DigitalOcean folgen.

  • Ein reguläres E-Mail-Konto, über das Sie Textnachrichten empfangen können, die Sie senden.

[[Schritt-1 -—- Einrichten eines Mailgun-Kontos]] == Schritt 1 - Einrichten eines Mailgun-Kontos

Erstellen Sie ein neues Konto beihttps://mailgun.com/signup. Sobald Ihre Registrierung abgeschlossen ist, melden Sie sich an, gehen Sie zudashboard und klicken Sie auf den LinkDomains im Menü oben auf der Seite.

Sie sehen eine Sandbox-Domain, die Mailgun für Sie erstellt hat.

Initial Sandbox Domain

Erstellen Sie anstelle der Sandbox eine Subdomain für Mailgun, indem Sie auf die SchaltflächeAdd New Domain klicken. Sie können diese Subdomain beliebig benennen, z. B.mailgun.example.com oderbulkemail.example.com. In diesem Tutorial werden in den Beispielenmg.example1.com verwendet.

Nach dem Erstellen Ihrer Subdomain sollte die Seite vonDomainswie folgt aussehen:

After Adding SubDomain

Klicken Sie als Nächstes auf Ihrer Subdomain-Seite auf den Link für den Namen. Sie sehen drei Sätze von DNS-Einträgen, wie in der folgenden Abbildung dargestellt:

SubDomain’s DNS records

Sie müssen diese DNS-Einträge für Ihre Domain in Ihrem DigitalOcean-Dashboard hinzufügen. Die DNS-Einträge fürSending undTracking sind erforderlich, Sie können jedoch die Einträge fürReceiving ignorieren. Sie verwenden die Informationen auf dieser Seite, um im nächsten Schritt die richtigen DNS-Einträge zu erstellen. Lassen Sie diese Seite also geöffnet, damit Sie die Werte für diese Einträge kopieren können.

[[Schritt-2 - Einrichten von DNS-Einträgen in Digitalocean]] == Schritt 2 - Einrichten von DNS-Einträgen in DigitalOcean

Melden Sie sich bei Ihrem DigitalOcean-Konto an und klicken Sie in Ihrem Dashboard auf das MenüNetworking. Geben Sie dann die in Mailgun erstellte Subdomain in das FeldDomain ein und wählen Sie das Droplet aus, für das Sie das Mail-Relay konfigurieren möchten. Drücken Sie dann die TasteCreate Record.

Adding SubDomain to DigitalOcean

Die neue Domain wird in Ihrer Domainliste angezeigt. Klicken Sie darauf, um die Bearbeitungsseite anzuzeigen. Zusätzlich zu den bereits erstellten Datensätzen müssen Sie die beiden von Mailgun angegebenenTXT-Datensätze und denCNAME-Datensatz hinzufügen. Sie können optional auch dieMX-Datensätze hinzufügen, diese werden jedoch für das Mail-Relay nicht benötigt. Beziehen Sie sich auf diesen Beispiel-Screenshot, wenn Sie Ihre Datensätze erstellen:

DNS Records that need to be added

Fügen Sie die folgenden Datensätze hinzu, und verwenden Sie dabei die Informationen von Mailgun, die Sie in Schritt 1 erhalten haben:

  • Erstellen Sie einen neuenCNAME-Datensatz:

    • Geben Sieemail fürname undmailgun.org. fürhostname ein. Der Zeitraum am Ende vonhostname ist erforderlich.

  • Erstellen Sie einenTXT-Datensatz:

    • Geben Sie@ fürname ein.

    • Geben Sie fürText den Text für den erstenTXT-Datensatz von Mailgun in doppelten Anführungszeichen ein. In diesem Beispiel ist es"v=spf1 include:mailgun.org ~all", aber Sie sollten dies überprüfen, indem Sie sich den von Mailgun bereitgestellten Wert ansehen.

  • Erstellen Sie einen weiterenTXT-Datensatz:

    • Geben Sie den fett gedruckten Teil vonHostname aus dem zweiten von Mailgun bereitgestelltentxt-Datensatz für das Feldname ein. In diesem Beispiel ist esmallo._domainkey, aber es kann für Ihre Mailgun-Domain anders sein.

    • Kopieren Sie fürtext den gesamten von Mailgun bereitgestellten Wert und setzen Sie ihn in doppelte Anführungszeichen. Es sollte wie"k=rsa; p=MIGfMA0G...AQAB" aussehen.

Mailgun muss Ihre Domain-Einstellungen validieren, bevor Sie fortfahren können. Sie können entweder auf die Aktualisierung der DNS-Einträge warten oder in Mailgun zu Ihrer Domain-Seite zurückkehren, den AbschnittDomain Verification & DNS suchen und auf die SchaltflächeCheck DNS Records Now klicken. Wenn Ihre DNS-Einträge ausgecheckt werden, wird grün angezeigt Kontrollkästchen der validierten Datensätze.

Das Aktualisieren von DNS-Einträgen kann einige Zeit in Anspruch nehmen. Die Aktualisierungszeiten können zwischen einigen Minuten und Stunden variieren.

[.note] #Note: Wenn Ihre DNS-Einträge in Mailgun nicht überprüft werden, überprüfen Sie die eingegebenen Werte, um sicherzustellen, dass sie mit denen auf Ihrer Mailgun-Domain-Seite übereinstimmen. Denken Sie daran, die Datensatzwerte vonTXTin doppelte Anführungszeichen (“) zu setzen. Außerdem sollte der Name des ersten (kürzeren)TXT-Datensatzes@ sein, nicht die von Mailgun bereitgestelltenhostname.
#

Während Sie auf das DNS-Update warten, können Sie Ihre SMTP-Anmeldeinformationen von Ihrer MailGun-Domänenseite anzeigen und kopieren. Sie benötigen diese Werte in Kürze. Im AbschnittDomain Information wird Ihr Benutzername nebenDefault SMTP Login und das Kennwort nebenDefault Password aufgeführt. Sie können diese Werte bei Bedarf auch ändern, indem Sie auf den LinkManage SMTP credentials klicken.

Lassen Sie uns als nächstes Postfix einrichten.

[[Schritt 3 - Installieren und Konfigurieren von Postfix]] == Schritt 3 - Installieren und Konfigurieren von Postfix

Wir werden den integrierten Pacakge-Manager verwenden, um Postfix zu installieren.

Stellen Sie als Nicht-Root-Benutzer eine Verbindung zu Ihrem Server her:

ssh sammy@your_server_ip

Normalerweise werden bei der Postfix-Installation einige interaktive Bildschirme verwendet, um Sie zur Eingabe von Informationen aufzufordern. Um mögliche Fehler während dieses Setups zu vermeiden, sollten Sie diese Informationen vor dem Start des Installationsvorgangs vorkonfigurieren.

Konfigurieren Sie zunächst Postfix als Mail-Relay:

sudo debconf-set-selections <<< "postfix postfix/main_mailer_type select Satellite system"

Dann teilen Sie Postfix mit, dass der Hostname Ihres Servers für den Hostnamen des Mailservers verwendet werden soll:

sudo debconf-set-selections <<< "postfix postfix/mailname string $HOSTNAME"

Konfigurieren Sie anschließend Postfix so, dass der SMTP-Server von Mailgun für weitergeleitete E-Mails verwendet wird:

sudo debconf-set-selections <<< "postfix postfix/relayhost string smtp.mailgun.org"

Installieren Sie Postfix mit diesen Konfigurationen:

sudo apt -y install postfix

Damit Postfix eine Verbindung mit Mailgun herstellen kann, müssen Sie eine Anmeldeinformationsdatei mit dem Benutzernamen und dem Kennwort für die Mailgun-Unterdomäne erstellen, die Sie in Schritt 2 erhalten haben.

[.note] #Hinweis: Jede Mailgun-Subdomain verfügt über eigene Anmeldeinformationen. Weitere Informationen finden Sie unterWhere Can I Find My API key and SMTP Credentials in der Mailgun-Dokumentation.
#

Erstellen und bearbeiten Sie eine neue Anmeldeinformationsdatei:

sudo nano /etc/postfix/sasl_passwd

Fügen Sie der neuen Datei die folgende Zeile hinzu:

/etc/postfix/sasl_password

smtp.mailgun.org your_mailgun_smtp_user@your_subdomain_for_mailgun:your_mailgun_smtp_password

Schützen Sie als Nächstes die Datei, indem Sie die Lese- und Schreibberechtigungen aufroot beschränken und mit dem Befehlpostmap die Nachschlagetabellen von Postfix aktualisieren, um diese neue Datei zu verwenden:

sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd

Verbessern Sie als Nächstes die Sicherheit des Mail-Relays, indem Sie anonyme Anmeldungen verhindern und die Anmeldeinformationsdatei angeben, um sichere Anmeldungen für Mailgun bereitzustellen. Bearbeiten Sie die Postfix-Konfigurationsdatei:

sudo nano /etc/postfix/main.cf

und füge diese Zeilen am Ende der Datei hinzu:

/etc/postfix/main.cf

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = AUTH LOGIN

[.Hinweis]##

Hinweis: Postfix verfügt über verschiedene Sicherheitsmaßnahmen, um die Verwendung Ihres Mail-Relays durch Spambots zu verhindern (weitere Informationen finden Sie unterhttp://www.postfix.org/SMTPDACCESSREADME.html). Insbesondere beschränken diese beiden Zeilen in "main.cf" die Verwendung des Mail-Relays an Ihr lokales Netzwerk und die zuvor definierten SASL-autorisierten Benutzer.

/etc/postfix/main.cf

smtpd_relay_restrictions = permit_mynetworks
permit_sasl_authenticated defer_unauth_destination

Starten Sie nun Postfix neu, um die neue Konfiguration zu laden:

sudo systemctl restart postfix

Sie sollten auch sicherstellen, dass keine eingehenden SMTP-Ports geöffnet sind, indem Sie diesen Befehl ausführen, um den Status Ihrer Firewall zu überprüfen:

sudo ufw status

Die Ausgabe sollte ungefähr so ​​aussehen:

OutputTo                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)

Die Ausgabe solltenot einen dieser Ports in der SpalteTo enthalten:25,465 oder587. Diese Ports werden für den SMTP-Zugriff verwendet, und Sie möchten nicht zulassen, dass eingehender Datenverkehr Ihr Mail-Relay verwendet. Wenn diese Ports in der Ausgabe angezeigt werden, überprüfen Siethis tutorial, um zu erfahren, wie Sie Regeln entfernen oder den Zugriff explizit verweigern.

Normalerweise muss der Hostname Ihres Servers mit demfully-qualified domain name (FQDN) Ihrer Website übereinstimmen, um einen SMTP-Server mit Postfix einzurichten. Wenn der Hostname Ihres Servers ein FQDN ist, können Sie mit Schritt 5 fortfahren. Ansonsten lesen Sie weiter.

[[Schritt 4 - Einrichten der Domänenzuordnung]] == Schritt 4 - Einrichten der Domänenzuordnung

Da wir Mailgun für unseren SMTP-Server anstelle von Postfix verwenden, muss der Hostname Ihres Servers nicht mit dem FQDN übereinstimmen, den Sie für Ihre E-Mail verwenden. Das ist sehr verbreitet. Wenn Ihr Server beispielsweise ein Datenbankserver oder ein Überwachungsserver ist, verfügt er möglicherweise überhaupt nicht über einen vollqualifizierten Domänennamen. Wir können einmapping table einrichten, das eine E-Mail-Adresse durch eine andere ersetzt.

In diesem Fall ordnen wir Ihr Linux-Benutzer-E-Mail-Konto einem beliebigen Benutzernamen in Ihrer MailGun-Domain zu.

Erstellen und bearbeiten Sie eine neue Zuordnungstabelle, indem Sie die Datei/etc/postfix/generic erstellen:

sudo nano /etc/postfix/generic

Fügen Sie diese Zeile der Datei hinzu, die den Benutzer vonsammyauf Ihrem Computer Mailgun zuordnet.

/etc/postfix/generic

sammy@your_hostname sender@your_subdomain_for_mailgun

Sie könnensender durch einen beliebigen Namen ersetzen, z. B.wordpress oderno-reply. Der einzige Teil, der wirklich wichtig ist, istyour_subdomain_for_mailgun. Dies sollte Ihre Mailgun-Subdomain sein, die Sie in Schritt 1 definiert haben.

Sie können mehrere Benutzer angeben, indem Sie weitere Zeilen wie diese erstellen.

Fügen Sie diese Zuordnung nun mit dem Befehlpostmap zu den Postfix-Nachschlagetabellen hinzu:

sudo postmap /etc/postfix/generic

Bearbeiten Sie dann Ihre Postfix-Konfigurationsdatei, um die Zuordnungsdatei hinzuzufügen:

sudo nano /etc/postfix/main.cf

Fügen Sie diese Zeile am Ende der Datei hinzu:

/etc/postfix/main.cf

smtp_generic_maps = hash:/etc/postfix/generic

Starten Sie Postfix abschließend neu, um die Änderungen zu übernehmen:

sudo systemctl restart postfix

Testen Sie das Mail-Relay, um sicherzustellen, dass alles richtig konfiguriert ist.

[[Schritt 5 - Testen Ihres Mail-Relays] == Schritt 5 - Testen Ihres Mail-Relays

Um Ihr neues Mail-Relay zu testen, senden Sie eine Nachricht von Ihrem Server an Ihre persönliche E-Mail-Adresse. Installieren Siemailutils, damit Sie schnell eine Test-E-Mail senden können.

sudo apt -y install mailutils

Verwenden Sie dannmailutils, um eine Nachricht von Ihrem aktuellen Benutzer auf dem Server zu verfassen und an Ihr persönliches E-Mail-Konto zu senden.

mail -s "Test mail" your_email_address <<< "A test message using Mailgun"

Sie können die Nachricht beliebig ändern.

Überprüfen Sie Ihren E-Mail-Client und prüfen Sie, ob Sie Ihre Testnachricht erhalten haben. Wenn ja, dann herzlichen Glückwunsch zum erfolgreichen Einrichten eines Mail-Relays. Wenn nicht, lesen Sie weiter, um Fehler zu beheben.

[[Schritt 6 - Fehlerbehebung bei Ihrem Mail-Relay]] == Schritt 6 - Fehlerbehebung bei Ihrem Mail-Relay

Es gibt zwar eine Reihe von Problemen, die auftreten können, z. B. Fehler in den vorherigen Schritten. Es gibt jedoch einige häufig auftretende Probleme.

Stellen Sie zunächst sicher, dass Mailgun Ihre DNS-Einträge überprüft hat. Nichts kann passieren, bis dieser Schritt erfolgreich ist. Überprüfen Sie die Benutzeroberfläche von Mailgun und stellen Sie sicher, dass die Domain überprüft wurde.

Überprüfen Sie als Nächstes Ihre Anmeldeinformationsdatei (/etc/postfix/sasl_passwd). Stellen Sie sicher, dass Ihr Benutzername und Ihr Passwort mit denen der entsprechenden Unterdomäne in Mailgun übereinstimmen. Verwenden Sie nicht Ihre Mailgun-Anmeldeinformationen, da diese nicht funktionieren. Verwenden Sie die spezifischen Anmeldeinformationen, die Mailgun für Ihre Subdomain bereitstellt.

Überprüfen Sie Ihre E-Mail-Protokolle auf hilfreiche Fehlermeldungen. Es gibt zwei Orte, die Sie überprüfen möchten. Überprüfen Sie zunächst das Protokoll auf Ihrem Server, das Sie in der Datei/var/log/mail.log finden. Sie können die neuesten Einträge mit anzeigen

tail -f /var/log/mail.log

Dies zeigt die letzten Zeilen Ihrer Protokolldatei an, "folgt" aber auch der Ausgabe, was bedeutet, dass alle neuen Protokolleinträge angezeigt werden, wenn sie in das Protokoll geschrieben werden. Suchen Sie in der Ausgabe nach Fehlermeldungen, mit denen Sie Probleme diagnostizieren können. Beispielsweise zeigt ein falsches Passwort für Mailgun diesen Fehler an:

Output> Nov 1 16:07:45 cart-1268 postfix/smtp[30082]: 0E8062038A: to=, relay=smtp.mailgun.org[173.203.37.114]:25, delay=2.3, delays=0.02/0/2.3/0, dsn=4.7.0, status=deferred (SASL authentication failed; server smtp.mailgun.org[173.203.37.114] said: 535 5.7.0 Mailgun is not loving your login or password)

Zusätzlich zu Ihrem Server protokolliert Mailgun auch Transaktionen. Besuchen Sie Ihr Mailgun-Dashboard und wählen Sie das MenüLogsaus, um eventuell aufgetretene Fehlermeldungen anzuzeigen, die die Zustellung der Nachricht verhindert haben.

Wenn der Hostname Ihres Servers kein FQDN ist, stellen Sie sicher, dass Sie Schritt 4 abgeschlossen haben, um Zuordnungen für Ihre Benutzer zu erstellen, damit diese Nachrichten senden können.

Fazit

Herzlichen Glückwunsch zum Einrichten Ihres ersten E-Mail-Relays mit Mailgun. Sie haben jetzt eine sichere Methode zum Senden aller Arten von E-Mails von Ihrem Server, von der internen Kommunikation über die Aufgabenergebnisse voncronbis hin zu Kunden-Newslettern oder Nachrichten aus Ihrer Webanwendung.

Wenn Sie zusätzliche Server zum Senden von E-Mails verwenden möchten, müssen Sie die Schritte 3 und 4 auf jedem Server erneut ausführen. Sie können dieselbe MailGun-Domain für beliebig viele Server wiederverwenden. Sie können auch mehrere Domains einrichten, um Ihre E-Mail-Adresse nach Verwendungszweck zu unterscheiden.

Ein häufiges Szenario besteht darin, zwei Domänen zu verwenden. eine für interne Server-Mail und die andere für Bulk-Mailing. Interne Servermail ist alles, was von einem der Serverprogramme gesendet werden kann, z. B. von einercron-Aufgabe oder von Wordpress. Massenpost ist, wenn Sie eine Nachricht an eine ganze Mailingliste senden. Diese Art von E-Mail ist aufgrund von Spam besonders anfällig für das Sperren von E-Mails. Daher möchten Sie wahrscheinlich eine Domain verwenden, die Sie verwerfen können, wenn sie blockiert wird, während Ihre anderen Domains erhalten bleiben. Stellen Sie in jedem Fall sicher, dass Sie beim Versenden von Massenpost gute E-Mail-Praktiken anwenden. Weitere Informationen finden Sie unterThe Art of Inboxing.

Um zusätzliche E-Mail-Domänen hinzuzufügen, führen Sie die Schritte 1 und 2 für jede neue Domäne erneut aus und bearbeiten Sie dann/etc/postfix/sasl_passwd und/etc/postfix/generic nach Bedarf. Die grundlegende Postfix-Konfiguration bleibt unverändert.

Viel Spaß beim mailen!

Related