Email non funziona affatto

Ciao a tutti. Da un paio di giorni sto cercando di configurare un forum Discourse e tutti i problemi sono legati alla posta elettronica. Sono riuscito a far funzionare il forum saltando la registrazione via email, ma ho comunque bisogno che la funzione sia operativa per permettere agli utenti di registrarsi. Ho ottenuto sempre gli stessi risultati, ho provato molte soluzioni diverse, ma nessuna sembra aver funzionato. Ogni volta si verifica una di queste due situazioni:

  1. L’errore del test email indica “hostname . . . non corrisponde al certificato del server”
  2. L’errore del test email indica “502” e in Sidekiq compare l’errore Jobs::HandledExceptionWrapper: Wrapped Net::ReadTimeout: Net::ReadTimeout con #<TCPSocket:(closed)>

Allora, quando si verifica ciascuno di questi errori? Il primo appare in ogni scenario possibile. Il secondo, invece, si è manifestato quando ho utilizzato la porta 465. Ci voleva un po’ di tempo per “inviare un’email di prova” e poi compariva quell’errore. Proprio ora ho disabilitato SSL, quindi la porta 587 è utilizzabile, ma invece di ottenere l’errore 1 o 2, il processo rimane bloccato su “Invio email di prova”.

Non so cosa fare in questo momento. Sto lottando con questo problema da alcuni giorni e non ho ancora trovato una soluzione. Qualsiasi aiuto sarebbe molto apprezzato. Grazie per il vostro tempo e per il vostro supporto.

AGGIORNAMENTO: Utilizzando il comando curl --ssl-reqd, ho testato le porte 465, 587, 25 e 2525. Ecco i risultati:
25: Non ha funzionato (Errore Curl 35, numero di versione errato)
465: Ha funzionato come previsto con una risposta email rapida
587: Non ha funzionato (Errore Curl 35, numero di versione errato)
2525: Non ha generato errori, ma non ha mai inviato l’email (il tempo di attesa è aumentato indefinitamente senza che l’email venisse mai inviata)

Se può essere utile, le mie impostazioni attuali (con l’errore 502) sono:

  DISCOURSE_SMTP_ADDRESS: CENSORED
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: CENSORED
  DISCOURSE_SMTP_PASSWORD: CENSORED
  # DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opzionale, valore predefinito true)

Template:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## De-commentate queste due righe se desiderate aggiungere Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

E l’esposizione delle porte:

expose:
  - "80:80"   # http
  - "443:443" # https

Questa è un’immagine con le informazioni sull’email:

Stai utilizzando uno dei provider di posta elettronica consigliati?

Dove è installato il server Discourse?

Non credo proprio. L’email è fornita da VoltHosting, se questo può aiutare.

