¿Cómo configurar Discourse para recibir correos electrónicos de Mailgun?

Tengo una instalación de Discourse completamente funcional (instalada usando el enfoque recomendado) en un servidor (Linode) con Ubuntu. Puedo enviar correos electrónicos sin problemas y realizar registros de nuevos usuarios.

Estamos utilizando esta función https://meta.discourse.org/t/configuring-incoming-email-to-create-new-topics-or-group-messages/62977: Discourse necesita proporcionar una dirección de correo electrónico entrante.

En Mailgun, he creado una ruta “Catch All” que reenvía correos electrónicos a un webhook como se describe aquí: Discourse Mailgun Routes y he instalado el plugin.

Sin embargo, al revisar los registros de Mailgun, esto falla. ¿Alguna idea de cómo hacerlo?

{
	"timestamp": 1737657789.428326,
	"recipient-domain": "forum.domain.com",
	"envelope": {
		"transport": "http",
		"targets": "https://forum.domain.com/mailgun/routes/receive_mime",
		"sender": "me@myemail.com"
	},
	"primary-dkim": "",
	"delivery-status": {
		"code": 406,
		"session-seconds": 0.277,
		"message": "Not Acceptable",
		"attempt-no": 1,
		"description": ""
	},
	"event": "failed",
	"id": "4uIIPrRRTQOwluJaE-QpRA",
	"campaigns": null,
	"log-level": "error",
	"tags": [],
	"message": {
		"size": 4089,
		"headers": {
			"message-id": "CA+riLLnyMLCruT2DmhFjTuyvy7OtQ8NrT0X0m5PZXfK3uzwCEg@mail.gmail.com",
			"to": "domain+support-12@forum.domain.com",
			"subject": "Test",
			"from": "Me Me <me@myemail.com>"
		},
		"attachments": []
	},
	"recipient": "https://forum.domain.com/mailgun/routes/receive_mime",
	"user-variables": {},
	"flags": {
		"is-test-mode": false,
		"is-authenticated": false,
		"is-routed": false,
		"is-system-test": false
	},
	"storage": {
		"region": "us-east4",
		"env": "production",
		"key": "BAABAAAVXB5iOt41fPtDZaekVDDH1beaZA",
		"url": "https://storage-us-east4.api.mailgun.net/v3/domains/forum.domain.com/messages/BAABAAAVXB5iOt41fPtDZaekVDDH1beaZA"
	},
	"severity": "permanent"
}

La forma más fácil y recomendada es Configurar el correo electrónico entrante de entrega directa para sitios autoalojados con Mail-Receiver

2 Me gusta

Si habilita mailgun_log_rejections y envía otro correo electrónico, debería haber una razón de rechazo en sus registros de sidekiq (mailgun no conserva el cuerpo de la respuesta, por lo que esta es básicamente la única forma) y eso debería indicárselo.

De lo contrario, puede usar la configuración del receptor de correo si lo prefiere.

1 me gusta

Hola @Wolftallemo, gracias por el excelente plugin :slight_smile:

Revisé /logs pero no vi nada relacionado con este problema. ¿No estoy seguro si este es el lugar correcto para leer los logs de sidekiq o no?

Preferiría que el plugin funcionara, quizás le dé unos días más antes de intentar el receptor de correo. Mi instalación está detrás de un proxy inverso de traefik, así que estoy seguro de que será un poco más difícil de esa manera.

Saludos,

Dan

Sí, ahí es donde estarían, aunque es inusual.

Empezaría por revisar el filtro de spam de entrada. Es posible que esté configurado para no filtrar en el extremo de Mailgun.

Si este es el caso, yo haría una de estas dos cosas:

  • Cambiar el filtrado de spam de entrada en el extremo de Mailgun para añadir las cabeceras de spam (que se encuentra en la configuración del dominio).
  • Establecer mailgun_spam_detection en none (pero no recomiendo esto).

Pero supongo que establecerlo en none podría ser una prueba bastante fácil aquí también.

Hola,

Esas configuraciones ya parecen estar implementadas. Probablemente sea algo muy tonto que estoy haciendo. Intenté rápidamente con el receptor de correo; el único problema es que estoy ejecutando detrás de un proxy inverso de Traefik, así que sin duda necesitaré algunos intentos para que eso funcione con todas las etiquetas de docker compose requeridas, etc. ¡Por eso me gustó tanto tu plugin!

¿Por casualidad estás recibiendo correctamente los rebotes de Mailgun? Las únicas dos razones por las que podría ser rechazado sin un registro son: o tienes la clave incorrecta configurada (tiene que ser específicamente la clave de firma de webhook) o no la tienes configurada en absoluto.

Verificarías si accidentalmente configuraste algo que no sea la clave de firma de webhook (porque la redacción dentro de Discourse es algo cuestionable y probablemente debería cambiarse).

El receptor de correo funciona en el puerto 25, por lo que treafik no necesita saber nada al respecto.

Ya he cambiado mis registros MX, así que para evitar otro retraso de 24 horas, voy a seguir con el enfoque del receptor de correo.

Esto simplifica mucho las cosas. En este caso, ¿puedo ejecutar más o menos el script de ejemplo sin ningún cambio o integración con la pila de traefik/docker-compose?