Fallimento del test email in discourse-doctor

Sto cercando di risolvere i problemi SMTP usando ./discourse-doctor

Il problema correlato più vicino che ho trovato è Yet other SMTP 587 port email various errors.
Prima di implementare i suggerimenti, ho riscontrato timeout costanti.

Dopo la configurazione:

DISCOURSE_SMTP_FORCE_TLS: true
DISCOURSE_SMTP_ENABLE_START_TLS: false

Ottengo quanto segue da discourse-doctor:

==================== 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) [admin@burlyqna.org]:
Invio posta a admin@burlyqna.org. . .
Test di invio a admin@burlyqna.org utilizzando smtp.mailfence.com:465, username:philion@mailfence.com con autenticazione plain.
Connessione al server SMTP riuscita.
Invio a admin@burlyqna.org. . .
Invio posta fallito.
fine del file raggiunta

Vedi: http://talk.burlyqna.org/NjdhMDAwYTk4NmM3MmM1.txt

Sono in grado di convalidare esternamente la configurazione del server SMTP con:

swaks --to philion@gmail.com --from admin@burlyqna.org --server smtp.mailfence.com:465 --auth LOGIN --tlsc --auth-user philion@mailfence.com

Qualche indizio su come Connessione al server SMTP riuscita. ma Invio posta fallito.?

Molte grazie,
Paul

1 Mi Piace

Per TLS dovresti usare la porta 587?

Proverei ad aggiungere puts error.backtrace (o simile) dopo

e rieseguire discourse-doctor.

1 Mi Piace

Questo è ciò che il nostro risponditore automatico ha trovato, penso che provare il dominio smtp valga probabilmente la pena.

1 Mi Piace

Thomas,

C’è molta discussione sul 465 nei forum di supporto. In base alla mia lettura, sembra che Discourse faccia molte supposizioni su SSL e TLS su SMTP, e ci sono una manciata di variabili d’ambiente che controllano i comportamenti dettagliati.

Tuttavia, dato il numero di errori segnalati e domande correlate in questi forum, ho la forte impressione che queste impostazioni siano scarsamente documentate e difficili da usare. E vedendo problemi simili risalenti al 2017, questo è un problema da anni ormai.

Le ricerche per “porta 465” o “Net::ReadTimeout smtp” possono rivelare un lungo elenco di problemi simili.

Proverò a farlo. Grazie!

Thomas,

Sto cercando di trovare questo file nella build di Docker e non ci riesco. Vedo che è racchiuso in un container, ma ho clonato discourse/discourse_docker non discourse/discourse.

Quando provo ad accedere all’app con launcher enter app, non c’è modo di modificare quel file o di installare vi.

Non riesco a trovare alcuna documentazione o flag per eseguire ./discourse-doctor con i log di debug attivati.

Fallisce nello stesso modo: Impossibile inviare email, ./discourse-doctor riporta lo stesso errore.

App.yml aggiornato come suggerito, app ricostruita (nessuna email), provato ./discourse-doctor e ottenuto lo stesso messaggio di errore.

./launcher enter  app
sudo apt update && sudo apt install neovim -y

dovrebbe aiutare.

Grazie! Sto diventando piuttosto attempato quando non riesco a “sudo apt install vi”. Devo ricordarmi che ora si chiama neovim.

Dato il suggerimento di scaricare lo stack trace, offro: http://talk.burlyqna.org/ODgyZjg5Y2QyMTU1ZmEx.txt

Lo snippet pertinente:

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:237:in `rbuf_fill'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:199:in `readuntil'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:209:in `readline'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1017:in `recv_response'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1008:in `block in getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1027:in `critical'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1006:in `getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:986:in `quit'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:732:in `do_finish'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `ensure in start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/message.rb:269:in `deliver!'
/usr/local/lib/ruby/3.3.0/delegate.rb:87:in `method_missing'
/var/www/discourse/lib/email/sender.rb:296:in `send'

Sembra che l’altra parte abbia interrotto la connessione.

A proposito: http://talk.burlyqna.org/NjdhMDAwYTk4NmM3MmM1.txt non è più disponibile

1 Mi Piace

Quei file di log vengono conservati quando ricostruisco?

Ho aggiornato le password per rimuovere i simboli, ho atteso il ritardo di propagazione dell’autenticazione SMTP (abbastanza a lungo da preparare il pranzo), ho confermato le credenziali corrette per inviare correttamente email con swaks, e…

Stesso errore.

Noto che la ricostruzione rimuove il dump dello stack trace, quindi lo aggiungerò di nuovo e proverò ./launcher destroy app && ./launcher start app

1 Mi Piace

Installato il debug trace, eseguito doctor:
http://talk.burlyqna.org/NWQ5MjBlMTIwN2JiNGNl.txt

