Tutorial: E-Mails mit eigenem Server versenden per SMTP – Ubuntu 18.04

Leider ist das Versenden von E-Mails vom eigenem Server aus in Zeiten von Spam nicht einfach. Möchte man einen eigenen SMTP-Server betreiben, müsste man recht viele Anti-Spam-Maßnahmen implementieren um zu gewährleisten, dass eure Emails auch beim Empfänger ankommen. Dieser Aufwand ist aber oftmals viel zu hoch.

Daher empfehle ich externe SMTP-Server für den E-Mail-Versand zu nutzen. Die Einrichtung ist einfach und, sofern ihr einen vertrauenswürdigen Anbieter wie z.B. Gmail nutzt, habt ihr keine Probleme mit Spam.

In diesem Tutorial erkläre ich, wie ihr Ubuntu 18.04 (Bionic Beaver) so konfiguriert, dass vom Server aus E-Mails über einen externen SMTP-Server (z.B. von Gmail) versendet werden kann. Bei anderen Ubuntu und Linux-Versionen verläuft die Konfiguration analog.

Anschließend zeige noch, wie ihr PHP konfigurieren könnt, damit E-Mails die per mail()-Befehl gesendet werden über den SMTP-Server versendet werden kann.

Schritt 1 – Externer SMTP-Server (z.B. Gmail)

Es empfiehlt sich E-Mails über externe (vertrauenswürdige) SMTP-Server zu senden, da ansonsten die E-mails von eurem Server oft im Spamfilter landen. Bei den meisten Webhosting-Tarifen werden Postfächer mit angeboten und ihr könnt den SMTP-Server von eurem Postfach nutzen.

Damit euer Server die E-Mails über diesen SMTP-Server versendet, braucht ihr folgende Infos:

  • Serveradresse (des SMTP-Servers)
  • Benutzername
  • Passwort

Diese Infos bekommt ihr i.d.R. vom Anbieter des E-Mail-Postfaches.

Alternativ kann man auch kostenlos ein Konto bei Gmail registrieren.

GMail – Weniger sichere Apps zulassen

Der Versand per GMail klappt nur, wenn ihr in eurem Konto die Einstellung Weniger sichere Apps zulassen aktiviert. Aktiviert man diese Einstellung, dann können externe Anwendungen (sprich, euer Server) per Benutzername und Passwort über euer GMail-Konto E-Mail versenden.

Wenn ihr diese Einstellung nicht aktiviert, dann erhaltet die Fehlermeldung ssmtp: Authorization failed (534 5.7.14 https://support.google.com/mail/answer/78754 185-v6sm2071165wmy.38 – gsmtp)

Wie ihr die Einstellung weniger sichere Apps zulassen bearbeiten könnt ist hier beschrieben: Weniger sicheren Apps den Zugriff auf Ihr Konto gestatten

 

Schritt 2 – SSMTP installieren

Wir nutzen das ssmtp Package, welches es erlaubt das unter Ubuntu z.B. per Kommandozeile oder per PHP-Anwendung E-Mails über einen externen SMTP-Server versendet werden kann. Die Installation erfolgt wie folgt:

 

Schritt 3 – SSMTP konfigurieren

Um SSMTP zu konfigurieren, muss die Datei /etc/ssmtp/ssmtp.conf bearbeitet werden:

Diese befüllen wir mit folgenden Informationen (GMail als Beispiel):

Nutzt ihr einen anderen SMTP-Server, müsst ihr entsprechend mailhub, AuthUser und AuthPass anpassen.

Schritt 4 – E-Mail Versand testen

Mit folgendem Befehl könnt ihr die richtige Konfiguration von ssmtp testen. Sofern alles geklappt hat, sollte [email protected] eine E-Mail erhalten:

 

Schritt 5 – PHP für den E-Mail-Versand konfigurieren

SSMTP lässt sich verwenden, damit PHP-Anwendungen wie z.B. WordPress mittels dem PHP-Mail-Befehl E-Mails versenden kann. Hierzu müsst ihr die php.ini-Datei anpassen.

Den Pfad der php.ini-Datei lässt sich aus der phpinfo.php Datei entnehmen. Wenn ihr dem Artikel Tutorial: Apache, MySQL, PHP (LAMP) auf Ubuntu 18.04 installieren gefolgt seid und PHP-fpm installiert habt, könnt ihr die php.ini-Datei wie folgt bearbeiten (7.2 ggf. durch eure PHP-Version austauschen):

Sucht in dieser Datei nach sendmail_path und passt diesen Abschnitt wie folgt an:

Kommentiert  die Einstellungen SMTP und smtp_port aus, indem ihr ein ; an den Satzanfang stellt.

Danach müsst ihr sendmail_path auf /usr/sbin/ssmtp -t setzen.

Zum Anschluss muss PHP neu gestartet werden:

Falls PHP nicht als fpm läuft, sondern als Apache-Modul, muss der Apache-Server neu gestartet werden:

Kontrolliert anschließend in der phpinfo.php-Datei ob die Einstellung sendmail_path korrekt auf  /usr/sbin/ssmtp -t  verweist: