PROCMAIL(1)

الاسم
procmail - معالج بريد مستقل

موجز
procmail [-ptoY] [-f fromwhom]
[parameter=value | rcfile] ...
procmail [-toY] [-f fromwhom] [-a argument] ...
-d recipient ...
procmail [-ptY] -m [parameter=value] ... rcfile
[argument] ...
procmail -v

الوصف
للبدء السريع، انظر قسم ملاحظات (NOTES) في النهاية.

ينبغي استدعاء Procmail آلياً عبر آلية ملف .forward بمجرد وصول البريد. وبدلاً من ذلك، عند تثبيته بواسطة مدير النظام، يمكن استدعاؤه من داخل برنامج البريد مباشرة. عند استدعائه، يضبط أولاً بعض متغيرات البيئة إلى قيمها المبدئية، ويقرأ رسالة البريد من الدخل القياسي (stdin) حتى نهاية الملف (EOF)، ويفصل المتن عن الترويسة، ثم، إذا لم توجد معطيات في سطر الأوامر، يبدأ بالبحث عن ملف باسم $HOME/.procmailrc. ووفقاً لوصفات المعالجة في هذا الملف، توزع رسالة البريد الواصلة للتو إلى المجلد الصحيح (وأكثر). إذا لم يُعثر على ملف rcfile، أو انتهت معالجة ملف rcfile دون نتيجة، فسيخزن procmail البريد في صندوق بريد النظام المبدئي.

إذا لم تُحدد أي ملفات rcfiles ولم يُحدد الخيار -p في سطر الأوامر، فسيقوم procmail، قبل قراءة $HOME/.procmailrc، بتفسير الأوامر من /etc/procmailrc (إن وُجد). يجب توخي الحذر عند إنشاء /etc/procmailrc، لأنه، إذا سمحت الظروف، سيُنفذ بصلاحيات الجذر (على عكس ملف $HOME/.procmailrc بالطبع).

إذا شُغل بصلاحيات suid root أو بصلاحيات الجذر، فسيكون procmail قادراً على العمل وكيل توصيل بريد معزز وظيفياً ومتوافقاً مع الإصدارات السابقة.

يمكن استخدام Procmail أيضًا مرشح بريد للأغراض العامة، أي أنه هُيئ لتمكين استدعاء procmail في قاعدة sendmail خاصة.

توصَف هيئة ملف rcfile بالتفصيل في صفحة دليل procmailrc(5).

توصَف تقنية التسجيل الموزون بالتفصيل في صفحة دليل procmailsc(5).

يمكن البحث عن أمثلة لوصفات rcfile في صفحة دليل procmailex(5).

  الإشارات

TERMINATE
    الإنهاء قبل الأوان وإعادة وضع البريد في الطابور.

HANGUP
    الإنهاء قبل الأوان وإرجاع البريد (bounce).

INTERRUPT
    الإنهاء قبل الأوان وإرجاع البريد (bounce).

QUIT
    الإنهاء قبل الأوان وفقدان البريد بصمت.

ALARM
    فرض انتهاء المهلة (انظر TIMEOUT).

USR1
    يكافئ ضبط VERBOSE=off.

USR2
    يكافئ ضبط VERBOSE=on.

الخيارات

-v  سيقوم Procmail بطباعة رقم إصداره، وعرض تهيئة وقت التجميع ثم يخرج.

-p  الحفاظ على أي بيئة قديمة. عادة ما يمسح procmail البيئة عند بدء التشغيل، باستثناء قيمة TZ. ومع ذلك، في أي حال: ستتجاوز أي قيم مبدئية أي متغيرات بيئة موجودة مسبقاً، أي أن procmail لن يهتم بأي متغيرات بيئة محددة مسبقاً، وسيقوم بالكتابة فوقها بإعداداته المبدئية. للحصول على قائمة بمتغيرات البيئة التي سيضبطها procmail مسبقاً، راجع صفحة دليل procmailrc(5). إذا حُدد كل من -p و -m، فستتقلص قائمة متغيرات البيئة المضبوطة مسبقاً إلى: LOGNAME و HOME و SHELL و ORGMAIL و MAILDIR فقط.

-t  جعل procmail يفشل برفق، أي إذا تعذر على procmail توصيل البريد إلى أي من الوجهات التي حددتها، فلن يرتد البريد، بل سيعود إلى طابور البريد. ستُجرى محاولة توصيل أخرى في وقت ما في المستقبل.

-f fromwhom
    يجعل procmail يعيد إنشاء سطر `From ' البادئ مستخدماً fromwhom بصفته مرسلاً (بدلاً من -f يمكن استخدام -r البديل والمهمل). إذا كان fromwhom يتكون مجرد من شرطة واحدة `-` ، فسيقوم procmail فقط بتحديث الطابع الزمني في سطر `From ' (إن وجد، وإذا لم يوجد، فسينشئ واحداً جديداً).

-o  بدلاً من السماح لأي شخص بإنشاء أسطر `From '، قم ببساطة بتجاوز الأسطر المزيفة.

-Y  افتراض هيئة صندوق بريد بيركلي التقليدية، وتجاهل أي حقول Content-Length:.

-a argument
    سيؤدي هذا إلى ضبط قيمة $1 لتساوي argument. كل خيار -a argument تالٍ سيضبط المتغير الرقمي التالي ($2، $3، إلخ). يمكن استخدامه لتمرير معلومات وصفية (meta information) إلى procmail. يتم ذلك عادةً بتمرير معلومات $@x من قاعدة برنامج بريد sendmail.

-d recipient ...
    يؤدي هذا إلى تشغيل وضع التوصيل الصريح، وسيكون التوصيل للمستخدم المحلي recipient. هذا بالطبع ممكن فقط إذا كان لـ procmail صلاحيات الجذر (أو إذا كان procmail يعمل بالفعل بـ euid و egid الخاص بالمستلم). سيقوم procmail بتغيير الهوية (setuid) إلى المستلمين المقصودين ويوصل البريد كما لو استدعاه المستلم دون معطيات (أي إذا لم يُعثر على ملف rcfile، فسيكون التوصيل مثل البريد العادي). هذا الخيار غير متوافق مع -p.

-m  يحول procmail إلى مرشح بريد للأغراض العامة. في هذا الوضع، يجب تحديد ملف rcfile واحد في سطر الأوامر. بعد ملف rcfile، سيقبل procmail عدداً غير محدود من المعطيات. إذا كان ملف rcfile مساراً مطلقاً يبدأ بـ /etc/procmailrcs/ بدون مراجع خلفية (أي لا يمكن ذكر الدليل الأب)، فسيقوم procmail، فقط إذا لم تُكتشف انتهاكات أمنية، بتقمص هوية مالك ملف rcfile (أو الرابط الرمزي). لبعض الاستخدامات المتقدمة لهذا الخيار يجب النظر في قسم أمثلة أدناه.

المعطيات
تُعتبر أي معطيات تحتوي على '=' تعيينات لمتغيرات البيئة، وسيتم تقييمها جميعاً بعد تعيين القيم المبدئية وقبل فتح أول ملف rcfile.

يُفترض أن أي معطيات أخرى هي مسارات لملفات rcfile (إما مطلقة، أو إذا بدأت بـ `./` فتكون نسبية للدليل الحالي؛ أي مسار نسبي آخر يكون نسبياً لـ $HOME، ما لم يُعطَ الخيار -m، وفي هذه الحالة تكون جميع المسارات النسبية منسوبة للدليل الحالي)؛ سيبدأ procmail بأول ملف يجده في سطر الأوامر. الملفات التالية ستُحلل فقط إذا كان للملفات السابقة إدخال توجيه HOST غير متطابق، أو في حال عدم وجودها.

إذا لم تُحدد أي ملفات rcfiles، فسيتم البحث عن $HOME/.procmailrc. وإذا لم يُعثر حتى على ذلك، فستستمر المعالجة وفقاً للإعدادات المبدئية لمتغيرات البيئة وتلك المحددة في سطر الأوامر.

أمثلة
يمكن البحث عن أمثلة لوصفات rcfile في صفحة دليل procmailex(5). يمكن العثور على عينة صغيرة لملف rcfile في قسم ملاحظات أدناه.

تخطَّ بقية قسم الأمثلة هذا ما لم تكن مدير نظام على دراية بسيطة بصيغة sendmail.cf.

يُستخدم الخيار -m عادةً عندما يُستدعى procmail من داخل قاعدة في ملف sendmail.cf. ولكي تتمكن من القيام بذلك، من المناسب إنشاء برنامج بريد `procmail' إضافي في ملف sendmail.cf الخاص بك (بالإضافة إلى برنامج البريد `local' الذي قد يكون موجوداً بالفعل والذي يشغل procmail). لإنشاء برنامج بريد `procmail' كهذا، أقترح شيئاً مثل:

    Mprocmail, P=/usr/bin/procmail, F=mSDFMhun, S=11, R=21,
            A=procmail -m $h $g $u

يمكّنك هذا من استخدام قواعد مثل التالية (على الأرجح في مجموعة القواعد 0) لتنشيح البريد عبر برنامج بريد procmail (يرجى ملاحظة علامة التبويب البادئة لمتابعة القاعدة، وعلامة التبويب لفصل التعليقات):

    R$*<@some.where>$*
            $#procmail $@/etc/procmailrcs/some.rc $:$1@some.where.procmail$2 R$*<@$*.procmail>$*
            $1<@$2>$3 رُشح بالفعل، أعد التعيين

ويمكن أن يكون /etc/procmailrcs/some.rc بسيطاً مثل:

    SENDER = "<$1>" # إصلاح لعناوين المرسلين الفارغة SHIFT = 1 # أزله من $@

    :0 # التخلص من جميع رسائل البريد غير الهام * ^Subject:.*junk /dev/null

    :0 w # تمرير جميع رسائل البريد الأخرى ! -oi -f "$SENDER" "$@"

احذر عند إرسال بريد من داخل ملف /etc/procmailrcs/some.rc، فإذا أرسلت بريداً إلى عناوين تطابق القاعدة الأولى مرة أخرى، فقد تنشئ حلقة بريد لا نهائية.

الملفات

/etc/passwd
    لضبط القيم المبدئية لمتغيرات LOGNAME و HOME و SHELL للمستلم

/var/mail/$LOGNAME
    صندوق بريد النظام؛ سيُنشأ كل من صندوق بريد النظام والدليل المباشر الذي يوجد فيه في كل مرة يبدأ فيها procmail إذا لم يكن أحدهما موجوداً

/etc/procmailrc
    ملف rcfile العالمي الأولي

/etc/procmailrcs/
    مسار صلاحيات خاصة لملفات rcfiles

$HOME/.procmailrc
    ملف rcfile المبدئي

/var/mail/$LOGNAME.lock
    ملف القفل لصندوق بريد النظام (لا يستخدمه procmail آلياً، ما لم يساوِ $DEFAULT القيمة /var/mail/$LOGNAME وكان procmail يوصل إلى $DEFAULT)

/usr/sbin/sendmail
    موجه البريد المبدئي

_????`hostname`
    ملفات مؤقتة `فريدة` ذات طول صفري ينشئها procmail

انظر أيضًا
procmailrc(5)، procmailsc(5)، procmailex(5)، sh(1)، csh(1)، mail(1)، mailx(1)، uucp(1)، aliases(5)، sendmail(8)، egrep(1)، grep(1)، biff(1)، comsat(8)، lockfile(1)، formail(1)، cron(1)

التشخيص

عُثر على صندوق بريد لإعادة التوجيه الآلي
    صندوق بريد النظام عُينت فيه بتات suid أو sgid، سينتهي procmail بـ EX_NOUSER مفترضاً أنه يجب عدم التوصيل إلى صندوق البريد هذا.

استبدال سيئ لـ "x"
    اسم متغير البيئة المحدد غير صالح.

قوس إغلاق غير متوقع
    لم يوجد قوس فتح مقابل (كتلة تداخل).

خيارات متعارضة
    ليست كل مجموعات الخيارات مفيدة

كُبت x المتعارض
    العلامة x غير متوافقة مع علامة أخرى في هذه الوصفة.

تعذر إنشاء "x"
    صندوق بريد النظام مفقود وتعذر/لن يُنشأ.

تعذر إنشاء جزء maildir المسمى "x"
    مجلد maildir المسمى "x" يفتقد إلى دليل فرعي مطلوب واحد أو أكثر وتعذر على procmail إنشاؤها.

تعذر إنشاء ملف مؤقت أو إعادة تسميته باسم "x"
    حدث خطأ في ميكانيكا التسليم إلى مجلد الدليل "x".

تعذر تحديد ملف القفل الضمني من "x"
    لم يُعثر على أي موجهات `>>'، استُخدمت `$LOCKEXT' ببساطة كملف قفل محلي.

تعذر قراءة "x"
    عجز procmail عن فتح rcfile أو أنه لم يكن ملفًا عاديًا، أو لم يستطع procmail فتح دليل MH للعثور على الملف ذي الرقم الأعلى.

تعذر فك قفل "x"
    ملف القفل مفقود بالفعل، أو أن إذن الكتابة إلى الدليل الذي يحتوي على ملف القفل رُفض.

حُوول إحداث قفل مميت على "x"
    ملف القفل المحلي المحدد في هذه الوصفة يساوي $LOCKFILE لا يزال نشطًا.

رُفضت الامتيازات الخاصة لـ "x"
    لن ينتحل procmail الهوية المرافقة لملف rcfile لوجود انتهاك أمني (مثل -p أو تعيين متغيرات في سطر الأوامر) أو لأن procmail يفتقر للامتيازات الكافية.

الواصف "x" لم يكن مفتوحًا
    عند بدء procmail، لم تكن المداخل أو المخارج القياسية (stdin أو stdout أو stderr) متصلة (ربما تكون محاولة لخرق الأمن)

فُرضت أذونات أكثر صرامة على "x"
    وُجد صندوق بريد المستلم غير آمن، فقام procmail بتأمينه.

حدث خطأ أثناء الكتابة إلى "x"
    دليل فرعي غير موجود، أو لا يوجد إذن كتابة، أو توقف الأنبوب أو القرص ممتلئ.

