Troubleshooting E-Mail nach der Installation von Discourse

Was tun, wenn der SMTP-Versand von E-Mails nicht klappt?

Wenn der E-Mail Versand nach einer frischen Installation von Discourse nicht gelingt, liegt es nicht unbedingt am Mailserver beziehungsweise dem E-Mail Host. Es kann auch daran liegen, dass Discourse das Passwort für den SMTP-Account unglücklicherweise nach einem Sonderzeichen abtrennt.

Mir ist es aufgefallen bei dem Bitnami Docker Image für Discourse. Es gibt dort eine Environment-Variable, die z. B. auch in der Datei docker-compose.yml gesetzt wird:

- DISCOURSE_SMTP_PASSWORD=your_password#1!/Hn$4+top-secret

Discourse schneidet das Passwort ab, auch wenn man Anführungszeichen verwendest:

- "DISCOURSE_SMTP_PASSWORD=your_password#1!/Hn$4+top-secret"

Wie kann man es herausfinden?

Ganz einfach. Siehe dir den Inhalt der Datei /opt/bitnami/discourse/config/discourse.conf
im bitnami_discourse Container an.

Hinweis: Wenn man in docker-compose.yml für den Container einen Namen vergibt, ist der Aufruf ganz leicht.

...
  discourse:
    image: docker.io/bitnami/discourse:2
    container_name: my_discourse
...

Öffne dazu ein ein Terminal im Docker-Container.

docker exec -it my_discourse bash

Dann lass dir den Inhalt der Datei anzeigen:

dockeruser@9a4s8ace3dar:/# cat /opt/bitnami/discourse/config/discourse.conf

hostname = my-discourse.site
db_host = host-for-pgsql
db_port = 5432
db_username = postgresuser
db_password = postgres-PW-something
db_name = bitnami_discourse-DB
redis_host = redishost
redis_port = 6379
redis_password = passw-for-redis
smtp_address = mail.example.site
smtp_port = 587
smtp_user_name = MailAccountUer
smtp_password = your_passwordHn$4+top-secret
smtp_enable_start_tls = true
smtp_authentication = login
yes

Wie man sieht, sollte das Passwort lauten: your_password#1!/Hn$4+top-secret

In der Conf-Datei unter /opt/bitnami/discourse/config/discourse.conf steht aber so etwas wie: your_passwordHn$4+top-secret

Damit kann es nicht funktionieren. Und es gibt leider keine Möglichkeit, das richtige Passwort zu setzen. Es sei denn man ändert die conf immer wieder manuell. Aber das ist keine gute Idee.

Die Lösung

Die einzige Lösung besteht offenbar darin, das SMTP-Passwort beim Web Host zu ändern und dabei bestimmte Sonderzeichen nicht zu verwenden. Dann wird das Passwort aber beim SetUp in der Discourse-Konfiguration korrekt übernommen.

Mit welchen Zeichen Discourse Probleme hat, habe ich nicht vollständig ausprobiert. Es hat lang genug gedauert, dieses Problem herauszufinden. Auf jeden Fall ein grober Bug. Definitiv klappt es zum Beispiel nicht mit einem #.

Beobachtet bei Discourse Version 2.7.8