بريد إلكتروني مستقل تمامًا مع Discourse و Stalwart-mail

استكشاف الأخطاء وإصلاحها

متابعة للمناقشة من Stalwart-mail+Discourse: POP3 EOF reached (again):

بما أن @programmerjake يستكشف أيضًا التكامل بين Discourse و Stalwart-mail، أردت أن أسألك عما إذا كنت تواجه أخطاء TLS على SMTPS:

2024-07-01T17:37:49.718793Z DEBUG common::listener: Failed to accept TLS connection: tls handshake eof context="tls" event="error" instance="smtps" protocol=Smtp remote.ip="128.140.68.114"
2024-07-01T17:37:49.899171Z DEBUG common::listener: Failed to accept TLS connection: tls handshake eof context="tls" event="error" instance="smtps" protocol=Smtp remote.ip="128.140.68.114"

على جانب Discourse، هناك نافذة منبثقة للخطأ:

ERROR - Net::ReadTimeout with #<TCPSocket:(closed)>

يبدو أن هذا يتعلق بعدم دعم مكتبة OpenSSL الخاصة بـ Ruby لـ TLSv1.3، ولكن هذا يبدو بعيد الاحتمال نظرًا لأنه يجب أن يعمل مع TLSv1.2 على أي حال.


تثبيت عامل

Stalwart-mail >= v0.8.3

هذا كل شيء، مع هذا الإصدار، يدعم Stalwart-mail الآن إرسال واستقبال البريد الإلكتروني مع Discourse. :tada:

Stalwart-mail هو خدمة بريد إلكتروني ثنائية واحدة تغطي جميع احتياجات بريدك الإلكتروني دون فوضى التكوين التي اعتدنا عليها لعقود مع Postfix + Spamassassin + Dovecot + إلخ. هنا، تقوم بإعداد تثبيتك ويكون لديك كل شيء جاهزًا للانطلاق، بما في ذلك أتمتة TLS الكاملة مع ACME و LetsEncrypt، و SPF، و DMARC، و DKIM، و ARC، ودعم DANE بشكل افتراضي (بما في ذلك التقارير من وإلى نطاقاتك)، و TLSA وسجلات DNS الأخرى جاهزة للانطلاق، والتكوين التلقائي والاكتشاف التلقائي لإعداد عميل البريد الإلكتروني بسهولة، والمجلدات المشتركة (عبر “المجموعات”)، والأسماء المستعارة، وفلاتر ManageSieve على جميع الرسائل الواردة والصادرة في مراحل مختلفة من العملية، والإدارة عبر الويب، ودعم المصادقة الثنائية و TOTP، و OAUTH، والعديد من الميزات الأخرى. لا حاجة لترحيل بريدك الإلكتروني إلى الخارج بعد الآن!

  1. استخدم مستمع submission على المنفذ 587 لـ SMTP
    1. تعطيل TLS الضمني (يعني: استخدام STARTTLS)
    2. تأكد من تعطيل تجاهل ترتيب العملاء (إما في الإعدادات الافتراضية أو تجاوز خيارات TLS للمستمع)
  2. تمكين مستمع POP3 على المنفذ 995 مع TLS الضمني

Discourse

قم بتكوين البريد الإلكتروني بشكل طبيعي باستخدام المنفذ 587 للإرسال (مع STARTTLS) والمنفذ 995 لـ POP3s مع SSL/TLS.

إعجاب واحد (1)

إذًا، هذا بديل مفتوح المصدر لـ Mailgun وما شابه؟ هذا يبدو جذابًا للغاية نظرًا لأن معظم هذه الخدمات باهظة الثمن جدًا للكميات المنخفضة.

أفترض أنه يتطلب جهازًا خاصًا به (افتراضيًا). سيكون من المدهش إذا كان بإمكانه العمل بسهولة على نفس الجهاز مثل Discourse.

هل تعرف ما إذا كان يمكن لمثيل واحد من Stalwart Mail خدمة عدة مثيلات من Discourse؟

إعجاب واحد (1)

نعم، يمكنك دعم مجالات متعددة بسهولة.

أولاً، تضيف مجالاً، ثم يعطيك سجلات DNS لإعداد MX (تبادل البريد). ستستخدم جميع مجالاتك نفس MX.

يجب أن يكون من السهل تشغيل Stalwart-mail على نفس الجهاز مثل Discourse. نظرًا لأن كلاهما يتطلب منفذ TLS 443، فستستخدم وكيلًا على هذا المنفذ لإرسال البيانات إلى كلا الخدمتين. ولكن لا معنى لوجود مثيل واحد لكل Discourse، فمن الأفضل فصل الاثنين، حتى تتمكن من توسيع البنية التحتية لبريدك الإلكتروني بسهولة، وتلبية المزيد من الاحتياجات بخلاف Discourse فقط.

كمؤشر، لقد قمت بتشغيل Stalwart-mail على خادم افتراضي خاص Hetzner CPX21 (4 جيجابايت ذاكرة وصول عشوائي، 3 وحدات معالجة مركزية AMD x86، مساحة تخزين 80 جيجابايت) مع حوالي 30 حسابًا عبر عشرات المجالات، مع تشغيل السجلات بالكامل، ويستهلك 564 ميجابايت من ذاكرة الوصول العشوائي و 7 جيجابايت من مساحة التخزين (معظمها للنظام التشغيل). يدعي Stalwart-mail أن ذاكرة الوصول العشوائي المقيمة هي 184 ميجابايت (أقل من 5٪ من إجمالي ذاكرة الوصول العشوائي، و 1.2 جيجابايت افتراضية).

إعجاب واحد (1)

أنا أستخدم المنفذ 587 مع STARTTLS ولم أواجه أي أخطاء عند الاختبار الآن…

أيضًا في سجلات Stalwart-mail يبدو أنه يستخدم TLSv1.3 ولا يواجه أي أخطاء… لديّ تكوين غير عادي قليلاً أقوم باختباره (باستخدام pebble لتشغيل خادم ACME محلي واستخدام اسم نطاق .test، ولكن هذا ربما لا يكفي لكسر/إصلاح أي شيء…)

أنا لا أستخدم “Override TLS options” في مستمع المنفذ 587…

إعجاب واحد (1)

لقد كنت أستخدم Stalwart-mail مع discourse حصريًا خلال الأشهر الماضية، وهي تعمل بشكل رائع. يمكنني الآن استخدام كل من Submission (المنفذ 587 مع STARTTLS) و Submissions (المنفذ 465 مع TLS). لا يتطلب الأمر أي تكوين أو إعداد خاص.

كن حذرًا، فإعداد سجلات DNS للنطاق هو عملية من خطوتين.

  1. أولاً، تضيف اسم نطاق في الدليل. يمنحك هذا سجلات موارد لإضافتها في ملف منطقة DNS الخاص بك.
  2. بمجرد تحديث DNS الخاص بك، تقوم بإنشاء موفر TLS لهذا النطاق. يجب عليك إضافة أسماء المضيفين التالية: mail و autoconfig و autodiscover و mta-tls (مع إضافة نطاقك، على سبيل المثال، mail.example.org).[1]
  3. بعد فترة (ثوانٍ إلى دقائق)، سيقوم موفر ACME الداخلي بالتقاط التغييرات والحصول على شهادات TLS. في هذه المرحلة، سيقوم تكوين النطاق بتحديث السجلات: اختر سجل _mta-tls بالمعرف الجديد، وجميع سجلات _tlsa، وأضفها إلى ملف منطقتك، وستكون جاهزًا للانطلاق.

يأتي Stalwart-mail الآن مع مرشح بريد عشوائي قوي جدًا ووظيفة fail2ban مدمجة (لحظر عناوين IP التي فشلت في المصادقة أو طلبت عناوين URI وهمية).


  1. لاحظ أنه بالنسبة لإعداد Stalwart-mail + Discourse بسيط، فمن المحتمل أنك لا تحتاج إلى autoconfig أو autodiscover لأنها مفيدة مع عملاء IMAP. ↩︎