schungx
(Stephen Chung)
2022 年 11 月 18 日午前 4:11
1
SMTP プロバイダーを変更したいのですが、サーバーがメールを送信できると確信しているにもかかわらず、うまくいかないようです。
app.yml には次のように設定しています。
DISCOURSE_SMTP_ADDRESS: <<SMTP SERVER>>
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: <<USER>>
DISCOURSE_SMTP_PASSWORD: <<PASSWORD>>
telnet <<SMTP SERVER>> 465 を使用すると正常に接続できますが、メールを送信しようとすると、Discourse は次のように返します。
ERROR - Net::ReadTimeout with #<Socket:(closed)>
何か設定すべき点があるか、ご存知の方はいらっしゃいますか?
このトピックに基づいてサーバーをチェックしました: Troubleshoot email on a new Discourse install
手動で実行すると、サーバーに接続してテストメールを正常に送信できるようです。
> sudo ./launcher enter app
root@support-app:/var/www/discourse# openssl s_client -connect mail.xxxxxxxx.com:465
:
:
大量のジャンク
:
:
220 xxxxxxx.com Anti-spam GT for Coremail System (mispb-6da2110f-64b0-4d67-acf1-2d302bd594f9-xxxxxxx.com[20220915])
EHLO mail.xxxxxxxxx.com
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrUDI0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrpDiNKUCa0xDrUUUUj
250-STARTTLS
250-SMTPUTF8
250 8BITMIME
AUTH PLAIN xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
235 Authentication successful
mail from: <xxx@xxxxxx.com>
250 Mail OK
rcpt to: <xxxx@xxxxxxx.com>
250 Mail OK
data
354 End data with <CR><LF>.
content
.
250 Mail OK queued as AQAAfwBXr9nSGHdj3hEgAA--.7073S2
schungx
(Stephen Chung)
2022 年 11 月 18 日午前 7:18
3
Richard - Communiteq:
出力が表示されるまでどのくらいかかりますか?
コマンドを送信してから、ほぼすぐに表示されます。
編集:エラーの原因となっているステップを特定するために、より詳細なログを取得する方法はありますか?
pfaffman
(Jay Pfaffman)
2022 年 11 月 18 日午後 10:19
4
ホスティングプロバイダーによって送信ポートがブロックされている可能性が高いです。Mailgun(または他のほとんどのサービス)のようなサービスを使用している場合は、ポート2525で機能するはずです。自分でメールサーバーを実行している場合は、別のポート(2525など)でリッスンするように設定できます。
または(おそらく最も難しい方法ですが)、サーバーをホストしている人にチケットを送信して、ポートを開くように依頼することもできます。
schungx
(Stephen Chung)
2022 年 11 月 19 日午前 2:35
5
さて、./launcher enter app を実行し、次に openssl でメールサーバーに接続し、SMTP でログインして、Discourse コンテナ内から正常にメールを送信できることを考えると、ポートが機能しないとは考えにくいです…
「いいね!」 2
schungx
(Stephen Chung)
2022 年 11 月 19 日午前 5:12
6
コードをトレースしたところ、EHLO に到達すらしていないようです。SMTPサーバーには接続されていますが、SSLハンドシェイクが欠落しているため、サーバーが終了し、Discourse は応答を受け取れず、エラーが発生しました。
そのため、ポート 465 のサポートにバグがあるのではないかと疑っています(デフォルトで SSL になりますが、Discourse がそれを認識していないと思われます)。そのため、おそらく SSL 接続が確立されていません。
ポート 25 に切り替えると、少なくともエラーは解消されるようですが、まだ送信されたメールは受信できていません…
編集:ポート 25 は正常に機能することを確認しました(ポート 587 も同様のはずですが、残念ながら私の SMTP サーバーは 587 を公開していません)。
以前メールが届かなかったのは、SMTP サーバーによる Discourse サーバー IP アドレスの一時的なブラックリスト登録が原因でした。これは、多くの試行が失敗したためです。
「いいね!」 1
RGJ
(Richard - Communiteq)
2022 年 11 月 19 日午前 8:59
7
そうだと思います。
そして、あなたが最初ではないことがわかりました… DISCOURSE_SMTP_PORT 465 を検索すると、同様の問題がたくさん見つかりました。
最後のものには、(おそらく?)解決策へのリンク が含まれています。
このパッチにより、DISCOURSE_SMTP_FORCE_TLS=true を設定して、ポート 465 で暗黙的な TLS を使用することが可能になります。
「いいね!」 3
「465問題」に関するトピックもいくつか見かけました。しかし、明白なこと以外でのメールのデバッグは得意ではないため、トラブルシューティングガイドを引用しています。
人々の助けになるように、このガイドに追加できることはありますか?
「いいね!」 2
RGJ
(Richard - Communiteq)
2022 年 11 月 19 日午前 10:21
9
JammyDodger:
他に何か追加できることはありますか?
@schungx さんが DISCOURSE_SMTP_FORCE_TLS=true が実際に解決策であることを確認できれば、それを追加できます。
「いいね!」 5
schungx
(Stephen Chung)
2022 年 11 月 20 日午前 4:37
10
すぐに試してみます!
編集:@RGJ app.yml の DISCOURSE_SMTP_FORCE_TLS: true が問題を正常に解決することを証明できます!
ポート465を使用している場合は、DISCOURSE_SMTP_FORCE_TLS: true を設定してください という太字の警告を提案しますが、それともDiscourseはこのことを検出するのに十分賢いべきでしょうか?
「いいね!」 4
system
(system)
クローズされました:
2022 年 12 月 20 日午前 4:37
11
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.