Comment configurer Discourse pour recevoir des emails de Mailgun ?

J’ai une installation Discourse entièrement fonctionnelle (installée en utilisant l’approche recommandée) sur un serveur (Linode) exécutant Ubuntu. Je peux envoyer des e-mails sans problème et effectuer l’inscription de nouveaux utilisateurs.

Nous utilisons cette fonctionnalité Configuring incoming email to create new topics or group messages : Discourse doit fournir une adresse e-mail entrante.

Dans Mailgun, j’ai créé une route Catch All qui transfère les e-mails vers un webhook comme décrit ici : Discourse Mailgun Routes et j’ai installé le plugin.

Cependant, en regardant les journaux de Mailgun, cela échoue. Des idées sur la façon de faire cela ?

{
	"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 méthode la plus simple et recommandée est de Configurer la réception directe d’e-mails pour les sites auto-hébergés avec Mail-Receiver

2 « J'aime »

Si vous activez mailgun_log_rejections et envoyez un autre e-mail, il devrait y avoir une raison de rejet dans vos logs sidekiq (mailgun ne conserve pas le corps de la réponse, c’est donc essentiellement la seule façon) et cela devrait vous l’indiquer.

Sinon, vous pouvez utiliser la configuration mail-receiver si vous préférez.

1 « J'aime »

Salut @Wolftallemo merci pour cet excellent plugin :slight_smile:

J’ai bien vérifié /logs mais je n’ai rien vu concernant ce problème. Je ne suis pas sûr si c’est le bon endroit pour consulter les logs de sidekiq ?

Je préférerais faire fonctionner le plugin, je vais peut-être y consacrer encore quelques jours avant de tenter le mail-receiver. Mon installation est derrière un proxy inverse traefik donc je suis sûr que ce sera un peu plus difficile de cette façon.

Cordialement,

Dan

Oui, c’est là qu’ils se trouveraient, bien que ce soit inhabituel.

Je commencerais par vérifier le filtre anti-spam entrant. Il est possible qu’il ne soit pas configuré pour filtrer du côté de Mailgun.

Si c’est le cas, je ferais l’une des choses suivantes :

  • Modifier le filtrage anti-spam entrant du côté de Mailgun pour ajouter les en-têtes de spam (ce qui se trouve dans les paramètres du domaine)
  • Définir mailgun_spam_detection sur none (mais je ne le recommande pas)

Mais je suppose que le définir sur none pourrait également être un test plutôt facile ici.

Bonjour,

Ces paramètres semblent déjà en place. C’est probablement quelque chose de très bête que je fais. J’ai rapidement essayé le récepteur de courrier ; le seul problème est que je fonctionne derrière un proxy inverse Traefik, j’aurai donc sans aucun doute besoin de quelques tentatives pour que cela fonctionne avec toutes les étiquettes docker compose requises, etc. C’est pourquoi j’ai tellement aimé votre plugin !

Par hasard, recevez-vous correctement les bounces de Mailgun ? Les deux seules raisons pour lesquelles il serait rejeté sans journal sont : soit vous avez défini la mauvaise clé (il doit spécifiquement s’agir de la clé de signature du webhook), soit vous ne l’avez pas du tout définie.

Vérifiez si vous avez accidentellement défini autre chose que la clé de signature du webhook (car la formulation dans Discourse est quelque peu discutable et devrait probablement être modifiée).

Le récepteur de courrier fonctionne sur le port 25, donc Traefik n’a pas besoin d’en être informé.

J’ai déjà modifié mes enregistrements MX, donc pour éviter un autre délai de 24 heures, je vais persévérer avec l’approche du récepteur de courrier.

Cela simplifie beaucoup les choses. Dans ce cas, je peux plus ou moins simplement exécuter le script d’exemple sans aucune modification ni intégration avec la pile traefik/docker-compose ?