Sembra connettersi al server e inviare un’email di prova correttamente se lo faccio manualmente:
> sudo ./launcher enter app
root@support-app:/var/www/discourse# openssl s_client -connect mail.xxxxxxxx.com:465
:
:
enorme quantità di spazzatura
:
:
220 xxxxxxx.com Anti-spam GT for Coremail System (mispb-6da2110f-64b0-4d67-acf1-2d302bd594f9-xxxxxxx.com[20220915])
EHLO mail.xxxxxxxxx.com
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrUDI0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrpDiNKUCa0xDrUUUUj
250-STARTTLS
250-SMTPUTF8
250 8BITMIME
AUTH PLAIN xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
235 Authentication successful
mail from: <xxx@xxxxxx.com>
250 Mail OK
rcpt to: <xxxx@xxxxxxx.com>
250 Mail OK
data
354 End data with <CR><LF>.
content
.
250 Mail OK queued as AQAAfwBXr9nSGHdj3hEgAA--.7073S2
È probabile che la porta in uscita sia bloccata dal tuo provider di hosting. Se utilizzi un servizio come Mailgun (o quasi qualsiasi altro) allora la porta 2525 dovrebbe funzionare. Se si tratta di un server di posta che gestisci tu, puoi farlo ascoltare su un’altra porta (come la 2525).
Oppure (probabilmente la cosa più difficile) puoi aprire una segnalazione con chiunque ospiti il tuo server e chiedere loro di aprire la porta.
Beh, considerando che posso eseguire ./launcher enter app e poi openssl connettersi al server di posta, accedere tramite SMTP e inviare con successo un’e-mail dal container di discourse, dubito che sia la porta a non funzionare…
Ho analizzato il codice e sembra che EHLO non sia stato nemmeno raggiunto. Il server SMTP è connesso ma sembra mancare l’handshake SSL, quindi il server si disconnette e Discourse non riceve alcuna risposta, da qui l’errore.
Quindi, ho sospettato che il supporto per la porta 465 sembri avere un bug (predefinito su SSL, ma non credo che Discourse lo riconosca), quindi probabilmente la connessione SSL non viene mai stabilita.
Passare alla porta 25 sembra almeno eliminare l’errore, anche se non sto ancora ricevendo alcuna email inviata…
EDIT: Posso confermare che la porta 25 funziona correttamente (come dovrebbe anche la 587, ma sfortunatamente il mio server smtp non espone la 587).
Non ho ricevuto email prima a causa del fatto che l’indirizzo IP del server Discourse è stato temporaneamente inserito nella blacklist dal server smtp a causa di troppi tentativi falliti.
Ho anche visto diversi argomenti sul “problema 465”. Tuttavia, il mio debug via email per tutto ciò che non è ovvio non è eccezionale, quindi ho citato la guida alla risoluzione dei problemi:
C’è qualcosa che possiamo aggiungere a questo per aiutare le persone?
MODIFICA: @RGJ Posso confermare che DISCOURSE_SMTP_FORCE_TLS: true in app.yml risolve con successo il problema!
Suggerisco un avviso in grassetto che dica Se si utilizza la porta 465, impostare DISCOURSE_SMTP_FORCE_TLS: true, o Discourse non dovrebbe essere abbastanza intelligente da rilevarlo?