Problemi con l'invio di email al relay SMTP

Ciao,
stiamo riscontrando problemi nell’invio di email tramite un relay SMTP che non richiede nome utente e password. Sono in grado di inviare email al relay utilizzando mailx / sendmail.
Queste sono le impostazioni.

 DISCOURSE_SMTP_ADDRESS: xyz.example.com (oscurato)
 DISCOURSE_SMTP_PORT: 587
 DISCOURSE_SMTP_AUTHENTICATION: plain

quello che ricevo indietro, quando uso il discourse_doctor, genera questo errore.

Net::ReadTimeout

mi sembra che il messaggio SMPT inviato sia mal formato poiché inviamo dati, ma non riceviamo nulla indietro sulla porta 587. questo è dimostrabile con una traccia Wireshark.

potete per favore elaborare come inserire un logging più dettagliato o un debug aggiuntivo in modo da poter analizzare ulteriormente il problema? i log normali non mi dicono nulla. ho trovato il backtrace, ma non sono uno sviluppatore ruby quindi non posso interpretarlo.

/usr/local/lib/ruby/3.2.0/net/protocol.rb:229:in `rbuf_fill'

/usr/local/lib/ruby/3.2.0/net/protocol.rb:199:in `readuntil'

/usr/local/lib/ruby/3.2.0/net/protocol.rb:209:in `readline'

net-smtp-0.3.3/lib/net/smtp.rb:1057:in `recv_response'

net-smtp-0.3.3/lib/net/smtp.rb:659:in `block in do_start'

net-smtp-0.3.3/lib/net/smtp.rb:1067:in `critical'

net-smtp-0.3.3/lib/net/smtp.rb:659:in `do_start'

net-smtp-0.3.3/lib/net/smtp.rb:611:in `start'

/var/www/discourse/vendor/bundle/ruby/3.2.0/bundler/gems/mail-5b700fc95ee6/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'

/var/www/discourse/vendor/bundle/ruby/3.2.0/bundler/gems/mail-5b700fc95ee6/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'

/var/www/discourse/vendor/bundle/ruby/3.2.0/bundler/gems/mail-5b700fc95ee6/lib/mail/message.rb:269:in `deliver!'

/usr/local/lib/ruby/3.2.0/delegate.rb:87:in `method_missing'

/var/www/discourse/lib/email/sender.rb:286:in `send'

/var/www/discourse/app/jobs/regular/user_email.rb:79:in `send_user_email'

/var/www/discourse/app/jobs/regular/user_email.rb:39:in `execute'

/var/www/discourse/plugins/chat/lib/chat/user_email_extension.rb:6:in `execute'

/var/www/discourse/app/jobs/base.rb:249:in `block (2 levels) in perform'

rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:80:in `with_connection'

/var/www/discourse/app/jobs/base.rb:236:in `block in perform'

/var/www/discourse/app/jobs/base.rb:232:in `each'

/var/www/discourse/app/jobs/base.rb:232:in `perform'

sidekiq-6.5.8/lib/sidekiq/processor.rb:202:in `execute_job'

sidekiq-6.5.8/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'

sidekiq-6.5.8/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'

/var/www/discourse/lib/sidekiq/pausable.rb:134:in `call'

sidekiq-6.5.8/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'

sidekiq-6.5.8/lib/sidekiq/middleware/chain.rb:182:in `invoke'

sidekiq-6.5.8/lib/sidekiq/processor.rb:169:in `block in process'

sidekiq-6.5.8/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'

sidekiq-6.5.8/lib/sidekiq/job_retry.rb:113:in `local'

sidekiq-6.5.8/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'

sidekiq-6.5.8/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'

sidekiq-6.5.8/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'

sidekiq-6.5.8/lib/sidekiq/processor.rb:263:in `stats'

sidekiq-6.5.8/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'

sidekiq-6.5.8/lib/sidekiq/job_logger.rb:13:in `call'

sidekiq-6.5.8/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'

sidekiq-6.5.8/lib/sidekiq/job_retry.rb:80:in `global'

sidekiq-6.5.8/lib/sidekiq/processor.rb:124:in `block in dispatch'

sidekiq-6.5.8/lib/sidekiq/job_logger.rb:39:in `prepare'

sidekiq-6.5.8/lib/sidekiq/processor.rb:123:in `dispatch'

sidekiq-6.5.8/lib/sidekiq/processor.rb:168:in `process'

sidekiq-6.5.8/lib/sidekiq/processor.rb:78:in `process_one'

sidekiq-6.5.8/lib/sidekiq/processor.rb:68:in `run'

sidekiq-6.5.8/lib/sidekiq/component.rb:8:in `watchdog'

sidekiq-6.5.8/lib/sidekiq/component.rb:17:in `block in safe_thread'

Ho declassato l’applicazione all’ultima versione stabile, il che non ha risolto questo problema. la persona che se ne occupava prima è in PTO, quindi non posso dire a quale versione fosse prima dell’ultimo aggiornamento. ho anche notato che ci sono state recenti modifiche al codice nell’area della posta elettronica. forse problemi lì?

grazie

Potresti riscontrare timeout nel tuo motore di posta elettronica, questo è stato menzionato in un altro argomento recente. Postfix ha apparentemente un timeout di 5 secondi per impostazione predefinita.

Mi ci sono voluti diversi giorni di mal di testa per far funzionare le risposte e la pubblicazione via e-mail, molte piccole cose da sistemare sia all’interno di Discourse che sul tuo server di posta, comprese le impostazioni del mailer e le impostazioni del firewall.

E non ho ancora iniziato a occuparmi dei problemi del mailer, in particolare per essere inserito nella whitelist di più ISP. Ho SPF e DKIM funzionanti.

grazie per la risposta, sì, ma sto cercando qualcosa che mi dica qual è il problema. è complicato perché la traccia di wireshark mostra che l’e-mail viene inviata, ma non viene data alcuna risposta. la normale e-mail che utilizza Linux sendmail funziona senza problemi. SPF e DKIM sono impostati anche sui rispettivi domini. Sono in grado di riprodurre il problema sulla console rails.

message = TestMailer.send_test(“ycxi@examle.com”)
Email::Sender.new(message, :test_message).send

Non sono affatto un esperto di ruby, vedrò se riesco a ottenere un log più dettagliato di uno stack trace:

[5] pry(main)> wtf?
Exception: Net::ReadTimeout: Net::ReadTimeout

Abbiamo risolto un problema simile aumentando le soglie di timeout SMTP nel file app.yml, facendo riferimento a questo argomento:

Come è stato modificato app.yml:
image

Dopo aver modificato lo yaml, l’app è stata ricostruita:
sudo ./launcher destroy app && sudo ./launcher start app

La modifica si riflette nell’interfaccia grafica: