Sto attualmente cercando di configurare un host con Discourse in Docker sul mio server domestico per testarlo. Finora sta funzionando abbastanza bene, l’istanza è in esecuzione senza problemi.
Tuttavia, non riesco a inviare le email tramite il mio server. In linea di principio, l’invio tramite un provider di servizi funziona.
Sto eseguendo un proprio smtpd in produzione. Tuttavia, ho disattivato le porte standard 465 e 587 per l’invio tramite IPv4 al fine di limitare le scansioni delle porte. Solo la porta 23456 è aperta per l’invio tramite IPv4.
Un controllo con
root@HomeServer:/Ruby/docker.ruby.discourse# ./discourse-doctor
risulta in:
==================== MAIL TEST ====================
Per un test robusto, ottieni un indirizzo da http://www.mail-tester.com/
Oppure invia semplicemente un messaggio di prova a te stesso.
Indirizzo email per il test di posta? ('n' per saltare) [hostmaster@example.com]:
Invio posta a hostmaster@example.com. . .
Test invio a hostmaster@example.com utilizzando smtpd.example.com:23456, username:mbox_hostmaster@example.com con autenticazione plain.
======================================== ERRORE ========================================
ERRORE IMPREVISTO
Net::ReadTimeout
====================================== SOLUZIONE =======================================
Questo non è un errore comune. Non esiste una soluzione raccomandata!
Si prega di segnalare il messaggio di errore esatto sopra a https://meta.discourse.org/
(E una soluzione, se ne trovi una!)
=======================================================================================
Ho poi provato a connettermi tramite telnet, non ci sono problemi:
root@HomeServer:/Ruby/docker.ruby.discourse# docker exec -t -i 50544a79b91a /bin/bash
root@discourse:/# telnet smtpd.example.com 23456
Trying 1.2.3.4...
Connected to smtpd.example.com.
Escape character is '^]'.
quit
Connection closed by foreign host.
root@discourse:/# exit
La configurazione effettiva in app.yml è:
DISCOURSE_SMTP_ADDRESS: smtpd.example.com
DISCOURSE_SMTP_PORT: 23456
DISCOURSE_SMTP_USER_NAME: mbox_hostmaster@example.com
DISCOURSE_SMTP_PASSWORD: pa$$word
DISCOURSE_SMTP_ENABLE_START_TLS: true # (opzionale, default true)
#DISCOURSE_SMTP_DOMAIN: discourse.example.com # (richiesto da alcuni provider)
DISCOURSE_NOTIFICATION_EMAIL: no-reply@discourse.example.com # (indirizzo da cui inviare le notifiche)
# DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
# DISCOURSE_SMTP_AUTHENTICATION: "login"
Ho anche provato a farlo funzionare tramite IPv6 ma senza successo. Esiste una soluzione per abilitare la connettività IPv6 all’interno dell’app docker?
Siamo nel 2024 e 26 anni dopo la standardizzazione del protocollo, ho configurato i miei sistemi con esso - tutto funziona molto bene.
Grazie per il tuo aiuto!
Achim