Reply-by-Email funcionaba, ahora está roto

Nuestro sistema de “Responder por Correo Electrónico” funcionó durante dos años, pero dejó de hacerlo hace 17 días sin razón aparente. He revisado los registros de acciones del personal correspondientes a ese periodo y no hubo cambios de configuración relevantes, ninguna actualización ni nuevos plugins. ¿Qué podría haber fallado?


No se recibieron correos electrónicos después del 30 de septiembre:


Tampoco están siendo rechazados:


No hay nada obviamente relacionado en los registros de errores, pero aparece esto:

aws-sdk-core-3.112.1/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call'

aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'

aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/dualstack.rb:36:in `call'

aws-sdk-s3-1.96.1/lib/aws-sdk-s3/plugins/accelerate.rb:50:in `call'

aws-sdk-core-3.112.1/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:22:in `call'

aws-sdk-core-3.112.1/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'

aws-sdk-core-3.112.1/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'

aws-sdk-core-3.112.1/lib/seahorse/client/plugins/request_callback.rb:71:in `call'

aws-sdk-core-3.112.1/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'

aws-sdk-core-3.112.1/lib/seahorse/client/plugins/response_target.rb:24:in `call'

aws-sdk-core-3.112.1/lib/seahorse/client/request.rb:72:in `send_request'

aws-sdk-s3-1.96.1/lib/aws-sdk-s3/client.rb:1274:in `copy_object'

/var/www/discourse/lib/backup_restore/s3_backup_store.rb:61:in `block in vacate_legacy_prefix'

/var/www/discourse/lib/backup_restore/s3_backup_store.rb:60:in `each'

/var/www/discourse/lib/backup_restore/s3_backup_store.rb:60:in `vacate_legacy_prefix'

/var/www/discourse/app/jobs/onceoff/vacate_legacy_prefix_backups.rb:7:in `execute_onceoff'

/var/www/discourse/app/jobs/onceoff/onceoff.rb:25:in `execute'

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

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

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

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

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

sidekiq-6.2.2/lib/sidekiq/processor.rb:196:in `execute_job'

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

sidekiq-6.2.2/lib/sidekiq/middleware/chain.rb:138:in `block in invoke'

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

sidekiq-6.2.2/lib/sidekiq/middleware/chain.rb:140:in `block in invoke'

sidekiq-6.2.2/lib/sidekiq/middleware/chain.rb:143:in `invoke'

sidekiq-6.2.2/lib/sidekiq/processor.rb:163:in `block in process'

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

sidekiq-6.2.2/lib/sidekiq/job_retry.rb:112:in `local'

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

sidekiq-6.2.2/lib/sidekiq.rb:38:in `block in <module:Sidekiq>'

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

sidekiq-6.2.2/lib/sidekiq/processor.rb:257:in `stats'

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

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

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

sidekiq-6.2.2/lib/sidekiq/job_retry.rb:79:in `global'

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

sidekiq-6.2.2/lib/sidekiq/logger.rb:11:in `with'

sidekiq-6.2.2/lib/sidekiq/job_logger.rb:33:in `prepare'

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

sidekiq-6.2.2/lib/sidekiq/processor.rb:162:in `process'

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

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

sidekiq-6.2.2/lib/sidekiq/util.rb:43:in `watchdog'

sidekiq-6.2.2/lib/sidekiq/util.rb:52:in `block in safe_thread'

Se está utilizando el sondeo manual, no el sondeo POP3:

image


Los remitentes que intentan responder por correo electrónico no reciben ninguna notificación de rechazo ni mensaje de error.

El envío de correos desde el foro funciona correctamente. No hay problemas en AWS SES (aunque no creo que eso tenga que ver con la función de responder por correo electrónico).

No hay nada malo en discourse-doctor (excepto que señala plugins no oficiales, pero estos no cambiaron durante este periodo).

Esto podría ser simplemente una coincidencia (y una parte de mí piensa que lo es), pero…

Es un grupo bastante acomodado; dudo que haya muchos dispositivos antiguos en uso.

Pensaba que era más bien un problema del lado del servidor, no del lado del cliente.

Creo que necesitas reconstruir tu contenedor de correo NFL.

Temo que necesito más explicación: no hay ninguna otra mención en todo meta sobre la NFL (excepto equipos de fútbol). ¿NFS? No hay contenedores así en /var/discourse/containers.

Lo siento. Corrección automática.

Reconstruye tu contenedor de correo.

cd /var/discourse 
./launcher rebuild mail-receiver 

Gracias @pfaffman, eso lo solucionó. Parece que ya habías visto esto antes; ¿hubiera podido hacerse algo mejor? En nuestro caso, las consecuencias fueron más allá de simplemente no recibir correos electrónicos de los usuarios:

VERP depende de los correos entrantes. Así que durante unos días no estuvimos gestionando los rebotes y las quejas, nuestra reputación con SES se desplomó y ellos suspendieron nuestros correos salientes.

Es una consecuencia de DST Root CA X3 Expiration (September 2021) - Let's Encrypt. Atrapó desprevenidos a varias personas y los problemas que causó para los administradores de Discourse autoalojados son lo suficientemente sutiles como para haber pasado desapercibidos. Además, todavía hay problemas que necesitan resolverse.

Sospecho que dejaron de gestionarse el 1 de octubre.

Nunca logré averiguar cómo hacer que SES funcionara. Una solución temporal de emergencia sería configurar el correo saliente con Mailgun.