Beh, per iniziare, questa è la produzione e non riesco a inviare il primo email di registrazione.
Sono certo che le mie impostazioni SMTP siano corrette.
Riesco a fare ping e telnet al mio server di posta con la porta utilizzata, ma non appena eseguo “EHLO mailserver”, la connessione viene chiusa dall’host remoto.
Ho anche verificato che le mie impostazioni SMTP fossero corrette eseguendo /var/discourse/discourse-doctor, ma non riesce a convalidarle. Dice:
==================== YML SETTINGS ====================
awk: not an option: --field-separator=:
DISCOURSE_HOSTNAME=
awk: not an option: --field-separator=:
SMTP_ADDRESS=
awk: not an option: --field-separator=:
DEVELOPER_EMAILS=
awk: not an option: --field-separator=:
SMTP_PASSWORD=
awk: not an option: --field-separator=:
SMTP_PORT=
awk: not an option: --field-separator=:
SMTP_USER_NAME=
awk: not an option: --field-separator=:
LETSENCRYPT_ACCOUNT_EMAIL=
Ma il mio YAML (./containers/app.yml) sembra essere formattato perfettamente.
## TODO: Il server di posta SMTP utilizzato per convalidare i nuovi account e inviare notifiche
# Sono richiesti l'indirizzo SMTP, il nome utente e la password
# ATTENZIONE: il carattere '#' nella password SMTP può causare problemi!
DISCOURSE_SMTP_ADDRESS: mail.redacted.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: redacted@redacted.com
DISCOURSE_SMTP_PASSWORD: "redacted"
#DISCOURSE_SMTP_ENABLE_START_TLS: true # (opzionale, valore predefinito true)
## Se hai aggiunto il template di Lets Encrypt, decommenta qui sotto per ottenere un certificato SSL gratuito
LETSENCRYPT_ACCOUNT_EMAIL: redacted@redacted.com
@irwinstar, ho rimosso il server di posta reale per evitare di esporlo su un forum pubblico. Posso però garantire che è corretto, poiché ho copiato le impostazioni dal mio client di posta (che funziona) e le ho confrontate con le impostazioni SMTP del mio server di posta reale.
Grazie per la tua offerta di aiuto. Penso che il problema risieda nei record SPF/DKIM, quindi sto cercando di risolverli.
Tuttavia, discourse-doctor dovrebbe comunque analizzarlo correttamente. Non sono sicuro di cosa stia succedendo, dato che non ho modificato io stesso il file in vim/nano. Per chiarezza, il file YAML è stato generato utilizzando discourse-setup.
E penso che Discourse non supporti attualmente il protocollo sulla porta 465. Se il tuo server di posta supporta la porta 587, puoi modificarla in 587.
Purtroppo, il mio server di posta non può utilizzare la porta 587, quindi ho aggiunto un proxy di posta esterno a Discourse.
@irwinstar, se queste informazioni sono corrette, sono estremamente importanti e spiegherebbero perché la mia configurazione della posta non funziona. Hai una fonte per queste informazioni?
Non ne sono sicuro, ma ho provato più volte la porta 465.
Infine, ho utilizzato l’immagine Docker “hieulq/mailproxy” come proxy di posta.
E ho usato questa configurazione app.yml per Discourse.
Questo utilizzo sembra scorretto, ma funziona.
Ho cercato un plugin per la posta oggi, ma non ne ho trovato nessuno.
Sto cercando di evitare l’acquisto di server di posta cloud o l’uso di proxy (perché se volessi una soluzione poco elegante, a questo punto mi limiterei a prendere un account amministratore), dato che ho già un server di posta su HostGator.
Sono certo che i record SPF siano impostati per l’IP del mio server Discourse. Sto cercando principalmente di validare i record DKIM.
Se qualcuno può confermare che la porta 465 non è consentita, sarebbe una notizia fantastica, perché mi risparmierebbe di scendere troppo in profondità in un problema inesistente. La porta 465 era un problema, come indicato nel post sottostante.
Usando la porta 587 riesco a fare telnet con successo per un’intera email e l’autenticazione funziona. Quindi ho fatto il cambio.
Ora, quando l’email viene inviata, ricevo il seguente errore:
Delivered mail d86b48cc-b0f4-4df3-8960-ab5ff96613a0@discourse.imbleau.com (251.0ms)
Job exception: hostname "mail.redacted.com" does not match the server certificate
Tuttavia, ho notato che questo non è più un timeout di connessione (attivato dopo 60 secondi interi), ma piuttosto un’eccezione diversa ricevuta in 250 ms.
PROBLEMA DELLA EMAIL RISOLTO! (discourse-doctor analizza ancora in modo errato)
Ho fatto qualche ricerca su Ruby e sul motivo per cui si verificava questo errore, il che mi ha portato a questo thread su Stack Overflow.
Questo era il colpevole. La soluzione consisteva nel modificare la negoziazione SSL, il che mi ha dato l’idea di disattivare questa impostazione nel file app.yml: DISCOURSE_SMTP_ENABLE_START_TLS: false # (opzionale, valore predefinito true)
Questo disabiliterà la crittografia TLS, mentre l’unico problema è che stai utilizzando un nome host errato, ovvero il server di posta sta presentando un certificato che indica qualcosa di diverso da mail.redacted.com. Molti server di posta tendono ad essere conosciuti con diversi nomi host; devi solo scoprire quale sta utilizzando per il suo certificato.
Potresti provare a scoprire quale nome host dichiara di essere e adattare di conseguenza la tua configurazione.