==================== MAIL TEST ====================
For a robust test, get an address from http://www.mail-tester.com/
Or just send a test message to yourself.
Email address for mail test? ('n' to skip) [admin@burlyqna.org]:
Sending mail to admin@burlyqna.org. . .
Testing sending to admin@burlyqna.org using smtp.mailfence.com:465, username:philion@mailfence.com with plain auth.
SMTP server connection successful.
Sending to admin@burlyqna.org. . .
Sending mail failed.
end of file reached
هناك الكثير من النقاش حول 465 في منتديات الدعم. بناءً على قراءتي، يبدو أن Discourse يقوم بالكثير من الافتراضات حول SSL و TLS عبر SMTP، وهناك عدد قليل من متغيرات البيئة التي تتحكم في السلوكيات التفصيلية.
ومع ذلك، نظرًا لعدد الأخطاء المبلغ عنها والأسئلة ذات الصلة في هذه المنتديات، لدي انطباع قوي بأن هذه الإعدادات موثقة بشكل سيء ويصعب استخدامها. وبالنظر إلى مشاكل مماثلة تعود إلى عام 2017، كانت هذه مشكلة لسنوات عديدة الآن.
يمكن أن تكشف عمليات البحث عن “port 465” أو “Net::ReadTimeout smtp” عن قائمة طويلة من المشكلات المماثلة.
لقد قمت بتحديث كلمات المرور لإزالة الرموز، وانتظرت تأخير انتشار مصادقة SMTP (وقت كافٍ لإعداد الغداء)، وتأكدت من بيانات الاعتماد الصحيحة لإرسال البريد الإلكتروني بشكل صحيح باستخدام swaks، و…
نفس الخطأ.
لاحظت أن إعادة البناء تزيل تفريغ تتبع المكدس، لذا سأضيفه مرة أخرى وأحاول ./launcher destroy app && ./launcher start app
==================== اختبار البريد ====================
لإجراء اختبار قوي، احصل على عنوان من http://www.mail-tester.com/
أو فقط أرسل رسالة اختبار إلى نفسك.
عنوان البريد الإلكتروني لاختبار البريد؟ ('n' لتخطي) [admin@burlyqna.org]:
إرسال بريد إلى admin@burlyqna.org. . .
اختبار الإرسال إلى admin@burlyqna.org باستخدام smtp.mailfence.com:465، اسم المستخدم: philion مع مصادقة عادية.
تم الاتصال بنجاح بخادم SMTP.
إرسال إلى admin@burlyqna.org. . .
فشل إرسال البريد.
نهاية الملف تم الوصول إليها
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:237:in `rbuf_fill'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:199:in `readuntil'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-protocol-0.2.2/lib/net/protocol.rb:209:in `readline'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1017:in `recv_response'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1008:in `block in getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1027:in `critical'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:1006:in `getok'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:986:in `quit'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:732:in `do_finish'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `ensure in start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/net-smtp-0.5.1/lib/net/smtp.rb:645:in `start'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:109:in `start_smtp_session'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/network/delivery_methods/smtp.rb:100:in `deliver!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mail-2.8.1/lib/mail/message.rb:269:in `deliver!'
بعد الكثير من الاختبارات، والكثير من المساعدة من @thoka، أقدم الملخص التالي:
أنا قادر على تشغيل اختبارات SMTP باستخدام نفس بيانات الاعتماد التي قدمتها لـ container/app.yml والتي تعمل مع كل من swaks (Swaks - Swiss Army Knife for SMTP) ورمز Ruby النموذجي الذي قدمه @thoka (انظر أدناه).
هذه تعمل باستمرار. ومع ذلك، فإن محاولة إعداد خادم Discourse (الذي لا يمكنه إرسال البريد الإلكتروني الأولي للمستخدم المسؤول) أو استخدام روبوت discourse-doctor يؤدي إلى فشل البريد الإلكتروني:
==================== MAIL TEST ====================
For a robust test, get an address from http://www.mail-tester.com/
Or just send a test message to yourself.
Email address for mail test? ('n' to skip) [admin@burlyqna.org]:
Sending mail to admin@burlyqna.org. . .
Testing sending to admin@burlyqna.org using smtp.mailfence.com:465, username:xxx@mailfence.com with plain auth.
SMTP server connection successful.
Sending to admin@burlyqna.org. . .
Sending mail failed.
end of file reached
يبدو أن هذا فشل في تكوين البروتوكول، حيث يمكنني إرسال رسائل بريد إلكتروني تجريبية باستخدام أدوات Ruby القياسية:
require 'mail'
SMTP_SERVER = 'smtp.mailfence.com'
SMTP_PORT = 465
USERNAME = 'xyz'
PASSWORD = '...'
FROM = 'admin@burlyqna.org'
TO = 'testing@gmail.com'
SUBJECT = 'Test from Ruby'
BODY = "Hello,\n\nThis is a test email sent from Ruby over a SSL-secured connection.\n\nBest regards!"
Mail.defaults do
delivery_method :smtp, {
address: SMTP_SERVER,
port: SMTP_PORT,
user_name: USERNAME,
password: PASSWORD,
domain: "burlyqna.org",
enable_starttls_auto: :false,
authentication: :plain,
ssl: true,
}
end
begin
puts 'Sending email...'
puts "SMTP_SERVER: #{SMTP_SERVER}"
puts "SMTP_PORT: #{SMTP_PORT}"
puts "USERNAME: #{USERNAME}"
puts "PASSWORD: #{PASSWORD}"
puts "FROM: #{FROM}"
puts "TO: #{TO}"
mail = Mail.new do
to TO
from FROM
subject SUBJECT
body BODY
end
mail.deliver!
end