DISCOURSE_SMTP_AUTHENTICATION: login を設定できません

こんにちは、メールの送信に問題が発生しています。Mailjetを使用しているのですが、以下のエラーが表示されます。

Connection reset by peer

そのため、app.ymlDISCOURSE_SMTP_AUTHENTICATION: loginを設定しようとしています。これで問題が解決するかもしれません。

その後、./launcher restart appを実行しましたが、再度discourse-doctorを実行すると、再びwith plain authと表示されてしまいます。

bump サポートカテゴリを追加するのを忘れました

一度破棄してから起動する必要があります

ありがとうございます、それは機能しましたが、どうやら間違っている箇所を修正していたようです。まだ「Job exception: Connection Reset by peer」と表示されます。

どこを確認すれば修正できるのか見当が付きません。DigitalOcean を使用しており、ポート 587 で送信しています。Mailjet では_plain_認証に戻す必要があるようなので、それを切り替えました。TLS はオプションとのことですが、TLS を有効・無効の両方で試してみましたが、やはりダメでした。もう何を修正すればよいのか全くわかりません。パスワードを二重引用符で囲んだり囲まなかったりして試しましたが、uname と pwd も二度確認しました。

DISCOURSE_DEVELOPER_EMAILS: 'user@email.com'

  ## TODO: The SMTP mail server used to validate new accounts and send notifications
  # SMTP ADDRESS, username, and password are required
  # WARNING the char '#' in SMTP password can cause problems!
  DISCOURSE_SMTP_ADDRESS: in-v3.mailjet.com
  DISCOURSE_SMTP_PORT: 587
  DISCOURSE_SMTP_USER_NAME: uname
  DISCOURSE_SMTP_PASSWORD: pwd
  DISCOURSE_SMTP_ENABLE_START_TLS: true
  DISCOURSE_SMTP_DOMAIN: radstarter.io
  DISCOURSE_NOTIFICATION_EMAIL: noreply@radstarter.io
  ## If you added the Lets Encrypt template, uncomment below to get a free SSL certificate
  LETSENCRYPT_ACCOUNT_EMAIL: me@example.com

ご助力いただければ幸いです。

telnet in-v3.mailjet.com 587 を実行して、接続できるかタイムアウトするかどうかを確認してください。タイムアウトする場合は、送信側のポートがブロックされているため、別のポートを使用する必要があります(Mailjet の場合、2525 が機能する可能性がありますが、確実ではありません)。あるいは、Digital Ocean にポートのブロックを解除してもらう必要があります。

telnet で接続できますが、即座に接続が切断されます。

~# telnet in-v3.mailjet.com 587
Trying 104.199.96.85...
Connected to in.mailjet.com.
Escape character is '^]'.
Connection closed by foreign host.

ファイアウォールが関与している場合、その接続ラインは誤解を招く可能性があります。ドメイン(in-v3.in. のエイリアスです)に対して接続を試みると「何らかのものに正常に接続した」と報告されるだけで、実際にはその「何か」がファイアウォールであり、ファイアウォールが接続を切断しているだけかもしれません。

もう一つ試せる方法として、telnet smtp-relay.gmail.com 587 を実行してみてください。これが同じように失敗する場合は、Digital Ocean サーバー上でそのポートがブロックされている可能性が高いです。これはサーバー外のファイアウォールによるものか、サーバー上で動作しているファイアウォールソフトウェアによるものかのいずれかです。

前者の場合、アカウントのコントロールパネルのどこかで制御できるか、あるいはサポートに連絡する必要があるかもしれません。後者の場合、おそらく iptables です。以下のコマンドを実行して、その状況かどうかを確認し、アウトバウンド接続に適用されるルールを一覧表示できます。

iptables -S OUTPUT

それはおそらく問題ないでしょう。

もしブロックされている場合、それは droplet の OS 外、ネットワークレベルでほぼ確実に実行されています。(自分がブロックされるようにファイアウォールを設定してしまった可能性は除きます。)

Mailjet に関するトピックがいくつかあります。それらをご覧になりましたか?

iptables -S OUTPUT

-P OUTPUT ACCEPT
-A OUTPUT -j ufw-before-logging-output
-A OUTPUT -j ufw-before-output
-A OUTPUT -j ufw-after-output
-A OUTPUT -j ufw-after-logging-output
-A OUTPUT -j ufw-reject-output
-A OUTPUT -j ufw-track-output

Gmail の SMTP は問題なく動作します。

はい、Mailjetの多くのトピックを確認しましたが、私のソリューションには問題となるものは見つかりませんでした。

ワンクリックインストールを使用しました。これが失敗の原因だと思われます。ドロプレットを削除して、クリーンインストールを行います。

追記:動作しました。ワンクリックインストーラーは絶対に使用しないでください