Configurar VERP para gestionar correos rebotados

Configuración del manejo de rebotes

Discourse utiliza la técnica Variable envelope return path (VERP) para gestionar los correos electrónicos devueltos (bounces).

Para habilitar VERP, configure la opción del sitio “reply by email address” (dirección de correo electrónico de respuesta) con una plantilla de dirección de correo electrónico que utilice el signo +. La predeterminada
replies+%{reply_key}@discourse.example.com
… funciona bien. Si está utilizando su propio servidor de correo electrónico o el de su empresa, eso es todo :tada:

Su instancia de Discourse debe ser capaz de recibir correo enviado a esta dirección. Esto debería funcionar a través de POP, pero recomendamos encarecidamente el Correo electrónico entrante de entrega directa para sitios autoalojados

Sin embargo, si está utilizando un servicio de correo electrónico de terceros, deberá habilitar VERP o activar sus webhooks de la siguiente manera:

MailGun

  1. Inicie sesión en MailGun y vaya a su panel de control; busque en la columna izquierda la página Sending (Envío) → Webhooks.
  2. Seleccione la pestaña Configuration (Configuración) y copie la HTTP signing key (Clave de firma HTTP)
  3. En su sitio de Discourse, configure la opción del sitio Mailgun API key (Clave API de Mailgun) con su HTTP signing key (Clave de firma HTTP)
  4. De vuelta en Mailgun, haga clic en el botón Add webhook (Añadir webhook) (seleccionando Domain-level (A nivel de dominio)) y establezca la HTTP post URL (URL de publicación HTTP) en https://your.discourse/webhooks/mailgun. Pruébelo.
  5. Seleccione tanto Permanent Failure (Fallo permanente) como Temporary failure (Fallo temporal), compruebe el Dominio y luego cree el Webhook.

SendGrid

  • Inicie sesión en SendGrid y vaya a Mail Settings (Configuración de correo)
  • expanda la opción Event Webhook (Webhook de eventos) y habilítela si aún no lo está
  • haga clic en edit (editar) para establecer la HTTP POST URL (URL POST HTTP) en http://your.discourse/webhooks/sendgrid
  • asegúrese de haber seleccionado las siguientes 3 acciones: Dropped (Descartado), Deferred (Aplazado) y Bounced (Rebotado)
  • guarde los cambios haciendo clic en el :white_check_mark:

MailJet

  • Inicie sesión en MailJet y vaya a event tracking (seguimiento de eventos)
  • marque el evento bounce (rebote)
  • establezca la endpoint URL (URL del punto final) en http://your.discourse/webhooks/mailjet
  • marque el :white_medium_square: en la columna group events (agrupar eventos)
  • haga clic en el botón save (guardar)

SparkPost

  • Inicie sesión en SparkPost y vaya a your dashboard (su panel de control).
  • Seleccione Account (Cuenta) en los iconos del menú izquierdo
  • Seleccione Webhooks en el menú ( SparkPost )
  • Seleccione New Webhook (Nuevo Webhook).
  • Introduzca un valor descriptivo para Webhook Name (Nombre del Webhook), por ejemplo, Discourse Forum
  • Introduzca una Target URL (URL de destino) como http://your.discourse/webhooks/sparkpost
  • Seleccione Add Webhook (Añadir Webhook).

Amazon Simple Email Service (AWS SES)

  • En Discourse:
    • configure reply by email enabled (respuesta por correo electrónico habilitada) y reply by email address (dirección de correo electrónico de respuesta) según la parte superior de la OP
    • configure manual polling enabled (sondeo manual habilitado)
  • En AWS:
    • cree un Tema SNS
    • cree una Suscripción SNS para el Tema creado como HTTPS apuntando a https://your.discourse/webhooks/aws
    • vaya a SES \u003e Verified Identities (Identidades verificadas), seleccione su dominio del sitio y vaya a la pestaña Notifications (Notificaciones). Edite sus Notificaciones de Feedback. Establezca el feedback de Rebote (Bounce feedback) y el feedback de Queja (Complaint feedback) en el Tema SNS que acaba de crear

Postmark

  • Inicie sesión en Postmark y luego seleccione el servidor que se utiliza para enviar correos electrónicos de Discourse
  • Seleccione la secuencia de mensajes asociada con los correos electrónicos de Discourse, normalmente Default Transactional Stream (Secuencia transaccional predeterminada)
  • Haga clic en Webhooks
  • Haga clic en Add webhook (Añadir webhook)
  • Introduzca Webhook URL (URL del Webhook) como http://your.discourse/webhooks/postmark
  • Bajo, Which events should we send? (¿Qué eventos debemos enviar?), marque Delivery (Entrega) y Spam complaint (Queja de spam)
  • Desplácese hacia abajo y haga clic en Save webhook (Guardar webhook)

Prueba de Rebotes

Para asegurarse de que todo funciona, haga lo siguiente:

  1. Regístrese para obtener una cuenta nueva en su sitio con un correo electrónico obviamente incorrecto, del tipo bademail@obviously-invalid-domain.com o clearly.nobody.has.this.email.address@gmail.com
  2. Espere un tiempo para que los correos reboten completamente (consulte los registros de su proveedor, si lo desea; normalmente se mostrarán bajo el nivel de registro “warn” (advertencia) o “error” (error))
  3. Compruebe /admin/email/bounced en su sitio para confirmar que el rebote fue capturado. Tenga en cuenta que esto puede tardar hasta 48 horas, dependiendo de cuántos reintentos y la lógica particular de su proveedor de correo electrónico.

Configuración de Rebotes

El manejo de rebotes se puede personalizar utilizando estas opciones del sitio

  • soft bounce score (puntuación de rebote suave): puntos añadidos a la “puntuación de rebote” del usuario cuando recibimos un rebote temporal de su dirección de correo electrónico
  • hard bounce score (puntuación de rebote duro): puntos añadidos a la “puntuación de rebote” del usuario cuando recibimos un rebote permanente (o desconocido) de su dirección de correo electrónico
  • reset bounce score after days (restablecer puntuación de rebote después de días): número de días durante los cuales no debemos recibir ningún rebote antes de que podamos restablecer la “puntuación de rebote” del usuario a 0
  • bounce score threshold (umbral de puntuación de rebote): umbral de puntuación a partir del cual dejaremos de enviar correos electrónicos no urgentes al usuario

Última revisión por @SaraDev el 2022-07-19T20:00:00Z

51 Me gusta
Does Discourse use Mailgun's validations feature?
VERP bounce replies ignored when using Mailgun
Postmark bounce support?
Email-in replies thread wrongly
Amazon SES/SNS email complaints not received, bounces missing information
What mail service do you recommend?
Confused about VERP, email bounces & additional setup on Discourse
Reply-by-Email was working, now broken
Mailgun "temporarily disabled due to high bounce rate"
How to deactive account of those users who're not receiving emails
Surface data about users with too many bounces
"Discourse::NotFound" error when click "Email Type" field on admin/email/bounced
Configure direct-delivery incoming email for self-hosted sites with Mail-Receiver
"Discourse::NotFound" error when click "Email Type" field on admin/email/bounced
Bounced Email Info Not Found
Fix AWS SNS Bounce
How to block outgoing emails to at anon.forumurl?
Mailgun api key check backward (no API key should be required if bounces handled by mail receiver)
Switching from SMTP to oAuth
Is handling bouncing emails optional, or is it something I definitely need to set up?
Moving from Mailgun to Amazon SES as an amateur
"Discourse::NotFound" error when click "Email Type" field on admin/email/bounced
Mailgun api key, what is it for?
Question about the mail-receiver
Goodbye Sparkpost
Migrated forum with many invalid (bouncing) emails
Amazon SES API - How to setup?
Zero entries in bounced email list
Email suppression list handling
Email suppression list handling
How hard is it to handle Discourse after installation
Set up mail-receiver, but now site won't send any emails?
Installation by the book
Too many user emails domains not working lead to mailgun domain disabled: what to do?
Mailgun huge dropped subscriber
Flush bouncing user mail address
Configuring AWS SES for outgoing, bounce, and incoming email
Notes on Silencing or Deleting users
Retrying bounced emails?
Discourse Mailgun Routes
"Discourse::NotFound" error when click "Email Type" field on admin/email/bounced

