ToddZ
1
うーん。@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
pfaffman
(Jay Pfaffman)
3
https://www.mail-tester.com/ から取得したアドレスにテストメールを送信しようとするとどうなりますか?
ufw allow https を変更しても受信メールに影響するとは考えにくいです。
Vultr がポート 25 への送信接続を許可していない可能性があります。それが送信メールが機能しない理由を説明するかもしれません。
送信メールと受信メールは、互いに大きく分離されています。
Vultr(あるいは単にufwが存在する場合にDockerをインストールすること)には、コンテナ同士の通信を妨げるルールがあり、メール受信者がDiscourseに接続できないようになっているのだと思います。ufw allow https でそれを回避できます。
「いいね!」 1
Jagster
(Jakke Lehtonen)
5
しかし、Dockerはufwをバイパスするんですよね?
「いいね!」 1
デフォルトのネットワークでは、コンテナがローカルIPアドレスで別のコンテナに直接接続する場合にのみ、そのコンテナ自体のローカルIPアドレスとなります。
メール受信者がDiscourseのドメイン名を検索しても、そのローカルIPアドレスは取得できないため、Dockerネットワークを離れて、少なくとも一度はufwを通過してDiscourseに到達する必要があります。
「いいね!」 1
Jagster
(Jakke Lehtonen)
7
このトピックについて考えていました。あなたも参加していましたね。
「いいね!」 1
それは別の状況ですが、関連はあります。外部からの接続であり、Dockerは公開ポートを許可するルールを追加します。
netfilter/iptablesのチェーンルールにはあまり詳しくありませんが、上記は以下を示していると思います。
- 接続が
docker0、つまりデフォルトのDockerネットワークから来ている場合、前のチェーンに戻ります(そのチェーンでのルールの処理を停止します)。
- それ以外の場合、接続が
docker0以外から来ており、かつhttpsまたはhttpの場合、DNATを指定してFORWARDチェーンに進みます。
したがって、他のトピックに示されている配置では、httpsまたはhttpトラフィックが外部から入ってくると、Dockerに転送されます。ただし、トラフィックがDockerネットワークから来た場合、返され、INPUTチェーンによって拒否またはドロップされます。
ufw allow httpsは、INPUTチェーンに受け入れるルールを追加します。そのように、接続が上記のようにINPUTチェーンに戻されたとき、受け入れられ、Dockerがリッスンしていることが検出され、最終的にコンテナにルーティングされます。
「いいね!」 1
ToddZ
9
@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 のフレックス プラン (無料枠内) を自分で使用していますが、価格設定に関して混乱があったことは知っています。また、私が参加して以来、新規ユーザー向けに何かが変更された可能性があります。最後に見た情報 (現在も有効かは不明) では、トライアル終了後にフレックスに移行することは可能でしたが、非常に不明瞭でした。
pfaffman
(Jay Pfaffman)
11
はい。
Mailgun Flexに切り替えることもできますが、理解するのが難しくなっています。月に一度、なぜ見つけるのがそれほど難しいのかを尋ねるメールを送っています。
ToddZ
12
@Simon_Manning & @pfaffman – 再度、ご意見とポインターをいただきありがとうございます。正しい方向へ進むことができました。
MailerSend を試してみることにしました。現在の無料プランはかなり寛大なので、しばらくの間、私たちの非営利活動に適しているはずです。今のところ、すべて順調に稼働しています 
「いいね!」 5