No estoy seguro de dónde publicar esto exactamente, pero me pregunto si alguien más ha estado experimentando esto. Seguí la guía de instalación oficial usando DigitalOcean y Mailgun. Pero recientemente noté que tengo muchas excepciones de trabajo Jobs::UserEmail y no puedo enviar correos electrónicos de prueba.
Registros de errores
Mensaje (20584 copias reportadas)
Excepción de trabajo: ejecución expirada
Backtrace
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:663:in `initialize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:663:in `open'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:663:in `tcp_socket'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:672:in `block in do_start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/timeout-0.4.3/lib/timeout.rb:185:in `block in timeout'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/timeout-0.4.3/lib/timeout.rb:192:in `timeout'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:671:in `do_start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:642: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'
/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/app/jobs/base.rb:316:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:220:in `execute_job'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:185:in `block (4 levels) in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:180:in `traverse'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job/interrupt_handler.rb:9:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:26:in `track'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:134:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:173:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:184:in `block (3 levels) in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_retry.rb:118:in `local'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/config.rb:39:in `block in <class:Config>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:281:in `stats'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_logger.rb:15:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_retry.rb:85:in `global'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:132:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/job_logger.rb:40:in `prepare'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:131:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `block in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `handle_interrupt'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:86:in `process_one'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/processor.rb:76:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/component.rb:10:in `watchdog'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-7.3.9/lib/sidekiq/component.rb:19:in `block in safe_thread'
No he podido determinar la causa del problema, porque no se han cambiado la configuración, mi instancia está actualizada y mi cuenta de Mailgun está dentro del límite de uso del nivel gratuito. Por lo tanto, creé un ticket de soporte con DigitalOcean porque pensé que tal vez habían bloqueado el puerto 587, y básicamente recibí una respuesta corta diciendo que habían impuesto restricciones al tráfico SMTP y que recomendaban usar su socio SendGrid.
Correo electrónico de DigitalOcean
Entendemos que tiene inquietudes sobre las restricciones SMTP vigentes en su cuenta. DigitalOcean no es un host de correo electrónico dedicado y la lucha contra el spam es constante. Debido a esto, se han impuesto restricciones a todas las cuentas.
También nos gustaría proporcionar un poco de información adicional sobre este problema. Dado que las direcciones IP en entornos de nube se utilizan y se devuelven a grupos disponibles con mucha frecuencia, se consideran dinámicas y poco confiables. Por ejemplo, actualmente se le asigna una dirección IP y usted es un usuario de correo responsable. Sigue todas las mejores prácticas para el correo y nunca envía spam ni correo no solicitado. Más tarde, cuando ya no necesite ese Droplet, lo destruye y la dirección IP queda libre para ser asignada a otro usuario de DigitalOcean. Ese usuario aprovecha la oportunidad para enviar un gran volumen de spam antes de que nuestro equipo de seguridad tome medidas sobre la cuenta infractora.
Los proveedores de correo como Gmail, Microsoft y otros no pueden determinar si el correo proveniente de una IP es legítimo o no hasta que adquiere una mala reputación. Para entonces, el daño ya está hecho. Es más seguro simplemente bloquear todo el correo proveniente de plataformas, como proveedores de servicios de Internet y entornos de alojamiento en la nube, donde las direcciones IP se asignan dinámicamente y son inherentemente riesgosas.
Si bien esto reduce las vías que tienen disponibles los spammers, también afecta a los usuarios legítimos. Nuestro equipo de Operaciones de Abuso está trabajando con las SBL para que las IP sean dadas de baja. Debido a esto, estamos restringiendo el tráfico SMTP en toda la plataforma DigitalOcean. Esto significa que no podemos eliminar la restricción SMTP que se aplica a su cuenta.
Entendemos que su flujo de trabajo puede tener necesidades de correo electrónico. Como solución a esta restricción, nos hemos asociado con SendGrid para ofrecer a todos nuestros clientes una mejor solución en la que no tendrá que preocuparse por la reputación de la IP y las listas negras. Puede leer más sobre esto en nuestro artículo aquí. A través de SendGrid, podrá enviar 100 correos electrónicos gratuitos por día y si su requisito excede el nivel gratuito, no dude en ponerse en contacto con el soporte de SendGrid para optar por un mejor plan que cumpla con sus requisitos.
Siempre estamos felices de ayudar si tiene preguntas adicionales, así que no dude en comunicarse.
----
Esta es una respuesta automática para ayudar a acelerar el servicio al obtener toda la información que necesitamos para ayudarlo. Debe responder a este correo electrónico para recibir asistencia adicional.
Equipo de Soporte de DigitalOcean
¿Alguien más ha experimentado este problema aleatorio? Ciertamente no quiero tener que cambiarme a SendGrid sin ninguna buena razón.
Editar…
Acabo de notar este tema Looks like DO is disabling Smtp in their Discourse hosting plans, por lo que parece que cualquiera que use DigitalOcean podría estar jodido.
