メール受信を設定したら、サイトがメールを送信しなくなりましたか?

うーん。@MathiasFoster@jryans と同じ Vultr の設定で、私も同じ (Net::OpenTimeout) 問題に遭遇しました。ufw allow https で受信メールが機能するようになりました。

しかし、サイトからメールが 送信 されなくなりました。受信メールを設定する前は、送信メールは正常に機能していました。

特に変わったことはしていません。
notification_email は admin@tasat.org です。
送信メールは Hostinger の smtp.titan.email を使用しています。

mail_receiver.yml には以下が含まれています。

`MAIL_DOMAIN` = forum.tasat.org
`DISCOURSE_MAIL_ENDPOINT` = https://forum.tasat.org/admin/email/handle_mail
`DISCOURSE_API_KEY` = [redacted]

スキップされたメールで、<replies+verp-14c9cc6eb915b08d4983c90c744ba4b4@forum.tasat.org>: Sender address rejected: not owned by user admin@tasat.org と表示されています。

メールの作成は初めてです。mail_receiver.yml の文字列から forum. を削除し、「replies@tasat.org」を「admin@tasat.org」の送信エイリアスにするべきでしょうか?

メール受信者は Discourse やメール送信とは独立しており、単にメールを受信するためだけに設定されたシンプルなメールサーバーとして機能し、Discourse API を使用してそれらのメールを Discourse にプッシュします。

設定において送信に影響を与える可能性のある唯一のことは、reply by email address の設定ですが、これは送信メールの Reply-To を設定するだけで、送信者アドレスには影響しないはずです。

確認のため、app.yml には(その他に)以下のような設定があると思われます。

DISCOURSE_SMTP_USER_NAME: admin@tasat.org
DISCOURSE_NOTIFICATION_EMAIL: admin@tasat.org

そして、reply by email address には以下のような設定があると思われます。

replies+%{reply_key}@forum.tasat.org

これで合っていますか?

もしそうであれば、返信を受け付けないメール通知はまだ機能しますか?メール認証はその例だと思いますので、アカウントを作成してそのメールが正常に送信されるか試すことができます。

その設定では、返信を受け付けることができるメールに対しては、送信されるメールが以下のように使用されるはずです。
From: admin@tasat.org (送信者アドレスも同じ)
Reply-To: replies+abc123@forum.tasat.org

通常、Reply-To は送信者情報の一部としては扱われず、単に人々が返信する際に使用されるデフォルトの To アドレスを提供するだけですが、Hostinger はそれを送信者情報として扱うのかもしれません。replies@forum.tasat.org の送信エイリアスを追加できるかもしれません。

「いいね!」 1

https://www.mail-tester.com/ から取得したアドレスにテストメールを送信しようとするとどうなりますか?

ufw allow https を変更しても受信メールに影響するとは考えにくいです。

Vultr がポート 25 への送信接続を許可していない可能性があります。それが送信メールが機能しない理由を説明するかもしれません。

送信メールと受信メールは、互いに大きく分離されています。

Vultr(あるいは単にufwが存在する場合にDockerをインストールすること)には、コンテナ同士の通信を妨げるルールがあり、メール受信者がDiscourseに接続できないようになっているのだと思います。ufw allow https でそれを回避できます。

「いいね!」 1

しかし、Dockerはufwをバイパスするんですよね?

「いいね!」 1

デフォルトのネットワークでは、コンテナがローカルIPアドレスで別のコンテナに直接接続する場合にのみ、そのコンテナ自体のローカルIPアドレスとなります。

メール受信者がDiscourseのドメイン名を検索しても、そのローカルIPアドレスは取得できないため、Dockerネットワークを離れて、少なくとも一度はufwを通過してDiscourseに到達する必要があります。

「いいね!」 1

このトピックについて考えていました。あなたも参加していましたね。

「いいね!」 1

それは別の状況ですが、関連はあります。外部からの接続であり、Dockerは公開ポートを許可するルールを追加します。

netfilter/iptablesのチェーンルールにはあまり詳しくありませんが、上記は以下を示していると思います。

  1. 接続がdocker0、つまりデフォルトのDockerネットワークから来ている場合、前のチェーンに戻ります(そのチェーンでのルールの処理を停止します)。
  2. それ以外の場合、接続がdocker0以外から来ており、かつhttpsまたはhttpの場合、DNATを指定してFORWARDチェーンに進みます。

したがって、他のトピックに示されている配置では、httpsまたはhttpトラフィックが外部から入ってくると、Dockerに転送されます。ただし、トラフィックがDockerネットワークから来た場合、返され、INPUTチェーンによって拒否またはドロップされます。

ufw allow httpsは、INPUTチェーンに受け入れるルールを追加します。そのように、接続が上記のようにINPUTチェーンに戻されたとき、受け入れられ、Dockerがリッスンしていることが検出され、最終的にコンテナにルーティングされます。

「いいね!」 1

@Simon_Manning @pfaffman

編集:メッセージの最後に参照

お返事ありがとうございます!少しの間離れていましたが、またこの問題に取り組んでいます…

はい、現時点ではその通りです。

今アカウントを作成しようとすると、送信ボタンが何も機能しません。まるで機能しないことを知っているかのようです。(そして、「スキップ済み」などには何も表示されません。)

編集:replies@tasat.orgをadmin@tasat.orgの送信エイリアスとして設定し、送信と受信の両方で機能することを確認しました。また、外部クライアントからreplies+verp-174bc7d8411bc4ec2cfa84c55bd31425@forum.tasat.org宛に送信されたメールの配信も確認しました。

念のため、何か試してみようと思い、「メールでの返信先アドレス」を変更しました。
replies+%{reply_key}@forum.tasat.org から replies+%{reply_key}@tasat.org

しかし、結果は変わりません。

mail-testerには届きません。すべての送信試行は、「スキップ済み」の下に、次のようなさまざまなメッセージとともに表示されます。

553 5.7.1 <replies+verp-8c79cd4e83023bda6df0624c2cacd36e@tasat.org>:
Sender address rejected: not owned by user admin@tasat.org

これは興味深いかもしれません。? discourse-doctorを実行すると、送信メールは次のように失敗します。

==================== MAIL TEST ====================
堅牢なテストを行うには、http://www.mail-tester.com/ からアドレスを取得してください。
REDACTED へのメール送信 . .
smtp.titan.email:587、ユーザー:admin@tasat.org、プレーン認証を使用して admin@tasat.org へのメールをテストしています。
SMTPサーバー接続に成功しました。
admin@tasat.org への送信. . .
メールは送信されませんでした。

理由: 553 5.7.1 <replies+verp-3cc19f7b135e6f56219e030999db9e29@tasat.org>:
Sender address rejected: not owned by user admin@tasat.org

返信+アドレス(またはforum.tasat.orgのアドレス)にメールクライアントから直接送信すると機能します。それは「返信」エイリアスに従い、管理者の受信トレイに届きます。拒否はどこから来ているのでしょうか?

「送信ホストメールが干渉しないようにする」という記事を調べました。私は/etc/postfixへのパスを持っていませんが、ここに私のnetstat出力があります。

root@forum:/var/discourse# netstat -tulpn | grep :25
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      1487576/docker-prox
tcp6       0      0 :::25                   :::*                    LISTEN      1487581/docker-prox

重大な編集 — Titanのサポートから今夜返信がありました:「返信先アドレスと差出人アドレスは同じでなければなりません。そうでないと、メールは送信されません。」したがって、すべてのトラブルシューティングは無駄になり、この要件を課さない新しいメールホストを探す必要があります。

網羅的ではありませんが、インストール ドキュメントにいくつかの送信サービスのおすすめと、Discourse での使用に関する基本的な情報が記載されています: discourse/docs/INSTALL-email.md at main · discourse/discourse · GitHub

そのドキュメントの最後にリンクされている次のトピックには、それらのサービスおよびその他のサービスでのバウンス処理に関する情報も含まれています:

私は Mailgun のフレックス プラン (無料枠内) を自分で使用していますが、価格設定に関して混乱があったことは知っています。また、私が参加して以来、新規ユーザー向けに何かが変更された可能性があります。最後に見た情報 (現在も有効かは不明) では、トライアル終了後にフレックスに移行することは可能でしたが、非常に不明瞭でした。

はい。

Mailgun Flexに切り替えることもできますが、理解するのが難しくなっています。月に一度、なぜ見つけるのがそれほど難しいのかを尋ねるメールを送っています。

@Simon_Manning & @pfaffman – 再度、ご意見とポインターをいただきありがとうございます。正しい方向へ進むことができました。

MailerSend を試してみることにしました。現在の無料プランはかなり寛大なので、しばらくの間、私たちの非営利活動に適しているはずです。今のところ、すべて順調に稼働しています :grin:

「いいね!」 5