==================== MAIL TEST ====================
Per un test robusto, ottieni un indirizzo da http://www.mail-tester.com/
Oppure invia semplicemente un messaggio di test a te stesso.
Indirizzo email per il test di posta? ('n' per saltare) [admin@burlyqna.org]:
Invio posta a admin@burlyqna.org. . .
Test invio a admin@burlyqna.org usando smtp.mailfence.com:465, username:philion con autenticazione plain.
Connessione al server SMTP riuscita.
Invio a admin@burlyqna.org. . .
Invio posta fallito.
fine del file raggiunta
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:237:in `rbuf_fill'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:199:in `readuntil'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:209:in `readline'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1017:in `recv_response'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1008:in `block in getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1027:in `critical'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1006:in `getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:986:in `quit'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:732:in `do_finish'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `ensure in start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/message.rb:269:in `deliver!'

Hai provato a usare il tuo indirizzo email completo come nome utente?

Aggiornato app.yml per usare l’email completa come utente, ridistribuito con ./launcher destroy app && ./launcher start app.

Stesso errore: http://talk.burlyqna.org/ZDg1YWE1YTA2YWU1Zjhj.txt

Destroy e start hanno anche cancellato il debug, ma presumo sia lo stesso problema:

case rv = @io.read_nonblock(BUFSIZE, tmp, exception: false)

restituisce un nil, e questo risulta in una risposta EOF e non/errore.

Dopo molti test e con l’aiuto di @thoka, offro il seguente riassunto:

Sono in grado di eseguire test SMTP utilizzando le stesse credenziali che ho fornito a container/app.yml che funzionano sia con swaks (Swaks - Swiss Army Knife for SMTP) sia con il codice Ruby di esempio fornito da @thoka (vedi sotto).

Questi funzionano in modo coerente. Tuttavia, tentare di avviare un server Discourse (che non riesce a inviare l’email iniziale all’utente amministratore) o utilizzare il bot discourse-doctor provoca errori di posta elettronica:

==================== 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) [admin@burlyqna.org]:
Invio posta a admin@burlyqna.org. . .
Test di invio a admin@burlyqna.org utilizzando smtp.mailfence.com:465, nome utente:xxx@mailfence.com con autenticazione plain.
Connessione al server SMTP riuscita.
Invio a admin@burlyqna.org. . .
Invio posta fallito.
fine del file raggiunto

Sembra essere un errore di configurazione del protocollo, poiché sono in grado di inviare email di prova utilizzando strumenti Ruby standard:

require 'mail'

SMTP_SERVER = 'smtp.mailfence.com'
SMTP_PORT = 465
USERNAME = 'xyz'
PASSWORD = '...'

FROM = 'admin@burlyqna.org'
TO = 'testing@gmail.com'
SUBJECT = 'Test da Ruby'

BODY = "Ciao,\n\nQuesta è un'email di test inviata da Ruby tramite una connessione protetta SSL.\n\nCordiali saluti!"

Mail.defaults do
  delivery_method :smtp, {
    address: SMTP_SERVER,
    port: SMTP_PORT,
    user_name: USERNAME,
    password: PASSWORD,
    domain: "burlyqna.org",
    enable_starttls_auto: :false,
    authentication: :plain,
    ssl: true,
  }
end

begin
  puts 'Invio email...'
  puts "SMTP_SERVER: #{SMTP_SERVER}"
  puts "SMTP_PORT: #{SMTP_PORT}"
  puts "USERNAME: #{USERNAME}"
  puts "PASSWORD: #{PASSWORD}"
  puts "FROM: #{FROM}"
  puts "TO: #{TO}"

  mail = Mail.new do
    to TO
    from FROM
    subject SUBJECT
    body BODY
  end

  mail.deliver!
end

Le attuali impostazioni SMTP nel mio app.yml sono:

DISCOURSE_SMTP_ADDRESS: smtp.mailfence.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: xxx@mailfence.com
DISCOURSE_SMTP_PASSWORD: '...'
DISCOURSE_SMTP_FORCE_TLS: true                   # https://meta.discourse.org/t/cannot-send-email-problem-with-port-465/246004/8
DISCOURSE_SMTP_ENABLE_START_TLS: false           # (opzionale, predefinito true)
DISCOURSE_SMTP_DOMAIN: burlyqna.org              # (richiesto da alcuni provider)
DISCOURSE_NOTIFICATION_EMAIL: noreply@talk.burlyqna.org
1 Mi Piace

Follow-up finale: l’email funziona!

I problemi che ho riscontrato lungo il percorso:

  • DISCOURSE_SMTP_PASSWORD conteneva simboli ma non era tra virgolette
  • DISCOURSE_SMTP_FORCE_TLS: true per abilitare SSL
  • DISCOURSE_SMTP_ENABLE_START_TLS: false per interrompere la negoziazione TLS
  • DISCOURSE_NOTIFICATION_EMAIL impostato su un indirizzo email non esistente
DISCOURSE_SMTP_ADDRESS: smtp.mailfence.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: example@mailfence.com
DISCOURSE_SMTP_PASSWORD: 'passwd'
DISCOURSE_SMTP_FORCE_TLS: true                  
DISCOURSE_SMTP_ENABLE_START_TLS: false
DISCOURSE_NOTIFICATION_EMAIL: admin@example.org
1 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.