FORMAIL(1)

الاسم
formail - أداة (إعادة) تنسيق البريد

موجز
formail [+تخطي] [-المجموع] [-bczfrktedqBY] [-p البادئة]
[-D أقصى_طول خبيئة_المعرف]
[-l مجلد]
[-x حقل_الترويسة] [-X حقل_الترويسة]
[-a حقل_الترويسة] [-A حقل_الترويسة]
[-i حقل_الترويسة] [-I حقل_الترويسة]
[-u حقل_الترويسة] [-U حقل_الترويسة]
[-R الحقل_القديم الحقل_الجديد]
[-n [أقصى_العمليات ]] [-m أدنى_الحقول] [-s [الأمر [معامل ...]]]
formail -v

الوصف
formail مرشح يمكن استخدامه لفرض تنسيق صندوق البريد (mailbox) على الرسائل، وإجراء هروب لأسطر `From '، وتوليد ترويسات الرد الآلي، وإجراء تعديلات أو استخراج بسيط للترويسات، أو تقسيم ملفات صناديق البريد/الموجزات/المقالات. يُتوقع وجود محتويات البريد أو صندوق البريد أو المقال في الدخل القياسي (stdin).

إذا طُلب من formail تحديد مرسل البريد ولكنه لم يتمكن من العثور على أي مرسل، فإنه سيستبدله بـ `foo@bar'.

إذا بُدئ formail دون أي خيارات في سطر الأوامر، فإنه سيفرض تنسيق صندوق البريد على أي بريد قادم من الدخل القياسي وسيهرّب جميع أسطر `From ' الزائفة باستخدام `>'.

الخيارات

-v  سيطبع formail رقم إصداره ثم يخرج.

-b  لا تُهرّب أي ترويسات صندوق بريد زائفة (أي الأسطر التي تبدأ بـ `From ').

-p البادئة
    عرّف بادئة اقتباس مختلفة. إذا لم تُحدد، فستكون القيمة المبدئية هي `>'.

-Y  افترض تنسيق صندوق بريد Berkeley التقليدي، مع تجاهل أي حقول Content-Length:.

-c  اربط الحقول المستمرة في الترويسة. قد يكون هذا مفيدًا عند معالجة البريد لاحقًا باستخدام أدوات النصوص القياسية (الموجهة للأسطر).

-z  تأكد من وجود مسافة بيضاء بين اسم الحقل ومحتواه. احذف الحقول التي تحتوي على مسافة بيضاء واحدة فقط. احذف المسافات البيضاء في البداية والنهاية في الحقول المستخرجة باستخدام -x.

-f  اجبر formail على تمرير أي تنسيق غير تابع لصندوق البريد كما هو (أي لا تولد سطر `From ' كأول سطر).

-r  ولّد ترويسة رد آلي. سيؤدي هذا عادةً إلى التخلص من جميع الحقول الموجودة (باستثناء X-Loop:) في الرسالة الأصلية؛ الحقول التي ترغب في الحفاظ عليها يجب تسميتها باستخدام الخيار -i. إذا استخدمت هذا الخيار مع -k، يمكنك منع هروب متن الرسالة بتحديد الخيار -b أيضًا.

-k  عند توليد ترويسة الرد الآلي أو عند استخراج الحقول، احتفظ بالمتن أيضًا.

-t  ثق في أن المرسل قد استخدم عنوان عودة صالحًا في ترويسته. يتسبب هذا في قيام formail باختيار مرسل الترويسة بدلًا من مرسل المظروف للرد. يجب استخدام هذا الخيار عند توليد ترويسات الرد الآلي من مقالات الأخبار أو عندما يتوقع مرسل الرسالة ردًا.

-s  سيُجزّأ الدخل إلى رسائل بريد منفصلة، وتُمرّر إلى برنامج واحدًا تلو الآخر (يُبدأ برنامج جديد لكل جزء). يجب أن يكون -s هو آخر خيار مُحدد، ويُتوقع أن يكون المعامل الأول الذي يليه هو اسم البرنامج، وسيُمرّر أي معامل آخر إليه. إذا أغفلت البرنامج، فسيقوم formail ببساطة بربط الرسائل المجزأة في الخارج القياسي مرة أخرى. انظر FILENO.

-n [أقصى_العمليات]
    أخبر formail ألا ينتظر انتهاء كل برنامج قبل بدء البرنامج التالي (مما يؤدي إلى معالجة الأجزاء بالتوازي). يحدد maxprocs اختيارياً حداً أقصى لعدد العمليات التي تعمل في وقت واحد.

-e  لا تشترط وجود أسطر فارغة قبل ترويسة الرسالة الجديدة (أي يمكن أن تبدأ الرسائل في كل سطر).

-d  أخبر formail أن الرسائل التي يُفترض أن يجزئها لا يلزم أن تكون بتنسيق صندوق بريد صارم (أي يسمح لك بتجزئة الموجزات/المقالات أو تنسيقات صناديق البريد غير القياسية). هذا يعطل التعرف على حقل Content-Length:.

-l مجلد
    ولّد ملخص سجل بنفس أسلوب procmail. يتضمن ذلك سطر "From " بالكامل، وحقل ترويسة الموضوع (Subject:)، والمجلد، وحجم الرسالة بالبايت. يمكن استخدام الأمر mailstat لتلخيص السجلات بهذا التنسيق.

-B  يجعل formail يفترض أنه يجزئ ملف BABYL rmail.

-m أدنى_الحقول
    يسمح لك بتحديد عدد حقول الترويسة المتتالية التي يحتاج formail للعثور عليها قبل أن يقرر أنه وجد بداية رسالة جديدة، والقيمة المبدئية هي 2.

-q  يخبر formail بأن يصمت (مع استمراره في الاكتشاف) بشأن أخطاء الكتابة والرسائل المكررة وحقول Content-Length: غير المتطابقة. هذا الخيار مفعل مبدئيًا، لجعله يعرض الرسائل استخدم -q-.

-D أقصى_طول خبيئة_المعرف
    سيكتشف formail ما إذا كان معرف الرسالة (Message-ID) للرسالة الحالية قد شوهد سابقاً باستخدام ملف idcache بحجم maxlen تقريباً. إذا لم يكن بصدد التجزئة، فسيعيد حالة نجاح إذا عُثر على تكرار. إذا كان يجزئ، فلن يخرج الرسائل المكررة. إذا استخدم مع -r، فسينظر formail في عنوان البريد لمرسل المظروف بدلاً من معرف الرسالة.

-x حقل_الترويسة
    استخرج محتويات حقل_الترويسة هذا من الترويسة. ستُترك تكملة الأسطر كما هي؛ إذا كنت تريد القيمة في سطر واحد فستحتاج أيضًا إلى الخيار -c.

-X حقل_الترويسة
    مثل -x، ولكنه يحفظ/يتضمن اسم الحقل أيضًا.

-a حقل_الترويسة
    ألحق حقل_ترويسة مخصصاً بالترويسة؛ ولكن فقط إذا لم يكن هناك حقل مشابه موجود بالفعل. إذا حددت أيًا من أسماء الحقول Message-ID: أو Resent-Message-ID: بدون محتويات للحقل، فسيقوم formail بتوليد معرف رسالة فريد لك.

-A حقل_الترويسة
    ألحق حقل_ترويسة مخصصاً بالترويسة في كل الأحوال.

-i حقل_الترويسة
    مثل -A، إلا أن أي حقول مشابهة موجودة يُعاد تسميتها بإضافة البادئة “Old-” إليها. إذا كان حقل_الترويسة يتكون من اسم الحقل فقط، فلن يُلحق.

-I حقل_الترويسة
    مثل -i، إلا أن أي حقول مشابهة موجودة تُزال ببساطة. إذا كان حقل_الترويسة يتكون من اسم الحقل فقط، فإنه يحذف الحقل فعلياً.

-u حقل_الترويسة
    اجعل الظهور الأول لهذا الحقل فريداً، وبالتالي احذف جميع تكراراته اللاحقة.

-U حقل_الترويسة
    اجعل الظهور الأخير لهذا الحقل فريداً، وبالتالي احذف جميع تكراراته السابقة.

-R الحقل_القديم الحقل_الجديد
    يغير تسمية جميع تكرارات اسم الحقل oldfield إلى newfield.

+تخطي
    تخطّ أول عدد skip من الرسائل أثناء التجزئة.

-المجموع
    أخرج total من الرسائل كحد أقصى أثناء التجزئة.

ملاحظات
عند إعادة تسمية الحقول أو إزالتها أو استخراجها، يمكن استخدام أسماء حقول جزئية لتحديد جميع الحقول التي تبدأ بالقيمة المحددة.

مبدئياً، عند توليد ترويسة رد آلي، يختار procmail مرسل المظروف من رسالة الدخل. هذا صحيح لرسائل الإجازة والردود التلقائية الأخرى المتعلقة بتوجيه أو تسليم الرسالة الأصلية. إذا كان المرسل يتوقع رداً أو كان الرد يتولد استجابة لمحتويات الرسالة الأصلية، فيجب استخدام الخيار -t.

RFC822، المعيار الأصلي الذي يحكم تنسيق رسائل البريد عبر الإنترنت، لم يحدد ما إذا كان ينبغي مراعاة حقول ترويسة Resent (تلك التي تبدأ بـ `Resent-'، مثل `Resent-From:') عند توليد رد. منذ ذلك الحين، تطور الاستخدام الموصى به لترويسات Resent لاعتبارها معلوماتية بحتة وليست للاستخدام عند توليد رد. وقد قُنّن هذا في RFC2822، معيار تنسيق رسائل الإنترنت الجديد، والذي ينص جزئياً على ما يلي:

    تُستخدم حقول Resent لتحديد الرسالة على أنها أُعيد إدخالها في نظام النقل بواسطة مستخدم. الغرض من استخدام حقول Resent هو جعل الرسالة تظهر للمستلم النهائي وكأنها أُرسلت مباشرة من قبل المرسل الأصلي، مع بقاء جميع الحقول الأصلية كما هي....يجب ألا تُستخدم في المعالجة العادية للردود أو الإجراءات التلقائية الأخرى المماثلة على الرسائل.

بينما يتجاهل formail الآن ترويسات Resent عند توليد ردود الترويسة، فإن إصدارات formail السابقة لـ 3.14 أعطت مثل هذه الترويسات أسبقية عالية. إذا كان السلوك القديم مطلوباً للتطبيقات القائمة، فيمكن تحديده باستدعاء formail مع الخيار `-a Resent-' بالإضافة إلى خياري -r و -t. هذا الاستخدام مهجور ولا ينبغي استخدامه في التطبيقات الجديدة.

البيئة

FILENO
    أثناء التجزئة، يخصص formail رقم الرسالة التي تُخرج حالياً لهذا المتغير. من خلال التعيين المسبق لـ FILENO، يمكنك تغيير رقم الرسالة الأولي المستخدم وعرض المخرجات المبطنة بالأصفار. إذا لم يُعين FILENO، فستكون قيمته المبدئية هي 000. إذا كان FILENO غير فارغ ولا يحتوي على رقم، فسيُعطّل توليد FILENO.

أمثلة
لتجزئة موجز، عادة ما يُستخدم:
    formail +1 -ds >>صندوق_البريد_الذي_تختاره
أو
    formail +1 -ds procmail

لإزالة جميع حقول Received: من الترويسة:
    formail -I Received:

لإزالة جميع الحقول باستثناء From: و Subject: من الترويسة:
    formail -k -X From: -X Subject:

لاستبدال حقل Reply-To: في ترويسة، يمكنك استخدام:
    formail -i "Reply-To: foo@bar"

لتحويل ملف صندوق بريد غير قياسي إلى ملف صندوق بريد قياسي، يمكنك استخدام:
    formail -ds <old_mailbox >>new_mailbox

أو، إذا كان لديك برنامج بريد متساهل للغاية:
    formail -a Date: -ds <old_mailbox >>new_mailbox

لاستخراج الترويسة من رسالة:
    formail -X ""
أو
    sed -e '/^$/ q'

لاستخراج متن الرسالة:
    formail -I ""
أو
    sed -e '1,/^$/ d'

انظر أيضًا
mail(1), sendmail(8), procmail(1), sed(1), sh(1), RFC822, RFC2822, RFC1123

التشخيص

تعذر التفرع (Can't fork)
    عمليات كثيرة جداً على هذا الحاسوب.

حقل Content-Length: يتجاوز الطول الفعلي بمقدار nnn بايت
    حدد حقل Content-Length: في الترويسة طولاً كان أطول من المتن الفعلي. يتسبب هذا في امتصاص هذه الرسالة لعدد من الرسائل اللاحقة التي تليها في صندوق البريد نفسه.

تعذرت الكتابة في الخارج القياسي (stdout)
    البرنامج الذي كان formail يحاول التمرير إليه لم يقبل جميع البيانات التي أرسلها formail؛ يمكن كتم هذا التشخيص بواسطة الخيار -q.

عُثر على مفتاح مكرر: x
    عُثر على معرف الرسالة (Message-ID) أو المرسل x في هذه الرسالة في خبيئة المعرف (idcache)؛ يمكن كتم هذا التشخيص بواسطة الخيار -q.

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

جدول الملفات ممتلئ
    ملفات مفتوحة كثيرة جداً على هذا الحاسوب.

اسم حقل غير صالح: "x"
    يحتوي اسم الحقل المحدد "x" على محارف تحكم، أو لا يمكن أن يكون اسم حقل جزئياً لهذا الخيار.

تحذيرات
يمكنك توفير الكثير من العناء لنفسك وللآخرين إذا حاولت تجنب استخدام ميزة الرد الآلي هذه على الرسائل القادمة عبر القوائم البريدية. فبناءً على تنسيق البريد الوارد (والذي يعتمد بدوره على كل من وكيل بريد المرسل الأصلي وإعداد القائمة البريدية)، قد يقرر formail توليد ترويسة رد آلي ترد على القائمة.

تماشياً مع تقاليد أدوات يونكس، سيقوم formail بما تطلبه منه تماماً، حتى لو أدى ذلك إلى رسالة غير متوافقة مع معيار RFC822. وبشكل خاص، سيسمح لك formail بتوليد حقول ترويسة تنتهي أسماؤها بمسافة بدلاً من نقطتين رأسيتين. وبينما يعد هذا صحيحاً لسطر `From ' الرئيسي، إلا أن هذا السطر ليس حقل ترويسة بقدر ما هو فاصل رسائل لتنسيق صندوق البريد mbox. إن تكرار مثل هذا السطر أو أي حقل ترويسة آخر بدون نقطتين رأسيتين سيُعتبر من قبل العديد من برامج البريد، بما في ذلك formail نفسه، كبداية لرسالة جديدة. وسيعتبره آخرون رسالة تالفة. وبسبب هذا، لا ينبغي استخدام الخيار -i مع سطر `From ' لأن السطر الناتج المعاد تسميته، `Old-From '، لن يفعل على الأرجح ما تريده. إذا كنت ترغب في حفظ سطر `From ' الأصلي، فأعد تسميته باستخدام الخيار -R إلى حقل ترويسة قانوني مثل `X-From_:'.

العلل
عندما يتعين على formail توليد سطر `From ' رئيس، فإنه سيحتوي عادةً على التاريخ الحالي. إذا أُعطي formail الخيار `-a Date:'، فسوف يستخدم التاريخ من حقل `Date:' في الترويسة (إن وجد). ومع ذلك، وبما أن formail ينسخه حرفياً، فإن التنسيق سيختلف عما تتوقعه معظم برامج قراءة البريد.

إذا أُمر formail بحذف سطر `From ' الرئيس أو إعادة تسميته، فلن يُعيد توليده آلياً كالمعتاد. لإجبار formail على إعادة توليده في هذه الحالة، ضَمّن -a 'From '.

إذا لم يُستدعَ formail كأول برنامج في أنبوب (pipe) وأُمر بتجزئة الدخل إلى عدة رسائل، فلن ينتهي formail حتى يغلق البرنامج الذي يتلقى منه الدخل خرجه أو ينهي نفسه.

إذا أُمر formail بتوليد بريد رد آلي، فإنه لن يضع أبداً أكثر من عنوان واحد في حقل `To:'.

متنوعات
أداة formail نظيفة بثمانية بتات (eight-bit clean).

عندما يتعين على formail تحديد عنوان المرسل، فإن كل عنوان بريد متوافق مع RFC822 يكون مسموحاً به. سيقوم formail دائماً بتجريد العنوان إلى حده الأدنى (حذف التعليقات والمسافات البيضاء الزائدة).

التعبير النمطي المستخدم للعثور على أختام البريد `الحقيقية' هو:
    "\n\nFrom [\t ]*[^\t\n ]+[\t ]+[^\n\t ]"

إذا عُثر على حقل Content-Length: في ترويسة، فسيقوم formail بنسخ عدد البايتات المحدد في المتن حرفياً قبل استئناف المسح المعتاد لحدود الرسائل (إلا عند تجزئة الموجزات أو افتراض تنسيق صندوق بريد Berkeley).

تُعتبر أي أسطر ترويسة تلي سطر `From ' الرئيس مباشرة وتبدأ بـ `>From ' تكملة لسطر `From '. إذا أُمر formail بإعادة تسمية سطر `From '، فإنه سيغير كل `>' في البداية إلى مسافة، وبذلك يحول تلك الأسطر إلى تكملات RFC822 عادية.

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

  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.