إبقاء البريد في الطابور حتى يرتفع VPN مشكلة جدولة، والحل المعتاد هو إيقاف Postfix وتبديل main.cf ثم تشغيله من جديد. هذا يعمل، لكنه الشكل الخطأ، لأنه يخلط بين مطلبين: أي مسار شبكي يجوز أن يحمله ومتى ينبغي محاولة التسليم. المطلب الثاني قرار جدار حماية، ولا تستطيع أي توجيهات Postfix أن تتخذه. وبمجرد فصل الاثنين، يصبح لكل منهما جواب صغير قابل للاختبار.

أبقِ وجهة المرحّل مستقرة، واحجب التسليم المباشر عند حدود الشبكة، ودع الطابور يقوم بالانتظار.

مطلبان يدمجهما الناس في واحد

المرحّل يخبر Postfix أين يسلّم البريد؛ التعليمة relayhost = [smtp.corp.example]:587 تسمّي مضيفًا ومنفذًا، مع أقواس تمنع اختيار MX للقفزة التالية. أما المسار فيخبر النواة أين يُسمح للرزم بالذهاب. مرحّل صحيح بلا قيد على المسار يظل يسمح لـ Postfix بالوصول إلى الإنترنت مباشرة عندما يسمح جدول التوجيه بذلك، وجدار حماية صحيح مع مرحّل خاطئ يرسل البريد إلى المكان الخطأ. لا أحد منهما يستلزم الآخر.

خرائط النقل وتجاوزات المرسل الواحد والمرحّلات الاحتياطية تستحق كلها القراءة نفسها. relayhost مستقر ليس دليلًا على أن كل مسار تسليم مُهيأ يستخدمه، والبديل الاحتياطي الذي يتخطى المرحّل هو الفشل نفسه في ثوب تمويه أفضل.

ما الذي يفعله defer_transports فعليًا

defer_transports يحتجز الرسائل للنواقل المسمّاة، فلا تُجرى أي محاولة تسليم حتى تمسها دورة طابور. إنه تحكم في الجدولة، وتفريغ الطابور يتجاوزه، وهذا هو التصميم لا عيبًا. استخدم أسماء النواقل الحقيقية من master.cf، لأن ناقلًا مخصصًا أو ناقل مرحّل مسمّى باسم آخر لا يشمله ذلك لمجرد أن برنامجه يتكلم SMTP أيضًا. إعادة المحاولة العادية آلية مختلفة: مع مسار مغلق عند الفشل، تفشل محاولات التسليم ببساطة وتبقى في الطابور، دون أي توجيه تأجيل.

الأعطال الدائمة لا تنتظر بأدب. مستلم سيئ أو بيانات اعتماد مرفوضة ترتد أو تعلق كخطأ صلب بدل أن تظل حتى يظهر النفق، لذا فطابور مليء ببريد مؤجل ليس طابورًا آمنًا تلقائيًا.

افرض المسار في طبقة الشبكة

ينتمي القيد إلى حدود الإخراج المحلي أو إلى داخل نطاق شبكي معزول. ويجب أن يغطي عناوين المرحّل الحقيقية والناقل والمنفذ، بما في ذلك IPv6 إن كان مفعّلًا، لأن قاعدة تحجب TCP 25 لا تفعل شيئًا لمرحّل على 587 أو 465. أبقِ مسار الاسترجاع ومسارات الإرسال المحلي منفصلة كي يستمر الطابور نفسه في العمل. وينبغي أن تبقى السياسة مغلقة عندما يختفي مسار النفق أو يظهر من جديد باسم واجهة آخر.

حدث ارتفاع الواجهة لا يثبت أن المرحّل يمكن الوصول إليه عبرها. لهذا فإن الخطاف الذي يفحص الوصلة ثم يفرّغ الطابور وسيلة راحة لا ضمانًا، فقد تتغير الوصلة بين الفحص ومحاولة التسليم.

أثبت ذلك برسالة واحدة غير ضارة

أرسل رسالة واحدة غير ضارة و VPN متوقف، ثم افحص postqueue -p لمعرفة سبب التأجيل ومعرّف الطابور. أعد المسار المقصود واطلب دورة طابور مضبوطة، وراقب ما إذا كانت الرسالة تخرج عبر المرحّل لا من مكان آخر. ثم اقطع المسار مرة أخرى في منتصف الطريق وتأكد من عودة الرسالة إلى الطابور. راجع maximal_queue_lifetime قبل أن تقرر مدة الانقطاع المسموح، لأن القيمة صفر تعني محاولة واحدة لا احتفاظًا غير محدود.

راقب عمر الطابور واستخدام القرص. سياسة تنتظر VPN تتحول إلى انقطاع بريد إذا لم يلاحظ أحد أن الطابور ينمو منذ الجمعة.

سجّل المرحّل والناقل وقاعدة جدار الحماية والمدة معًا. هذه الأربعة تصف الترتيب، وأي واحد منها وحده يصف تخمينًا.

مقالات ذات صلة