تُخطي LINEBUF
    رُصد طفح في المخزن المؤقت، LINEBUF كان صغيرًا جدًا، وضُبطت PROCMAIL_OVERFLOW.

MAILDIR ليس مسارًا مطلقًا

مسار MAILDIR طويل جدًا

ORGMAIL ليس مسارًا مطلقًا

مسار ORGMAIL طويل جدًا

ملف rcfile المبدئي ليس مسارًا مطلقًا

مسار ملف rcfile المبدئي طويل جدًا
    المسار الكامل للعنصر المحدد، عند تمديده، كان أطول من LINEBUF أو لم يبدأ بفاصل ملفات.

أُخمد الخرج الزائد من "x"
    حاول البرنامج أو المُرشّح "x" إنتاج خرج كبير جدًا بالنسبة لـ LINEBUF الحالي، فأُهمل الباقي وضُبطت PROCMAIL_OVERFLOW.

أُهمل x الزائد
    سطر الإجراء أو العلامات الأخرى في هذه الوصفة تجعل العلامة x بلا معنى.

فشل تفريع "x"
    جدول العمليات ممتلئ (واستُنفدت محاولات NORESRETRY).

فشل تنفيذ "x"
    البرنامج ليس في المسار، أو غير قابل للتنفيذ.

رُفض فك القفل القسري على "x"
    لا يوجد إذن كتابة في الدليل الذي يتواجد فيه lockfile "x"، أو أن أكثر من نسخة procmail تحاول فرض القفل في الوقت نفسه تمامًا.

يُفرض القفل على "x"
    سيُزال Lockfile "x" قسرًا بسبب انتهاء المهلة (راجع أيضًا: LOCKTIMEOUT).

وصفة غير مكتملة
    عُثر على بداية وصفة، لكنها توقفت عند نهاية الملف (EOF).

صلاحيات غير كافية
    يحتاج procmail إما إلى امتيازات الجذر، أو يجب أن يمتلك (e)uid و (e)gid المناسبين للعمل في وضع التسليم. سيرتد البريد.

تعبير نمطي (regexp) غير صالح "x"
    التعبير النمطي "x" يحتوي على أخطاء (على الأرجح بعض الأقواس المفقودة أو الزائدة).

فشل قفل النواة
    أثناء محاولة استخدام نداءات القفل التي تدعمها النواة، فشل أحدها (يشير عادةً إلى خطأ في نظام التشغيل)، يتجاهل procmail هذا الخطأ ويستمر.

فشل فك قفل النواة
    انظر أعلاه.

فشل القفل على "x"
    لا يمكن أن يحدث هذا إلا إذا حددت أسماء ملفات قفل غريبة حقًا (وغير قانونية) أو إذا تعذر إنشاء lockfile بسبب عدم كفاية الأذونات أو عدم وجود أدلة فرعية.

فُقد "x"
    حاول procmail استنساخ نفسه لكنه لم يتمكن من العثور على ملف rcfile "x" مجددًا (إما أنه أُزيل أو كان مسارًا نسبيًا وقمت بتغيير الدليل منذ أن فتحه procmail آخر مرة).

إجراء مفقود
    وُجدت الوصفة الحالية غير مكتملة.

قوس إغلاق مفقود
    بُدئ في كتلة متداخلة، لكنها لم تنتهِ أبدًا.

اسم مفقود
    يحتاج الخيار -f إلى وسيط إضافي.

وسيط مفقود
    لقد حددت الخيار -a ولكنك نسيت الوسيط.

ملف rcfile مفقود
    لقد حددت الخيار -m، ويتوقع procmail اسم ملف rcfile كوسيط.

مستلم مفقود
    لقد حددت الخيار -d أو استدعيت procmail باسم مختلف، وهو يتوقع مستلمًا واحدًا أو أكثر كوسائط.

لم تتبق مساحة لإنهاء الكتابة إلى "x"
    نظام الملفات الذي يحتوي على "x" لا يملك مساحة حرة كافية للسماح بتسليم الرسالة إلى الملف.

نفاد الذاكرة
    النظام يفتقر لمساحة التبديل (واستُنفدت محاولات NORESRETRY).

استُؤنف المعالجة
    تُجوهلت الخيارات غير المعروفة في سطر الأوامر، وجارٍ المتابعة كالمعتاد.

فشل البرنامج (nnn) لـ "x"
    البرنامج الذي بدأه procmail أرجع nnn بدلاً من EXIT_SUCCESS (=0)؛ إذا كانت nnn سالبة، فهذه هي الإشارة التي توقف البرنامج بسببها.

تُخطيت الحصة (quota) أثناء الكتابة إلى "x"
    حصة حجم الملف للمستلم في نظام الملفات الذي يحتوي على "x" لا تسمح بتسليم الرسالة إلى الملف.

تُعاد تسمية "x" الزائف إلى "x"
    وُجد صندوق بريد النظام للمستلم زائفًا، فقام procmail بإجراءات مراوغة.

نجح/فشل إنقاذ البيانات غير المُرشّحة
    أرجع مُرشّح نتيجة غير ناجحة، فحاول procmail استعادة النص الأصلي.

تُخطي: "x"
    تعذر فعل أي شيء مع "x" في rcfile (خطأ في بناء الجملة)، وجارٍ تجاهله.

ملف rcfile مشبوه "x"
    لم يكن مالك rcfile هو المستلم أو الجذر، أو كان الملف قابلاً للكتابة من قبل الجميع، أو كان الدليل الذي يحتويه قابلاً للكتابة من قبل الجميع، أو كان هذا هو ملف rcfile المبدئي ($HOME/.procmailrc) وكان هو أو الدليل الذي يحتويه قابلاً للكتابة من قبل المجموعة (لم يُستخدم rcfile).

إنهاء قبل الأوان أثناء انتظار ...
    تلقى procmail إشارة أثناء انتظاره لـ ...

انتهت المهلة، جارٍ إنهاء "x"
    حدث انتهاء مهلة في البرنامج أو المُرشّح "x".

انتهت المهلة، كان الانتظار لـ "x"
    حدث انتهاء مهلة في البرنامج أو المُرشّح أو الملف "x". إذا كان برنامجًا أو مُرشّحًا، فيبدو أنه لم يعد قيد التشغيل.

بُتر الملف إلى حجمه السابق
    تعذر تسليم الملف بنجاح، لذا بُتر الملف إلى حجمه السابق.

يُبتر "x" وتُعاد محاولة القفل
    لا يبدو "x" اسم ملف صالحًا أو أن الملف ليس فارغًا.

تعذر التعامل مع "x" كدليل
    إما أن اللاحقة في "x" تشير إلى وجوب كونه مجلد MH أو maildir، أو أنه أُدرج كمجلد ثانٍ للربط إليه، ولكنه موجود مسبقًا وليس دليلًا.

نهاية سطر (EOL) غير متوقعة
    علامة اقتباس الإغلاق مفقودة، أو محاولة لهروب من نهاية الملف (EOF).

مستخدم مجهول "x"
    المستلم المحدد ليس له معرف مستخدم (uid) مقابل.

التشخيصات الممتدة
يمكن تشغيل التشخيصات الممتدة وإيقافها عبر ضبط المتغير VERBOSE.

[pid] الوقت والتاريخ
    معرف العملية (pid) لـ Procmail وطابع زمني. يُولّد كلما سجل procmail تشخيصًا ومضت ثانية واحدة على الأقل منذ آخر طابع زمني.

الاستحواذ على قفل النواة
    يحاول procmail الآن تطبيق قفل النواة على آخر ملف (وصف) فُتح.

إسناد "x"
    إسناد متغير بيئة.

انتحال هوية المستلم، VERBOSE=off
    التخلي عن كافة الامتيازات (إن وجدت)، يعطل التشخيصات الممتدة ضمنيًا.

تجاوز قفل "x"
    تعذر وصول procmail إلى دليل تخزين البريد المؤقت، واعتمد كليًا على أقفال النواة.

تنفيذ "x"
    بدء البرنامج "x". إذا بدأه procmail مباشرة (بدون صدفة وسيطة)، فسيُظهر procmail أين فصل الوسائط بإدراج فواصل.

عدم تطابق المضيف "x"
    اسم هذا المضيف هو "x"، بينما احتوى HOST على شيء آخر.

إقفال "x"
    إنشاء ملف القفل "x".

الربط بـ "x"
    إنشاء وصلة صلبة بين مجلدات الدليل.

تطابق في "x"
    تطابق الشرط.

تطابق "x"
    أُسندت "x" إلى MATCH.

لا يوجد تطابق في "x"
    لم يتطابق الشرط، تخُطيت الوصفة.

رمز خروج غير صفري (nnn) بواسطة "x"
    البرنامج الذي بدأه procmail كشرط أو كإجراء لوصفة مع العلم 'W' أرجع nnn بدلًا من EXIT_SUCCESS (=0)؛ يشير الاستخدام إلى أن هذه الحالة ليست غير متوقعة تمامًا.

أُشعر comsat بالرسالة: "$LOGNAME@offset:file"
    أُرسل إشعار إلى comsat/biff بوصول بريد للمستخدم $LOGNAME عند الإزاحة 'offset' في الملف 'file'.

فتح "x"
    فتح الملف "x" للإلحاق.

ملف الإعدادات (Rcfile): "x"
    تغير ملف الإعدادات إلى "x".

تكرار قفل النواة
    أثناء محاولة عدة طرق للإقفال، فشلت إحداها. سيكرر procmail المحاولة حتى تنجح جميعها بتتابع سريع.

النتيجة: أُضيف newtotal "x"
    سجل هذا الشرط نقاطًا قدرها 'added'، مما أدى إلى نتيجة إجمالية قدرها 'newtotal'.

إلغاء قفل "x"
    إزالة ملف القفل "x" مجددًا.

تحذيرات
ينبغي لك إنشاء نص صدفة برمجي يستخدم lockfile(1) قبل استدعاء صدفة البريد على أي ملف صندوق بريد بخلاف صندوق بريد النظام (إلا إذا كانت صدفة البريد تستخدم نفس ملفات القفل (المحلية أو العامة) التي حددتها في ملف إعداداتك).

في الحالة غير المرجحة التي تضطر فيها لإنهاء procmail قبل اكتماله، حاول أولاً استخدام أمر kill العادي (أي ليس kill -9، راجع القسم الفرعي Signals للاقتراحات)، وإلا فقد لا تُزال بعض ملفات القفل.

احذر عند استخدام الخيار -t، فإذا عجز procmail مرارًا عن تسليم البريد (على سبيل المثال بسبب ملف إعدادات خاطئ)، فقد يمتلئ طابور بريد النظام. قد يثير هذا استياء مسؤول البريد المحلي والمستخدمين الآخرين.

قد يُنفذ ملف /etc/procmailrc بامتيازات الجذر، لذا كن حذرًا جدًا فيما تضعه فيه. سيكون SHELL مساويًا لصدفة المستلم الحالي، لذا إذا اضطر procmail لاستدعاء الصدفة، فيحسن بك ضبطه على قيمة آمنة أولاً. انظر أيضًا 'u' : DROPPRIVS.

ضع في اعتبارك أنه إذا كان chown(1) مسموحًا به على الملفات في /etc/procmailrcs/، فيمكن لمالكيها الحاليين تغيير ملكيتها إلى الجذر (أو أي شخص آخر). لأقصى قدر من الأمان، تأكد من أن هذا الدليل قابل للتنفيذ من قبل الجذر فقط.

ليس Procmail الأداة المناسبة لمشاركة صندوق بريد واحد بين مستخدمين كثر، كما في حالة وجود حساب POP واحد لكل البريد الوارد لنطاقك. يمكن فعل ذلك إذا تمكنت من ضبط وكيل نقل البريد (MTA) لإضافة بعض الترويسات مع بيانات مستلم المظروف لإخبار Procmail لمن تعود الرسالة، ولكن هذا ليس التصرف الصحيح عادةً. ربما تود الاستقصاء عما إذا كان وكيل نقل البريد يقدم 'virtual user tables'، أو مراجعة ميزة 'multidrop' في Fetchmail.

العلل
بعد إزالة ملف قفل بالقوة، ينتظر procmail مدة $SUSPEND ثانية قبل إنشاء ملف قفل جديد لكي لا تقوم عملية أخرى تقرر إزالة ملف القفل القديم بإزالة القفل المنشأ حديثًا بالخطأ.

يستخدم Procmail إشارة TERMINATE العادية لإنهاء أي مرشح خارج عن السيطرة، ولكنه لا يتحقق مما إذا كان المرشح يستجيب لتلك الإشارة ويرسلها فقط إلى المرشح نفسه، وليس إلى أي من أبنائه.

لا يُعالج حقل Content-Length: الممتد بشكل صحيح.

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

متنوعات
إذا كان هناك حقل Content-Length: موجود مسبقًا في ترويسة البريد ولم يُحدد الخيار -Y، فسيقوم procmail بتقليص الحقل للإبلاغ عن الحجم الصحيح. لا يغير procmail عرض الحقل.

إذا لم يوجد حقل Content-Length: أو حُدد الخيار -Y وألحق procmail بمجلدات البريد العادية، فإن أي أسطر في متن الرسالة تشبه أختام البريد تُسبق بـ `>' (لإبطال ترويسات البريد الزائفة). التعبير النمطي المستخدم للبحث عن هذه الأختام هو:
    `\nFrom '

إذا كان اسم الوجهة المستخدم في وضع التسليم الصريح غير موجود في /etc/passwd، فسيمضي procmail كما لو أن وضع التسليم الصريح غير مفعل. وإذا لم يكن في وضع التسليم الصريح ولم يكن لمعرف المستخدم (uid) الذي يعمل procmail تحته إدخال مقابل في /etc/passwd، فسيؤول HOME مبدئيًا إلى /، وLOGNAME إلى #uid، وSHELL إلى /bin/sh، وORGMAIL إلى /tmp/dead.letter.

عندما يكون في وضع التسليم الصريح، سيقوم procmail بتوليد سطر `From ' بادئ إذا لم يوجد. وإذا وجد واحد بالفعل فسيتركه procmail كما هو. إذا لم يُستدعَ procmail بأحد معرفات المستخدمين أو المجموعات التالية 'u' : root، daemon، uucp، mail، x400، network، list، slist، lists أو news، وكان عليه توليد أو قبول سطر `From ' جديد، فسيولد سطر `>From ' إضافيًا للمساعدة في تمييز الرسائل المزيفة.

لأسباب أمنية، لن يستخدم procmail ملف إعدادات بمسار مطلق أو نسبي لـ $HOME إلا إذا كان مملوكًا للمستلم أو للجذر، وغير قابل للكتابة من العموم، والدليل الذي يحتويه غير قابل للكتابة من العموم. يخضع ملف $HOME/.procmailrc لقيد إضافي وهو ألا يكون قابلاً للكتابة من المجموعة أو في دليل قابل للكتابة من المجموعة.

إذا كان /var/mail/$LOGNAME صندوق بريد زائفًا (أي لا يخص المستلم، أو غير قابل للكتابة، أو وصلة رمزية أو صلبة)، فسيحاول procmail عند بدء التشغيل تغيير اسمه إلى ملف يبدأ بـ `BOGUS.$LOGNAME.' وينتهي برمز تسلسل الأرقام المرجعية (inode). إذا تبين استحالة ذلك، فلن يحصل ORGMAIL على قيمة مبدئية، وبالتالي سيمنع التسليم بدون ملف إعدادات مناسب.

إذا كان /var/mail/$LOGNAME صندوق بريد صالحًا بالفعل، ولكن صلاحياته فضفاضة جدًا، فسيصحح procmail ذلك. لمنع procmail من القيام بذلك تأكد من ضبط بت u+x.

عند التسليم إلى الأدلة، أو مجلدات MH، أو مجلدات maildir، فإنك لا تحتاج إلى استخدام ملفات القفل لمنع تداخل عدة برامج procmail تعمل بالتزامن.

التسليم إلى مجلدات MH يستهلك وقتًا أكثر قليلاً من التسليم إلى الأدلة العادية أو صناديق البريد، لأن على procmail البحث عن الرقم المتاح التالي (بدلًا من توفر اسم الملف فورًا).

عند حدوث فشل عام سيرجع procmail القيمة EX_CANTCREAT، ما لم يُحدد الخيار -t، وفي هذه الحالة سيرجع EX_TEMPFAIL.

لجعل استخدام `egrep' على الترويسات أكثر اتساقًا، يدمج procmail جميع حقول الترويسة الممتدة؛ ولكن داخليًا فقط. عند تسليم البريد، ستظهر فواصل الأسطر كما كانت سابقًا.

