SMTPリレーへのメール送信に関する問題

こんにちは。
ユーザー名とパスワードが不要なSMTPリレー経由でのメール送信に問題が発生しています。mailx / sendmailを使用してリレーにメールを送信することは可能です。
設定は以下の通りです。

 DISCOURSE_SMTP_ADDRESS: xyz.example.com (難読化済み)
 DISCOURSE_SMTP_PORT: 587
 DISCOURSE_SMTP_AUTHENTICATION: plain

discourse_doctorを使用すると、以下のエラーが返ってきます。

Net::ReadTimeout

SMTPメッセージが不正に作成されているように思われます。送信は行われますが、ポート587で何も受信しません。これはWiresharkのトレースで証明できます。

問題の分析をさらに進めるために、より詳細なログ記録や追加のデバッグをどのように設定できるか教えていただけますでしょうか?通常のログからは何もわかりません。バックトレースを見つけましたが、私はRuby開発者ではないため、解釈できません。

/usr/local/lib/ruby/3.2.0/net/protocol.rb:229:in `rbuf_fill'
/usr/local/lib/ruby/3.2.0/net/protocol.rb:199:in `readuntil'
/usr/local/lib/ruby/3.2.0/net/protocol.rb:209:in `readline'
net-smtp-0.3.3/lib/net/smtp.rb:1057:in `recv_response'
net-smtp-0.3.3/lib/net/smtp.rb:659:in `block in do_start'
net-smtp-0.3.3/lib/net/smtp.rb:1067:in `critical'
net-smtp-0.3.3/lib/net/smtp.rb:659:in `do_start'
net-smtp-0.3.3/lib/net/smtp.rb:611:in `start'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bundler/gems/mail-5b700fc95ee6/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bundler/gems/mail-5b700fc95ee6/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bundler/gems/mail-5b700fc95ee6/lib/mail/message.rb:269:in `deliver!'
/usr/local/lib/ruby/3.2.0/delegate.rb:87:in `method_missing'
/var/www/discourse/lib/email/sender.rb:286:in `send'
/var/www/discourse/app/jobs/regular/user_email.rb:79:in `send_user_email'
/var/www/discourse/app/jobs/regular/user_email.rb:39:in `execute'
/var/www/discourse/plugins/chat/lib/chat/user_email_extension.rb:6:in `execute'
/var/www/discourse/app/jobs/base.rb:249:in `block (2 levels) in perform'
rails_multisite-4.0.1/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/app/jobs/base.rb:236:in `block in perform'
/var/www/discourse/app/jobs/base.rb:232:in `each'
/var/www/discourse/app/jobs/base.rb:232:in `perform'
sidekiq-6.5.8/lib/sidekiq/processor.rb:202:in `execute_job'
sidekiq-6.5.8/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'
sidekiq-6.5.8/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:134:in `call'
sidekiq-6.5.8/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'
sidekiq-6.5.8/lib/sidekiq/middleware/chain.rb:182:in `invoke'
sidekiq-6.5.8/lib/sidekiq/processor.rb:169:in `block in process'
sidekiq-6.5.8/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
sidekiq-6.5.8/lib/sidekiq/job_retry.rb:113:in `local'
sidekiq-6.5.8/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
sidekiq-6.5.8/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'
sidekiq-6.5.8/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
sidekiq-6.5.8/lib/sidekiq/processor.rb:263:in `stats'
sidekiq-6.5.8/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
sidekiq-6.5.8/lib/sidekiq/job_logger.rb:13:in `call'
sidekiq-6.5.8/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
sidekiq-6.5.8/lib/sidekiq/job_retry.rb:80:in `global'
sidekiq-6.5.8/lib/sidekiq/processor.rb:124:in `block in dispatch'
sidekiq-6.5.8/lib/sidekiq/job_logger.rb:39:in `prepare'
sidekiq-6.5.8/lib/sidekiq/processor.rb:123:in `dispatch'
sidekiq-6.5.8/lib/sidekiq/processor.rb:168:in `process'
sidekiq-6.5.8/lib/sidekiq/processor.rb:78:in `process_one'
sidekiq-6.5.8/lib/sidekiq/processor.rb:68:in `run'
sidekiq-6.5.8/lib/sidekiq/component.rb:8:in `watchdog'
sidekiq-6.5.8/lib/sidekiq/component.rb:17:in `block in safe_thread'

アプリケーションを最新の安定版にダウングレードしましたが、この問題は解決しませんでした。以前この件を担当していた担当者は休暇中のため、最新アップデートが行われる前のバージョンを特定できません。メール関連の最近のコード変更にも気づきました。もしかしたら、そこに問題があるのでしょうか?

ありがとうございます。

「いいね!」 1

メールエンジンでタイムアウトが発生している可能性があります。これは最近別のトピックで言及されていました。Postfixはデフォルトで5秒のタイムアウトがあるようです。

メールでの返信や投稿を機能させるのに数日間頭を悩ませました。Discourse内とメールサーバーの両方で、メーラーの設定やファイアウォールの設定など、多くの細かい点を正しく設定する必要がありました。

まだメーラーの問題、特に複数のISPでホワイトリストに登録してもらうことについては、まだ取り掛かっていません。SPFとDKIMは機能しています。

回答ありがとうございます。問題が何であるかを示すものを探しています。Wiresharkのトレースではメールが送信されていることが示されていますが、応答がないため、これは難しいです。通常のLinux sendmailを使用したメールは問題なく機能します。SPFとDKIMもそれぞれのドメインに設定されています。Railsコンソールで問題を再現できます。

message = TestMailer.send_test("[ycxi@examle.com](mailto:ycxi@examle.com)")
Email::Sender.new(message, :test_message).send

私は全くRubyの専門家ではありません。スタックトレースよりも詳細なログを取得できるか確認します。

[5] pry(main)> wtf?
Exception: Net::ReadTimeout: Net::ReadTimeout

we fixed a similar issue by increasing the SMTP timeout thresholds in the app.yml file - refering to this topic:

app.yml の変更方法:
image

yaml を変更した後、アプリを再構築しました:
sudo ./launcher destroy app && sudo ./launcher start app

変更は GUI に反映されています