DiscourseをMailgunからのメール受信に設定する方法

サーバー(Linode)でUbuntuを実行しており、推奨される方法でインストールされた完全に動作するDiscourseのインストール環境があります。メールの送信や新規ユーザーのサインアップは問題なく行えます。

Configuring incoming email to create new topics or group messages の機能を使用しています。Discourseには受信メールアドレスが必要です。

MailgunでCatch Allルートを作成し、Discourse Mailgun Routes に記載されているようにWebhookに転送し、プラグインをインストールしました。

しかし、Mailgunのログを見ると失敗しています。何かアイデアはありますか?

{
	"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"
}

最も簡単で推奨される方法は、Mail-Receiver を使用してセルフホストサイトの直接配信受信メールを設定することです。

「いいね!」 2

mailgun_log_rejections を有効にして別のメールを送信すると、Sidekiq ログに拒否理由が表示されるはずです(Mailgun はレスポンスボディを保持しないため、これが実質的に唯一の方法です)。これにより、問題が判明するはずです。

または、代わりに mail-receiver セットアップを使用することもできます。

「いいね!」 1

Hi @Wolftallemo、素晴らしいプラグインをありがとうございます :slight_smile:

/logs を確認しましたが、この問題に関連するものは何も見つかりませんでした。サイドキックのログを読むのに適切な場所かどうかはわかりません。

プラグインが動作するようになることを優先します。メール受信者の設定を試す前に、あと数日かかるかもしれません。私のインストールは traefik リバースプロキシの後ろにあるため、そちらの方法はもう少し難しくなるはずです。

よろしくお願いいたします。

Dan

はい、そこにあるはずですが、それは珍しいですね。

まず、受信スパムフィルターを確認することをお勧めします。Mailgun側でフィルターが設定されていない可能性があります。

その場合、以下のいずれかの対応をお勧めします。

  • Mailgun側の受信スパムフィルターを変更して、スパムヘッダーを追加する(これはドメイン設定にあります)
  • mailgun_spam_detection を none に設定する(これはお勧めしません)

しかし、none に設定することも、ここで比較的簡単なテストになるかもしれません。

こんにちは。

それらの設定はすでに適用されているようです。おそらく、私が何か非常に単純な間違いをしているのでしょう。メール受信者で試してみましたが、唯一の問題は、Traefikリバースプロキシの後ろで実行していることです。そのため、必要なDocker Composeラベルなどをすべて設定して機能させるには、数回の試行が必要になるでしょう。だからこそ、あなたのプラグインがとても気に入ったのです!

Mailgunからのバウンスを正常に受信できていますでしょうか?ログなしで拒否される唯一の理由は、以下のいずれかです。間違ったキーが設定されている(Webhook署名キーである必要があります)か、全く設定されていないかのいずれかです。

誤ってWebhook署名キー以外のものを設定していないか、再確認してください(Discourse内の文言はやや不明瞭で、変更すべきかもしれません)。

メール受信者はポート 25 で動作するため、traefik がそれを知る必要はありません。

MXレコードはすでに変更したので、さらに24時間遅延するのを避けるため、メール受信アプローチを続行します。

これにより、物事は非常に単純化されます。この場合、traefik/docker-composeスタックとの統合なしに、ほぼそのままサンプルスクリプトを実行できますか?