Si alguien quiere probar esto y confirmar que funciona, lo añadiré al OP.

Crear webhooks de Mailgun

for event_type in 'permanent_fail' 'temporary_fail'; do
curl -s --user 'api:'=mg_api_key= \
          https://api=mg_region=.mailgun.net/v3/domains/$discourse_hostname/webhooks \
          -F id="$event_type" \
          -F url="https://=discourse_hostname=/webhooks/mailgun"
done

Se ha actualizado la sección de Mailgun, ya que han cambiado algunas cosas en su interfaz de usuario:

4 Me gusta

¿Existe una forma sencilla de gestionar las quejas por correo electrónico automáticamente utilizando VERP? Para el caso de usuarios que no se dan de baja, sino que simplemente marcan el correo electrónico como spam. Es bastante crítico dejar de enviar correos electrónicos a las personas que se quejan.

2 Me gusta

Solo como información para todos los que tienen bajos niveles de habilidad: la parte de SES está muy desactualizada, supongo.

Simplemente no elijas FIFO, incluso si se sugiere :man_facepalming:

1 me gusta

Hola @pfaffman, gracias por compartir esto, pero una ayuda rápida por favor.

¿Qué pasa si estoy usando otro proveedor de correo electrónico en lugar de la lista anterior? ¿Todavía es posible?

2 Me gusta

En mis registros, el endpoint webhooks/mailjet produjo una advertencia:

Se recibió un webhook de Mailjet, pero no se ha configurado ningún token. Este es un comportamiento inseguro y se desautorizará en el futuro.

En /admin/site_settings/category/email?filter=mailjet está el campo “Token de webhook de Mailjet”, sin instrucciones sobre cómo configurarlo correctamente.

Fui a Mailjet y agregué al campo Endpoint URL: https://discourse.example.org/webhooks/mailjet?t=[tu_token]

Reemplacé [tu_token] con uno generado por un Generador de Tokens, y ingresé el mismo valor en el campo “Token de webhook de Mailjet” en /admin/site_settings/category/email?filter=mailjet.

Eso parece haber eliminado las advertencias del registro.

1 me gusta

[cita=“markersocial, post:199, topic:45343, full:true”]
¿Hay una manera sencilla de manejar automáticamente las quejas de correo electrónico actualmente usando VERP? Para el caso de usuarios que no se dan de baja sino que simplemente marcan el correo como spam. Es bastante crítico dejar de enviar correos a las personas que se quejan.
[/cita]

Solo quería señalar que he confirmado que las quejas de spam para AWS SES se envían desde complaints@email-abuse.amazonses.com a la dirección de correo electrónico de respuesta (en la configuración de Discourse) y actualmente se tratan como rebotes duros por Discourse a través de la configuración estándar de VERP (sin webhooks SNS).

Acabo de encontrar esto, que podría ser útil para algunos que también usan SES (la sección ‘Usar el simulador de buzón’):

Se puede usar el ‘enviar un correo electrónico de prueba’ dentro de la administración de Discourse para enviar a direcciones específicas que simularán cosas como rebotes y quejas sin dañar su reputación de envío.

por ejemplo:

bounce@simulator.amazonses.com
complaint@simulator.amazonses.com

Hay otras direcciones de prueba en el enlace de arriba.

1 me gusta

Acabo de actualizar la sección de Mailgun, ya que las cosas han cambiado un poquito otra vez (¡para mejor!).