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

1 Mi Piace

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: