أخطاء سجل مستلم البريد بعد تحديث letsencrypt

متابعة للنقاش من تحديث مستلم البريد المستضاف ذاتيًا بعد تغيير شهادة الجذر لـ Let’s Encrypt:

بعد تحديث مستلم البريد إلى أحدث إصدار، تظهر أخطاء عند تشغيل ./launcher logs mail-receiver بعد:

postfix/postfix-script: warning: symlink leaves directory: /etc/postfix/./makedefs.out
<20>Oct  1 06:10:33 postfix/postfix-script[86]: warning: symlink leaves directory: /etc/postfix/./makedefs.outStarting Postfix

ولا تُظهر أي أحداث أخرى (رسائل بريد واردة، رسائل مرفوضة، …).

لقد واجهت بعض المشكلات مع إعدادات Postfix المخصصة (التي كانت تعمل بسلاسة قبل التحديث الأخير) وأحتاج إلى تصحيح الأخطاء، وهو أمر صعب بدون السجلات.

هل جربت هذه الخطوات

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

أرى بالفعل نفس الأخطاء التحذيرات، لكن Postfix يعمل بسعادة ويقبل الرسائل البريدية بعد ذلك.

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

إذن، هل يتعطل فعليًا بالنسبة لك؟

نفس الشيء، مع الإعدادات الافتراضية. لكنني اضطررت إلى تعطيل قاعدة Postfix الإضافية مؤقتًا

  POSTCONF_smtpd_client_restrictions: 'regexp:/etc/postfix/shared/client_access_regex'

التي كانت تعمل بشكل مثالي قبل الترقية (تستخدم قواعد التعبير النمطي لرفض المرسلين غير المرغوب فيهم). المشكلة الحقيقية هي أنه عند تمكين هذا الإعداد، يبدأ Postfix في رفض جميع الرسائل الواردة، لكنني لا أستطيع معرفة السبب من السجلات!

ربما لبعض الوقت، لكن لقد مرّت ساعات ولا يزال لا يوجد شيء في السجلات (لا تظهر الرسائل المقبولة ولا المرفوضة، وهناك حركة مرور واردة بالفعل).

لقد كنت محقًا، فهناك سجلات دخول أخرى في المخرجات، لكن المخرجات نفسها مشوهة:

تبدأ مخرجات ./launcher logs mail-receiver بـ <HEAD>:

/bin/bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
Operating environment:
HOSTNAME=discourse-mail-receiver
LANGUAGE=en_US.UTF-8
MAIL_DOMAIN=...
...
...
Setting smtpd_tls_security_level to 'may'
postfix/postfix-script: warning: symlink leaves directory: /etc/postfix/./makedefs.out

يليها سطر واحد من سجلات الدخول، وينتهي بـ <HEAD> مكررًا ست مرات إضافية:

<HEAD>
Single line of log entries without line breaks..............................................................................................................................................................................................
<HEAD>
<HEAD>
<HEAD>
<HEAD>
<HEAD>
<HEAD>

كنت أنظر فقط إلى نهاية المخرجات، وكان يبدو دائمًا أن هناك فقط <HEAD> دون أي سجلات أخرى.

هناك بالتأكيد خطأ ما في عرض سجلات الدخول عبر ./launcher logs mail-receiver.

أعتقد أنني عرفت حل هذه المشكلة، هناك سطر maillog_file مفقود في Dockerfile. إصلاح مؤقت: تمت إضافة

  POSTCONF_maillog_file: '/dev/stdout'

إلى mail-receiver.yml وأُعيد بناء الصورة، لكن يُرجى إصلاح ذلك في صورة Docker نفسها

RUN >/etc/postfix/main.cf \
+	&& postconf -e maillog_file=/dev/stdout \
	&& postconf -e smtputf8_enable=no \
...

إذن، بعد إضافة هذا السطر، اختفى الخطأ وعادت السجلات للعمل بشكل صحيح؟ إذا كان الأمر كذلك، هل يمكنك التكرم بتقديم طلب سحب (PR) لإدراج هذا التغيير؟

https://github.com/discourse/mail-receiver/pull/11

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

https://github.com/discourse/mail-receiver/pull/12

شكراً @md-misko - لقد قمت بدمج طلب السحب (PR) ورفعت علامة discourse/mail-reciever:release على Dockerhub.

أنا متأكد من أنك على علم بالفعل، ولكن في حال عثر أي شخص آخر على هذا الموضوع، يمكنك تحديث إصدار مستقبِل البريد الخاص بك عن طريق تشغيل:

docker pull discourse/mail-receiver:release
cd /var/discourse
./launcher rebuild mail-receiver
3 إعجابات

هل لديك أي أفكار حول كيفية اختبار أن الصورة قيد التشغيل حاليًا تعمل بأحدث إصدار؟

لكن أعتقد أن هذا يجب أن يعمل:

# أولاً، تأكد من حصولك على أحدث صورة أساسية محليًا
docker pull discourse/mail-receiver:release

# احصل على الطبقة العليا من الصورة الأساسية
BASE_IMAGE_HASH=$(docker history discourse/mail-receiver:release -q | head -n 1)

# احصل على طبقات الإصدار ** قيد التشغيل **
RUNNING_IMAGE_HASH=$(docker container inspect mail-receiver -f "{{.Image}}")
RUNNING_IMAGE_LAYERS=$(docker history $RUNNING_IMAGE_HASH -q)

# تحقق مما إذا كانت طبقات الصورة قيد التشغيل تتضمن الصورة الأساسية الحالية:
[[ "$RUNNING_IMAGE_LAYERS" == *"$BASE_IMAGE_HASH"* ]] && echo "Up to date"

سيؤدي هذا إلى طباعة “Up to date” إذا كنت محدثًا. بخلاف ذلك، ستطبع السطر الأخير لا شيء، وتخرج بحالة غير صفرية.

إعجابَين (2)

أوه. هذا رائع. ويبدو أنه حل عام كنت قد وجدت له حلولاً لمرة واحدة فقط في السابق. كان سيستغرق مني بعض الوقت لمعرفة ذلك. RUNNING_IMAGE_LAYERS هو ما لم أكن أعرف أن أبحث عنه.

لقد اختبرته على مثيل تم ترقيته وعلى مثيل لم يتم ترقيته، ويبدو أنه يتصرف كما هو متوقع.

شكراً جزيلاً!

3 إعجابات

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.