//Cloudogu EcoSystem Docs

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 postfix

Einrichtung 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 adminpw

E-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.auth

als 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:587

Anschließ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