Summary: Accept inbound emails from Mailgun.
GitHub: GitHub - Wolftallemo/discourse-mailgun-routes
Install: Follow the plugin installation guide.
Prerequisites
- Domain is verified with Mailgun and MX records pointed to Mailgun
- Reply by email is configured
Configuration
-
Obtain and set your Mailgun webhook signing key - while only steps 1 and 2 are required, now would be a great time to set up your temporary/permanent failure webhooks if you have not already done so.
-
Head to the Mailgun receiving page and click on “Create route”.
-
The expression type (unless you only want to receive on specific addresses) should be catch all. Check the box under “Forward” and set the URL to https://your.discourse/mailgun/routes/receive_mime
-
Click the “Save route” button.
Release 0.2
- Added new spam settings
mailgun_spam_detection
, mailgun_spam_score
, dkim_domain_exclusions
, and spf_domain_exclusions
To get started with these settings, head to domain settings in the Mailgun dashboard and set spam filtering to option 3.

If you use options 1 or 2, you must set mailgun_spam_detection
to none.
2 Likes
I use Mailgun to send emails but the mail-receiver container (Direct-delivery incoming email for self-hosted sites) to recieve them. Would this plugin benefit me? Thanks.
1 Like
Unless you are utilizing a ddos protection service such as cloudflare (or your provider blocks inbound connections on port 25) it doesn’t really have any benefit over the mail-receiver setup.
Also, Mailgun stopped including routes in their pay-as-you-go plan, so if you don’t have a prepaid subscription or an older account you should just use the mail-receiver setup.
1 Like
The mail-receiver doesn’t work properly with bounces – it doesn’t receive any bounce messages from Mailgun – "Discourse::NotFound" error when click "Email Type" field on admin/email/bounced – does that affect your view on whether to try the method described here? Thanks.
If you’re not receiving them via email at all, chances are they’re in the rejected tab (which is where they ended up for me when I used mail-receiver without webhooks).
I assume the same thing would happen using this plugin since it doesn’t do any parsing outside of dkim/spf and spam headers.
Bounce reasons are kept in mailgun logs, while it’s not ideal you can look at those in the meantime.
1 Like
No I think the mail receiver either doesn’t receive them from Mailgun (I think this) or just doesn’t send them to Discourse.