Inoltre, il server Discourse è installato in var/discourse e funziona (posso accedere al sito e navigare con un account amministratore che ho creato saltando la verifica email; è anche così che provo a inviare email di test, sia in Email > Impostazioni che in Email > Anteprima Riepilogo, ed è lì che ricevo questi errori. Grazie comunque per l’aiuto.

Prova a utilizzare uno dei provider consigliati: ti aiuterà a capire rapidamente se il problema risiede nella tua installazione di Discourse o nel server di posta con cui stai cercando di comunicare.

La lista dei provider consigliati esiste perché sono stati verificati per funzionare con Discourse. SMTP può essere complicato anche nelle condizioni migliori, e si presume generalmente che se non utilizzi la configurazione consigliata, tu sia consapevole dell’ulteriore onere tecnico che questo comporta.

Grazie per la risposta. Non credo di poter utilizzare uno dei provider consigliati, poiché la persona che ha creato il piano ha già altri account email con quella stessa azienda, e ciò comporterebbe un costo aggiuntivo oltre a quello del VPS stesso. Inoltre, non credo sia possibile farlo al momento. Esiste forse un altro modo per testare più efficientemente i servizi di posta senza dover ricreare il forum ogni volta? Grazie per il tuo aiuto.

Non è necessario ricostruire per modificare le impostazioni della posta elettronica. Puoi eseguire:

./launcher destroy app
./launcher start app

Dopo aver modificato le impostazioni della posta elettronica, verranno rilevate le nuove impostazioni. Lo stesso vale per tutte le variabili d’ambiente.

Se il certificato del server non corrisponde al nome host, considera di contattare VoltHosting per assistenza con il loro sistema di posta elettronica: non si tratta di un problema di Discourse, ma di qualcosa che devono risolvere loro. Potrebbe esserci un nome host alternativo valido che puoi utilizzare.

In ogni caso, ti consigliamo di utilizzare una delle prove gratuite offerte nella pagina collegata sopra per verificare che Discourse stesso gestisca correttamente la posta elettronica. Puoi sempre tornare all’SMTP di VoltHosting una volta dimostrato che Discourse funziona correttamente.

Per conferma, l’istanza è stata installata seguendo questa guida, corretto?

Grazie. Lo userò sicuramente in futuro, ma sto ancora cercando una possibile soluzione. Se può essere utile, ecco un’immagine dell’errore di Sidekiq:

image

Potrei ovviamente usare le prove gratuite, ma dopo tutto è una prova gratuita e ha alcune limitazioni. E sì, ho seguito la guida ufficiale per installare il forum Discourse. È attivo e funzionante, ma le email non funzionano semplicemente. Grazie per l’aiuto.

A questo punto, le tue opzioni sono davvero quelle di testare con un provider consigliato o contattare VoltHosting. Gli errori indicano che il certificato presentato dal server SMTP non è valido per il nome host utilizzato per la connessione.

A meno che tu non possa dimostrare il contrario testando con uno dei servizi consigliati, è molto improbabile che questo problema sia correlato alla tua installazione di Discourse.

Quell’errore di timeout suggerisce che non è possibile connettersi al server di posta. O Digital Ocean sta bloccando l’accesso o c’è qualcos’altro che lo fa.

Dovresti essere in grado di eseguire

telnet server.hostname server-port

È probabile che tu abbia bisogno dell’aiuto della persona che ha configurato o controlla il server di posta.

Grazie per la risposta. Ho appena eseguito il comando. Ecco i risultati:


Non sono sicuro se avrebbe dovuto consentirmi di eseguire AUTH LOGIN o meno. Se sì, allora presumo che sia questo il problema, giusto? Grazie per l’aiuto.

Hmm. Beh, non era a livello di server. La mia prossima ipotesi è un problema di rete Docker. Ma potrebbe essere qualcos’altro.

Grazie per la risposta. Se possibile, naturalmente, come potrei procedere con un’ulteriore indagine su questo? C’è un comando Docker che potrei eseguire per testarlo e vedere cosa restituisce, o qualcosa di simile? Esiste un modo per testarlo da qualche parte e ottenere un output del problema? Se non è possibile, lo capisco perfettamente. Grazie per l’aiuto.

AGGIORNAMENTO: Utilizzando il comando curl --ssl-reqd, ho testato le porte 465, 587, 25 e 2525. I risultati sono stati:
25: Non ha funzionato (Errore Curl 35, numero di versione errato)
465: Ha funzionato come previsto con una rapida risposta via email
587: Non ha funzionato (Errore Curl 35, numero di versione errato)
2525: Non ha fallito, ma non ha mai inviato un’email (il tempo trascorso è aumentato senza mai fermarsi durante l’invio di nessuna email)

Se può essere utile, le mie impostazioni attuali sono (con l’errore 502):

  DISCOURSE_SMTP_ADDRESS: CENSORED
  DISCOURSE_SMTP_PORT: 465
  DISCOURSE_SMTP_USER_NAME: CENSORED
  DISCOURSE_SMTP_PASSWORD: CENSORED
  # DISCOURSE_SMTP_ENABLE_START_TLS: true           # (opzionale, valore predefinito true)

Template:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Rimuovi il commento da queste due righe se desideri aggiungere Lets Encrypt (https)
  - "templates/web.ssl.template.yml"
  - "templates/web.letsencrypt.ssl.template.yml"

E l’esposizione:

expose:
  - "80:80"   # http
  - "443:443" # https

Questa è un’immagine con le informazioni sull’email:


Non sono sicuro se il motivo sia che Discourse non si connette tramite SSL/TLS o qualcosa di altro. Spero che queste informazioni siano utili e aiutino a risolvere il problema.

Aggiungi questo e vedi se funziona

DISCOURSE_SMTP_ENABLE_START_TLS: False

Grazie per la risposta. Purtroppo non ha funzionato. Ricevo ancora lo stesso errore 502.

Non sono sicuro che questo aiuti, ma sono riuscito a eseguire il comando curl --ssl-reqd dalla VPS e ho inviato con successo un’email (come ho menzionato in questa risposta). Inoltre, ho eseguito quel comando all’interno dell’app (accedendo tramite ./launcher enter app) e ha funzionato, ottenendo gli stessi risultati del test precedente (la porta 465 funziona, mentre 25 e 587 non funzionano, e 2525 restituisce un errore di timeout), eppure ottengo ancora un errore 502 quando lo eseguo direttamente sul forum (usando email di test). Spero che queste informazioni aggiuntive siano utili. Grazie per il tuo aiuto.

Hai trovato una soluzione?