Problemas con el envío de correo a un relé SMTP

Hola,
estamos teniendo problemas para enviar correos electrónicos a través de un retransmisor SMTP que no requiere usuario ni contraseña. Puedo enviar correos electrónicos al retransmisor usando mailx / sendmail.
Estas son las configuraciones.

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

Lo que obtengo de vuelta, al usar el discourse_doctor, es este error.

Net::ReadTimeout

Me parece que el mensaje SMTP enviado está mal formado, ya que enviamos cosas, pero no recibimos nada de vuelta en el puerto 587. Esto se puede demostrar con un rastreo de Wireshark.

¿Podrías por favor explicar cómo activar un registro más detallado o depuración adicional para que podamos analizar más a fondo el problema? Los registros normales no me dicen nada. Encontré un backtrace, pero no soy desarrollador de Ruby, así que no puedo 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'

Bajé la aplicación a la última versión estable, lo que no resolvió este problema. La persona que trabajaba en esto antes está de vacaciones, así que no puedo saber a qué versión era antes de que ocurriera la última actualización. También me di cuenta de que hubo cambios recientes en el código en el área de correo, ¿quizás problemas allí?

Gracias

1 me gusta

Es posible que esté experimentando tiempos de espera en su motor de correo, esto se mencionó en otro tema reciente. Aparentemente, Postfix tiene un tiempo de espera de 5 segundos por defecto.

Me tomó varios días de frustración lograr que las respuestas y las publicaciones por correo electrónico funcionaran, muchas cosas pequeñas que debían configurarse correctamente tanto dentro de Discourse como en su servidor de correo, incluidas la configuración del remitente y la configuración del firewall.

Y aún no he empezado a lidiar con los problemas del remitente, específicamente con la inclusión en la lista blanca de varios ISP. Tengo SPF y DKIM funcionando.

gracias por la respuesta, sí, pero estoy buscando algo que me diga cuál es el problema. es complicado ya que el rastreo de wireshark muestra que el correo electrónico se envía, pero no se da respuesta. el correo electrónico normal que usa Linux sendmail funciona sin problemas. SPF y DKIM están configurados en el dominio respectivo también. Puedo reproducir el problema en la consola de rails.

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

No soy un experto en ruby en absoluto, veré si puedo obtener un registro más detallado que un rastreo de pila:

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

Corregimos un problema similar aumentando los umbrales de tiempo de espera SMTP en el archivo app.yml, haciendo referencia a este tema:

Cómo se modificó app.yml:
image

Después de cambiar el yaml, la aplicación fue reconstruida:
sudo ./launcher destroy app && sudo ./launcher start app

El cambio se refleja en la GUI: