//Cloudogu EcoSystem Docs

Local mail dispatch

To check if the mail dispatch of the Postfix dogu works, MailHog can be used. MailHog is a tool for testing mail in a local development environment. MailHog sets up a local pseudo-SMTP server.

Setting up MailHog

In a nutshell, MailHog runs locally on the host machine as a Docker container and is configured in the local CES as a Relay host of the postfix dogus entered.

Specifically, the following steps need to be performed:

  • Run MailHog on the host machine as a Docker container:

    docker run -d -p 1025:1025 -p 8025:8025 mailhog/mailhog 
  • Set MailHog in the local CES as the relay host of the Postfix dog:

    etcdctl set /config/postfix/relayhost
  • Remove postfix-dogu via cesapp and create new one

    cesapp recreate postfix
  • Start postfix-dogu

    cesapp start postfix 
  • Change to the bash of the Dogu

    docker exec -it postfix bash 
  • Send mail

    sendmail -t testmail@cloudogu.de
    text 1234
  • In web interface of MailHog - `localhost:8025 - check mail reception

Setting up MailHog as part of the CES

With the following script you are able to install MailHog as part of the CES. After the installation you can open the web UI via the Warp menu.

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

Setting up a proxy in front of MailHog to test authentication workflows.

MailHog does not support authentication, therefore using the tool E-MailRelay tool to set up a proxy in front of MailHog.

To do this, E-MailRelay must be downloaded, unpacked and installed sudo ./configure && sudo make && sudo make install.

For the authentication a password file can be created, which can look like this for example


server plain adminuser adminpw

E-MailRelay can be created using

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

can be started as a proxy before MailHog.

The -t parameter starts the proxy in a terminal session. This makes it easier to restart the server. The relay host must point to the address specified with the -port.

etcdctl set /config/postfix/relayhost

Afterwards the appropriate password for Postfix can be configured. SASL authentication is then used when sending mails:

etcdctl set /config/postfix/sasl_username adminuser
etcdctl set /config/postfix/sasl_password adminpw