Lokaler Mailversand
Zur Überprüfung, ob der Mailversand des Postfix-Dogus funktioniert, kann MailHog verwendet werden. MailHog ist ein Tool zum Testen von E-Mails in einer lokalen Entwicklungsumgebnung. MailHog richtet einen lokalen Pseudo-SMTP-Server ein.
Einrichtung von MailHog auf dem Host
Kurz zusammengefasst wird MailHog lokal auf dem Host-Rechner als Docker-Container ausgeführt und im lokalen CES als Relay-Host des Postfix-Dogus eingetragen.
Konkret müssen folgende Schritte ausgeführt werden:
-
MailHog auf dem Host-Rechner als Docker-Container ausführen:
docker run -d -p 1025:1025 -p 8025:8025 mailhog/mailhog -
MailHog im lokalen CES als Relay-Host des Postfix-Dogus setzen:
etcdctl set /config/postfix/relayhost 192.168.56.1:1025 -
Postfix-Dogu über die cesapp entfernen und neu erzeugen
cesapp recreate postfix -
Postfix-Dogu starten
cesapp start postfix -
In die bash des Dogus wechseln
docker exec -it postfix bash -
Mail versenden
sendmail -t testmail@cloudogu.de Text 1234 <strg>+<d> - In Web-Oberfläche vom MailHog -
localhost:8025- Mail-Empfang prüfen
Einrichtung von MailHog im CES
Mit dem folgenden Skript wird MailHog im CES installiert. Anschließend kann die Weboberfläche von MailHog über das Warp-Menü aufgerufen werden.
etcdctl set dogu/mailhog/1.0.0-1 '{"Name": "official/mailhog","Version": "1.0.0-1","DisplayName": "Mailhog","Description": "Mailhog Dogu","Category": "Administration Apps","Tags": ["webapp","warp"],"Logo": "","URL": "https://github.com/cloudogu","Image": "registry.cloudogu.com/official/mailhog","Dependencies": ["nginx"],"OptionalDependencies": null}' && \
etcdctl set dogu/mailhog/current 1.0.0-1 && \
docker run -d -e MH_UI_WEB_PATH=mailhog -p 25:1025 -p 8025:8025 --name mailhog --net cesnet1 mailhog/mailhog && \
MAILHOG_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mailhog) && \
etcdctl set services/mailhog/registrator:mailhog:8025 "{\"name\":\"mailhog\",\"service\":\"${MAILHOG_IP}:8025\",\"port\":\"8025\",\"tags\":[\"webapp\"],\"healthStatus\":\"healthy\",\"attributes\":{}}" && \
etcdctl set /config/postfix/relayhost mailhog:1025 && docker restart postfixEinrichtung eines Proxy vor MailHog zum testen von Authentifizerungsworkflows
MailHog unterstützt keine Authentifizerung, aus diesem Grund kann mithilfe des Tools E-MailRelay ein Proxy vor dem MailHog aufgebaut werden.
Dazu muss E-MailRelay heruntergeladen,
entpackt und installiert sudo ./configure && sudo make && sudo make install werden.
Für die Authentifizierung kann eine Password-Datei angelegt werden, die z.B. so aussehen kann:
secret.auth
server plain adminuser adminpwE-MailRelay kann mittels
sudo emailrelay -t --as-server --forward-on-disconnect --log --verbose --log-file mailrelay.log --log-time --port 587 --forward-to localhost:1025 --server-auth ./secret.authals Proxy vor MailHog gestartet werden.
Der Parameter -t startet den Proxy in einer Terminal-Sitzung. Das macht es einfacher, den Server neu zu starten.
Der Relay-Host muss auf die mit dem -port spezifizierte Adresse zeigen.
etcdctl set /config/postfix/relayhost 192.168.56.1:587Anschließend kann das entsprechende Passwort für Postfix konfiguriert werden. Beim Verschicken von Mails wird dann die SASL-Authentifizierung verwendet:
etcdctl set /config/postfix/sasl_username adminuser
etcdctl set /config/postfix/sasl_password adminpw