مشاكل في إرسال البريد إلى SMTP relay

مرحباً،
نواجه مشاكل في إرسال رسائل البريد الإلكتروني عبر مرحل SMTP لا يتطلب اسم مستخدم وكلمة مرور. أستطيع إرسال رسائل البريد الإلكتروني إلى المرحل باستخدام mailx / sendmail.
هذه هي الإعدادات.

 DISCOURSE_SMTP_ADDRESS: xyz.example.com (تم إخفاؤه)
 DISCOURSE_SMTP_PORT: 587
 DISCOURSE_SMTP_AUTHENTICATION: plain

ما أحصل عليه مرة أخرى عند استخدام discourse_doctor يعطي هذا الخطأ.

Net::ReadTimeout

يبدو لي أن رسالة SMTP المرسلة تم إنشاؤها بشكل خاطئ حيث أننا نرسل الأشياء، ولكننا لا نحصل على أي شيء في المقابل على المنفذ 587. هذا يمكن إثباته من خلال تتبع Wireshark.

هل يمكنك من فضلك توضيح كيفية إضافة تسجيل أكثر تفصيلاً أو تصحيح إضافي حتى نتمكن من تحليل المشكلة بشكل أكبر؟ السجلات العادية لا تخبرني شيئًا. وجدت تتبع المكدس (backtrace)، لكنني لست مطور 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 وعلى خادم البريد الخاص بك، بما في ذلك إعدادات المرسل وإعدادات جدار الحماية.

ولم أبدأ بعد في التعامل مع مشكلات المرسل، وتحديدًا الحصول على قائمة بيضاء لدى العديد من مزودي خدمة الإنترنت. لدي SPF و DKIM يعملان.

شكرا على الإجابة، نعم، لكنني أبحث عن شيء يخبرني ما هي المشكلة. الأمر صعب لأن تتبع Wireshark يظهر أن البريد الإلكتروني تم إرساله، ولكن لم يتم تقديم أي رد. البريد الإلكتروني العادي باستخدام Linux sendmail يعمل بدون مشكلة. تم تعيين SPF و DKIM على النطاق المعني كذلك. أنا قادر على تكرار المشكلة في وحدة تحكم Rails.

message = TestMailer.send_test(“ycxi@examle.com”)
Email::Sender.new(message, :test_message).send

أنا لست خبيراً في Ruby على الإطلاق، سأرى ما إذا كان بإمكاني الحصول على المزيد من التسجيلات المفصلة بدلاً من تتبع المكدس:

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

لقد قمنا بإصلاح مشكلة مماثلة عن طريق زيادة عتبات مهلة SMTP في ملف app.yml - بالإشارة إلى هذا الموضوع:

كيف تم تعديل app.yml:
image

بعد تغيير ملف yaml، تم إعادة بناء التطبيق:
sudo ./launcher destroy app && sudo ./launcher start app

ينعكس التغيير في واجهة المستخدم الرسومية: