Wenn lokal Anwendungen getestet oder entwickelt werden, sollen auch E-Mails verschickt werden. Damit die E-Mails den Entwicklerrechner nicht verlassen, wird mit den folgenden Schritten ein einfacher Mail-Transfer-Agent (ssmtp) und ein Mailserver (MailDev) eingerichtet.
MailDev kann am einfachsten als Docker-Image gestartet werden:
docker run -p 1080:80 -p 1055:25 djfarrelly/maildev
Anschließend wird SSMTP in /etc/ssmtp/ssmtp.conf konfiguriert:
root=postmaster mailhub=127.0.0.1:1055 hostname=localhost.local FromLineOverride=yes
Damit PHP auch E-Mails versenden kann, wird die Einstellung mail.force_extra_parameters = -t in der entsprechenden php.ini gesetzt. Anschließend muss der Webserver oder PHP-Prozess neu gestartet werden.
Zum Testen auf der Kommandozeile dient folgender Schnipsel:
echo -n 'Subject: test\n\nTesting ssmtp' | sendmail -v tousername@example.com
Mit dem nachfolgenden Script (Quelle: https://www.conetix.com.au/support/article/simple-php-mail-test) kann der Versand per PHP getestet werden:
<?php
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
$from = "erikwegner@localhost.local";
$to = "t1@localhost.local";
$subject = "PHP Mail Test script";
$message = "This is a test to check the PHP Mail functionality";
$headers = "From:" . $from;
mail($to,$subject,$message, $headers);
echo "Test email sent";
So sieht das Ergebnis im Browser (http://localhost:1080) aus:
