- unstable 4.30.2-1
| PROCMAIL(1) | General Commands Manual | 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 لاستدعاء الصدفة، فيحسن بك ضبطه على قيمة آمنة أولاً. انظر أيضًا : 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 بأحد معرفات المستخدمين أو المجموعات التالية : 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 :absolute_path_to_mailbox
كلما فتح procmail نفسه ملفًا للتسليم إليه، فإنه يستخدم باستمرار استراتيجيات قفل النواة التالية : 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 المقيدة)، فيجب أن يكون المسار مطلقًا.
" |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-announce-request@procmail.org
المؤلفون¶
ستيفن ر. فان دن بيرج
<srb@cuci.nl>
Philip A. Guenther
<guenther@sendmail.com>
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| 2001/08/27 | BuGless |