إذا استُدعي procmail باسم لا يبدأ بـ `procmail' (على سبيل المثال، إذا رُبط باسم آخر واستُدعي به)، فإنه يبدأ في وضع التسليم الصريح، ويتوقع أسماء المستلمين كوسائط لسطر الأوامر (كما لو حُدد الخيار -d).

تُجرى إشعارات Comsat/biff باستخدام udp. تُرسل مرة واحدة عندما يولد procmail إدخال ملف السجل العادي. إشعارات الإشعارات لها التنسيق الممتد التالي (أو أقرب ما يمكن الوصول إليه عندما لا يكون التسليم النهائي لملف):
    $LOGNAME@offset_of_message_in_mailbox 'u' :absolute_path_to_mailbox

كلما فتح procmail نفسه ملفًا للتسليم إليه، فإنه يستخدم باستمرار استراتيجيات قفل النواة التالية 'u' : fcntl(2).

إن Procmail مقاوم لمشاكل نظام ملفات الشبكة (NFS) ونظيف الثمانية بتات (8-bit clean).

ملاحظات
استدعاء procmail مع الخيارات -h أو -؟ سيجعله يعرض مساعدة سطر الأوامر وصفحة مرجعية سريعة لأعلام الوصفات.

توجد أسئلة شائعة ممتازة للمبتدئين حول مرشحات البريد (وprocmail بشكل خاص)؛ تشرف عليها نانسي ماكجو <nancym@ii.com> ويمكن الحصول عليها بإرسال بريد إلى mail-server@rtfm.mit.edu مع النص التالي في المتن:
    send usenet/news.answers/mail/filtering-faq

إذا لم يكن procmail مثبتًا عالميًا كوكيل تسليم البريد المبدئي (اسأل مسؤول نظامك)، فيجب عليك التأكد من استدعائه عند وصول بريدك. في هذه الحالة، ينبغي أن يحتوي ملف $HOME/.forward الخاص بك (احذر، يجب أن يكون قابلاً للقراءة من الجميع) على السطر أدناه. تأكد من تضمين علامات الاقتباس المفردة والمزدوجة، وما لم تكن تعلم أن موقعك يشغل smrsh (صدفة SendMail المقيدة)، فيجب أن يكون المسار مطلقًا.

" 'u' |exec /usr/bin/procmail"

بعض برامج البريد (لاسيما exim) لا تقبل التنسيق أعلاه حاليًا. في مثل هذه الحالة استخدم هذا بدلاً منه:

|/usr/bin/procmail

يمكن أيضًا استدعاء Procmail للمعالجة اللاحقة لصندوق بريد نظام ممتلئ بالفعل. يمكن أن يكون هذا مفيدًا إذا كنت لا تريد أو لا تستطيع استخدام ملف $HOME/.forward (وفي هذه الحالة يمكن استدعاء النص البرمجي التالي دوريًا من داخل cron(1)، أو كلما بدأت في قراءة البريد):

    #!/bin/sh

    ORGMAIL=/var/mail/$LOGNAME

    if cd $HOME &&
     test -s $ORGMAIL &&
     lockfile -r0 -l1024 .newmail.lock 2>/dev/null then
      trap "rm -f .newmail.lock" 1 2 3 13 15
      umask 077
      lockfile -l1024 -ml
      cat $ORGMAIL >>.newmail &&
       cat /dev/null >$ORGMAIL
      lockfile -mu
      formail -s procmail <.newmail &&
       rm -f .newmail
      rm -f .newmail.lock fi exit 0

  عينة لملف $HOME/.procmailrc صغير:
PATH=/usr/local/bin:/usr/bin:/bin
MAILDIR=$HOME/Mail      #يحسن بك التأكد من وجوده
DEFAULT=$MAILDIR/mbox   #اختياري تمامًا
LOGFILE=$MAILDIR/from   #موصى به

:0:
* ^From.*berg
from_me

:0
* ^Subject:.*Flame
/dev/null

يمكن البحث عن أمثلة أخرى لوصفات ملف الإعدادات في صفحة الدليل procmailex(5).

  SOURCE
هذا البرنامج جزء من حزمة معالجة بريد procmail (v3.23pre) المتاحة في http://www.procmail.org/ أو ftp.procmail.org في pub/procmail/.

  MAILINGLIST
توجد قائمة بريدية للأسئلة المتعلقة بأي برنامج في حزمة procmail:
    <procmail-users@procmail.org>
        لتقديم الأسئلة/الأجوبة.
    <procmail-users-request@procmail.org>
        لطلبات الاشتراك.

إذا كنت ترغب في البقاء على اطلاع بالإصدارات الجديدة والرقع الرسمية، أرسل طلب اشتراك إلى
    procmail-announce-request@procmail.org
(هذه قائمة للقراءة فقط).

المؤلفون
ستيفن ر. فان دن بيرج
    <srb@cuci.nl>
Philip A. Guenther
    <guenther@sendmail.com>

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.