هذا هو وكيل بريد الأوامر الذي يمكن تشغيله في موفر الاستضافة المجاني OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت
برنامج:
اسم
mailagent - أداة معالجة البريد التلقائية
موجز
تاجر البريد [ -dhilqtFIVU ] [ -س{عمريت} ] [ -f ملف ] [ -e حكم ] [ -c التكوين ] [ -L
مستوى السجل ] [ -r ملف مسطرة ] [ -o تجاوز ] [ ملف البريد ]
الوصف
وكيل البريد يسمح لك بمعالجة البريد الخاص بك تلقائيا. نظرا لمجموعة من ليكس-مثل القواعد،
يمكنك ملء رسائل البريد الإلكتروني إلى مجلدات محددة، وإعادة توجيه الرسائل إلى شخص ثالث، وتوجيه الرسائل
إرسال رسالة إلى أمر أو حتى نشر الرسالة إلى مجموعة أخبار. ومن الممكن أيضا أن
معالجة الرسائل التي تحتوي على بعض الأوامر. ال تاجر البريد لا يتم استدعاءه يدويًا عادةً
ولكن يتم استدعاؤه عبر تصفية البرنامج الذي بدوره يستدعيه ارسل بريد. أن
يعني يجب أن يكون لديك ارسل بريد على النظام الخاص بك لاستخدام هذا. يجب أن يكون لديك أيضًا بيرل لتشغيل
البرامج النصية لوكيل البريد.
هناك مجموعة من الخيارات التي يمكن استخدامها عند الاستدعاء تاجر البريد نفسك. لو سمحت
الرجوع إلى OPTIONS قسم للحصول على وصف كامل. يمكنك استخدام -h خيار الحصول على
تذكير استخدام غامض.
المنتج نظرة عامة
وكيل البريد يحتوي في الواقع على أربع مجموعات متميزة من الميزات، والتي يمكن استخدامها في وقت واحد أو
بالدور. وهذا ينطوي:
· معالج أوامر @SH، ليظل متوافقًا مع التنفيذ الأول. في
بهذا الاستخدام الأبسط، يتم ترك جميع رسائل البريد في صندوق البريد الخاص بك (أو يتم التقاط الكل
المجلد المطلوب على أنظمة دبيان: يرجى الاطلاع على /usr/share/doc/mailagent/SECURITY لـ
تفاصيل)، مع معالجة خاصة مرفوعة على الرسائل التي يكون موضوعها أمر.
يرجى الرجوع إلى القسم بعنوان باستخدام ال DEFAULT قواعد إذا كنت ترغب في استخدام هذا
ميزة.
· مرشح بريد كامل، يساعدك على فرز بريدك على أساس الفرز المتنوع
المعايير والإجراءات. يتم تحديد التصفية في ملف القاعدة وتحل محل
الافتراضي أمر معالجة البريد (والتي يمكن تشغيلها مرة أخرى عن طريق الإعداد الصريح
ووضع له قاعدة). يجب أن يكون هذا هو الاستخدام الأكثر شيوعًا لـ تاجر البريد وهو بالكامل
موثقة تحت الباب بعنوان باستخدام ال منقي. يمكنك تسليم البريد إلى
مجلدات عادية بنمط Unix ولكن أيضًا إلى مجلدات MMDF وMH.
· بديل ل عطلة البرنامج الذي سوف يقوم بالرد تلقائيا على بريدك
بينما أنت لست هناك. ما عليك سوى تقديم رسالة ليتم إرسالها مرة أخرى و
التردد الذي سيحدث فيه هذا. تسمح لك بعض بدائل الماكرو البسيطة بإعادة
استخدم بعض أجزاء رأس البريد في رسالة الإجازة الخاصة بك، للحصول على طابع أكثر تخصيصًا
رد. انظر عطلة MODE القسم لمزيد من التفاصيل.
· خادم بريد عام، والذي سيتيح لك تنفيذ خادم بريد حقيقي بدون
متاعب المخاوف ذات المستوى الأدنى مثل استرداد الأخطاء أو التسجيل أو تحليل الأوامر.
الوثائق الكاملة يمكن العثور عليها في القسم عام MAIL الخادم في نهاية
هذه الصفحة اليدوية.
من الممكن توسيع أوامر تصفية mailagent من خلال تنفيذها بيرل و
ثم تحميلها تلقائيًا عند استخدامها. سوف تتصرف تلك الأوامر الموسعة
تماما مثل تلك المضمنة، كما هو موثق في تمتد التصفية أوامر والقسم الخاص به.
التعلُّم من أمثلة
من المحتمل جدًا أن تجد صفحة الدليل هذه معقدة جدًا بالنسبة لك.
لسوء الحظ، ليس المقصود حقًا أن يكون برنامجًا تعليميًا، بل مادة مرجعية. لو
إذا كنت ترغب في ذلك، يمكنك البدء بالنظر إلى الأمثلة الموجودة في شجرة مصدر التوزيع
مع وكيل/أمثلة. يحتوي هذا الدليل على مثالين لملفات القاعدة (انظر إلى ملف
ملف README أولاً) ويتم التعليق عليه بشكل مطول.
الحصول على بدأت
أولاً، تحتاج إلى تثبيت الحد الأدنى من التكوين ومعرفة كيفية عمله. سيكون من
لا فائدة من تثبيت البرنامج بالكامل ومن ثم اكتشاف أنه لا يعمل
معلن...
لبدء التثبيت، يجب عليك إعداد ~ / .mailagent الملف الذي هو الرئيسي
ملف التكوين، واختيار الحق تصفية برنامج.
Choosing ال تصفية البرنامج
التوزيع يأتي مع برنامجين للتصفية. واحد مكتوب في الصدفة والآخر في C. The
قد يكون إصدار shell هو الإصدار الذي يجب استخدامه إذا كان بإمكانك استلام بريدك على العديد من الأجهزة المختلفة
الأنظمة الأساسية حيث يكون الدليل الرئيسي الخاص بك مثبتًا على NFS (أي مشترك بين جميع تلك الأنظمة
المنصات). الإصدار C أكثر أمانًا وأسرع بكثير، لكنك تحتاج إلى تثبيته على إصدار ثابت
الموقع.
على بعض المنصات ، ارسل بريد لا يقوم بإعادة تعيين UID الخاص به بشكل صحيح عند معالجة رسائل البريد في
قائمة الانتظار الخاصة. في هذه الحالة، تحتاج إلى الحصول على نسخة خاصة من برنامج مرشح C وإجراء ذلك
إنه مناسب لنفسك. سيقوم عامل التصفية بعد ذلك بإعادة تعيين UID الخاص به بشكل صحيح إذا تم استدعاؤه باستخدام ملف
معرف فريد فعال يختلف عن معرفك الخاص (قد يتطلب الأمر أيضًا بت setgid لإعادة تعيين معرف GID كـ
حسنًا). إذا كان هذا هو الحال بالفعل على نظامك، فتأكد من استخدام مسار
متغير التكوين لتعيين PATH مناسب، حيث سيؤدي المرشح إلى إنتاج عملية Perl
الخيار "-S" الذي يبحث عن ملف تاجر البريد النصي.
حتى لو لم تكن بحاجة إلى الحصول على نسخة setuid من ملف تصفية البرنامج، فمن الحكمة لإعداد
المسار الصحيح: قد يقوم شخص ما باقتحام حسابك عن طريق وضع حصان طروادة لوكيل البريد
الموقع المناسب. تأكد أيضًا من أن برنامج mailagent محمي ضد
الكتابة، وكذلك الدليل الذي يحملها، أو قد يقوم شخص ما باستبدال دليله
نسخة من البرنامج النصي وكسر الأمن. أعتقد أن setuid تصفية برنامج لتكون آمنا,
لكن التغاضي ممكن دائمًا، لذا يرجى إبلاغي بأي ثغرة أمنية.
ال تصفية يمكن العثور على البرنامج النصي في ليب/وكيل البريد الدليل. انها تحتاج الى بعض الخياطة ذلك
يجب عليك نسخه إلى الدليل الرئيسي الخاص بك وتحريره ليناسب احتياجاتك. التعليقات معلقة
في ذلك يجب أن تكون واضحة بذاتها. لا يوجد سوى قسم صغير في رأس النص
الذي يحتاج إلى تحرير. سيكون عليك حذف تعليقات الصدفة في ملف تصفية النصي بواسطة
نفسك إذا كانت قوقعتك لا تستطيع التعامل معهم.
اعتبارًا من الإصدار 3.0 PL44، أنصحك بتفضيل الإصدار C إذا كنت قلقًا بشأنه
حماية. إذا كنت في وضع يسمح للعديد من البنيات بمعالجة ملفك .إلى الأمام,
ثم سيتم اختيار غلاف Shell للملف القابل للتنفيذ المناسب بناءً على البنية
مطلوب.
تكوين وكيل البريد
If تاجر البريد في المسار الخاص بك، يمكنك تكوين التثبيت الافتراضي تلقائيًا عن طريق
جري:
وكيل البريد -I
والتي سوف تخلق ~ / .mailagent ملف من قالب موجود، قم بتخصيص بعض العناصر المهمة
المتغيرات لموقعك، وإجراء بعض عمليات التحقق من السلامة الأساسية. كل ما يفعله الأمر هو
الإخراج على الشاشة لأغراض التحقق، ويتم الإبلاغ عن أي مشكلة يتم العثور عليها.
خلاف ذلك، عليك نسخ mailagent.cf الملف الموجود في الدليل الفرعي لوكيل البريد
/usr/share/mailagent (المسمى فيما بعد ليب) باسم أ .mailagent في دليل منزلك. تحريره
لتكوين المعالجة بأكملها. على وجه الخصوص، يجب عليك اختيار دليل التخزين المؤقت
(المسمى فيما يلي بالتخزين المؤقت) ودليل السجل (المسمى فيما يلي بالسجل).
لاحظ أن استخدام إجراء التثبيت التلقائي أعلاه لا يمنعك من الاستمرار
من خلال الملف والتعديل عليه كما تريد. في الواقع، يتم تشجيعك كثيرًا على القيام بذلك
هذا، خاصة بالنسبة لإعداد الدليل الرئيسي، ومستوى التسجيل و مسار or p_host
المتغيرات. بمجرد الانتهاء، أعد تشغيل تاجر البريد -I الأمر للتأكد من أن كل شيء
بخير. ومع ذلك، سيتعين عليك توصيل mailagent عن طريق إنشاء ملف ~ /. إلى الأمام الملف، كما
وأوضح في بضعة أقسام.
فيما يلي وصف لكل حقل من الحقول التي ستجدها في ~ / .mailagent ملف،
متبوعة بقيمة مقترحة، عند الاقتضاء. الحقول التي تم وضع علامة عليها كاختيارية قد لا تكون كذلك
موجود في ملف التكوين بعض المجالات لها علاقة وثيقة مع الآخرين، و
وهذا يعطى أيضا.
com.agemax الفترة التي يجب بعدها إزالة الإدخال في قاعدة البيانات (المقترح: 1y)
هذا الحقل اختياري، ولكنه ضروري إذا تنظيف سيارة على.
ملف التأليف تفويضات الإرسال عن بعد (لم تنفذ بعد).
تنظيف سيارة عند التعيين على تشغيل (غير حساس لحالة الأحرف)، سيقوم وكيل البريد بإجراء التنظيف التلقائي للملف
إدخالات قاعدة البيانات تحت مزيج عن طريق إزالة كافة العناصر الأقدم من com.agemax. وهذا هو
حقل اختياري، مع حذفه، يكون الوضع الافتراضي هو إيقاف التشغيل. (مقترح: إيقاف، إلا إذا كنت تستخدم
أوامر مرة واحدة أو فريدة أو تسجيل، أو قم بتنشيط وضع الإجازة.)
بيف ما إذا كان biffing مطلوبًا أم لا تاجر البريد يسلم البريد إلى مجلد. تعيين
تم تشغيله (غير حساس لحالة الأحرف) للسماح بالتصفح المحلي إذا قمت بتسجيل الدخول.
(اختياري، الافتراضي هو: OFF)
biffhead عند تمكين التقسيم، يسرد هذا المتغير الرؤوس التي يجب طباعتها
خارج. يجب إعطاء الرؤوس بتنسيقها الطبيعي وفصلها
فواصل. (اختياري، الإعداد الافتراضي هو: من، إلى، الموضوع، التاريخ).
com.bifflen الحد الأقصى لطول نص الرسالة الذي يجب طباعته عند التقطيع.
(اختياري، الافتراضي هو 560).
bifflines الحد الأقصى لعدد أسطر نص الرسالة التي يجب طباعتها متى
biffing. في الحقيقة، تاجر البريد محاولات لطباعة هذا العدد من الخطوط، المقدمة
إجمالي عدد الأحرف المطبوعة أقل من com.bifflen. (خياري،
الافتراضي هو 7).
com.biffmh عند تشغيله، يتم ضغط نص الرسالة قبل التقسيم عن طريق الإزالة
مسافات متتالية واستبدال الأسطر الجديدة بمسافة واحدة. الرسالة
لا يتم تغيير نفسه جسديا بطبيعة الحال، فقط الإخراج على الشاشة هو
قلقان. وبما أن هذا قد يؤدي إلى رسالة يصعب قراءتها، أقترح عليك ذلك
تشغيل أيضا com.biffnice عند استخدام هذا الخيار. (اختياري، الافتراضي هو: OFF).
com.biffmsg يجب استخدام المسار إلى الملف الذي يصف تنسيق التنسيق. إذا لم يتم تعيينه، أ
يتم استخدام التنسيق الثابت الافتراضي. الموسم حسب الذوق. (مقترح: ~/.biffmsg).
com.biffnice ما إذا كان ينبغي إعادة تنسيق الرسالة لتتناسب بشكل جيد مع الوحدة الطرفية.
(اختياري، الافتراضي هو إيقاف التشغيل، المقترح: تشغيل متى com.biffmh قيد التشغيل أيضًا).
com.biffnl يتحكم في ما إذا كان يجب طباعة خطوط الجسم "الفارغة" أم لا. بالخطوط "الفارغة" ،
ونعني الأسطر التي لا تحتوي على كلمات. اضبطه على ON لطباعة هذه الأسطر الفارغة
OFF إذا كنت ترغب في الحصول على رؤية أكثر إحكاما للجسم ضمن الحدود الثابتة
by com.bifflen و bifflines. (اختياري، الافتراضي هو ON).
اقتباس ثنائي يتحكم في ما إذا كان خط الإسناد الرئيسي يقدم عرض أسعار مقتطعًا
يجب أن تكون جزءًا من رسالة biff أم لا. عند إيقاف تشغيله، خط الإسناد
يتم قطعه ويتم الإبلاغ عن ذلك في رسالة القطع متى com.bifftrim is
على. (اختياري، الافتراضي هو ON).
com.bifftrim يتحكم في ما إذا كان يجب استبدال الخطوط المقطوعة داخل رسالة biff بـ a
رسالة توضح عدد الأشخاص الذين تم قطعهم. يتم استخدامه فقط بواسطة %-T biving
دقيق. عند إيقاف تشغيله، يتم إيقاف تشغيله تلقائيًا اقتباس ثنائي أيضًا. (خياري،
الافتراضية إلى ON).
com.bifftrlen يوضح عدد الأسطر التي يجب أن يكون طول الاقتباس الرئيسي قبل تنفيذ أي منها
زركشة. يتم استخدامه فقط بواسطة الماكرو %-T biffing. (اختياري، الافتراضي هو 2).
صرخ اسم ملف قائمة انتظار وسائل الشرح حيث يتم الاحتفاظ بالمهام المجمعة. هذه المعلمة
يجب تحديده عند استخدام الأمر AFTER. (مقترح: التخزين المؤقت $/وسيلة الشرح)
com.cleanlaps فترة التنظيف لإدخالات قاعدة البيانات. يتم حفظ قيمة آخر عملية تنظيف
في ملف السياق. هذا أمر اختياري، ولكنه ضروري إذا تنظيف سيارة على.
(المقترح: 1M)
com.comfile اسم الملف الذي يحتوي على الأوامر المعتمدة. مطلوب عند استخدام PROCESS.
(مقترح: $spool/commands).
ضغط اسم الملف الذي يحتوي على قائمة المجلدات المضغوطة. انظر القسم حول
ضغط المجلد. هذه معلمة اختيارية. (مقترح: ~/.compress).
com.compspecs اسم الملف الذي يحتوي على مواصفات كيفية التعامل مع الأنواع المختلفة من
تنسيقات الضغط. راجع القسم الخاص بضغط المجلدات. هذا أمر اختياري
معامل. (مقترح: $spool/compressors).
com.comptag علامة الضغط الافتراضية عند إنشاء مجلدات جديدة. إذا لم يتم تحديدها،
الافتراضي هو "gzip".
com.comserver اسم الملف الذي يحتوي على أوامر SERVER المعتمدة وتعريفها.
هذه معلمة اختيارية إذا كنت لا تخطط لاستخدام خادم البريد العام.
(مقترح: $spool/server).
سياق الكلام ملف يحمل سياق mailagent. يحفظ السياق بعض المتغيرات التي تحتاج
ليتم الاحتفاظ بها طوال عمر العملية. مطلوب إذا تم تنشيط التنظيف التلقائي.
(مقترح: $spool/context)
قائمة التوزيع قائمة بجميع التوزيعات المتاحة. انظر العينة الموجودة في
ليب/وكيل البريد/التوزيعات. مطلوب عن طريق العملية فقط. (مقترح: $spool/distribs)
نطاق اسم المجال الخاص بك، بدون النقطة الرائدة، كما في example.com. القيمة هي
ملحق بقيمة البريد الإلكتروني عندما لا يحتوي هذا المتغير على أي "@"، إلى
إنشاء عنوان بريد إلكتروني مؤهل بالكامل. أنظر أيضاً معرف com لهذا التطبيق هو com.hidenet المتغير.
(اختياري، يتم تحديد اسم المجال افتراضيًا في وقت الإنشاء).
البريد الإلكتروني عنوان البريد الإلكتروني الخاص بك. إذا تركت غير محددة، سيحاول وكيل البريد تخمينها
هو - هي. يتم استخدام هذا العنوان بواسطة وكيل البريد عند محاولة إرسال شيء ما إلى المستخدم
(أنت!). (مقترح: حدد عنوان بريدك الإلكتروني).
com.emergdir اسم الدليل الذي ينبغي استخدامه للمقالب، ويفضل. هذا هو
خياري. (مقترح: ~/tmp/lost+البريد)
com.execsafe ما إذا كان يجب أن تكون صارمًا قبل الاستخدام إكسيك () لبدء عملية جديدة أم لا. ال
يتم استخدام قيمة هذا المتغير بدلا من تأمين عند التحقق من الملف القابل للتنفيذ
ملفات. (الإعداد الافتراضي هو إيقاف التشغيل، ويُقترح: تشغيل إذا كان ذلك ممكنًا).
com.execskip سواء لتخطي إكسيك () الشيكات الأمنية تماما. لا تقم بتشغيل هذا
إلا إذا كنت تثق حقًا في جميع المستخدمين الذين لديهم حق الوصول إلى جهازك أو ملفك
الخادم. (اختياري، الافتراضي هو OFF، المقترح: OFF).
من جميع سواء ذلك او تاجر البريد يجب الهروب من كل من الخطوط في الرسالة، لا
فقط أولئك الذين تعتقد أنهم يجب أن يبدووا خطرين (على سبيل المثال أ من بعد سطر فارغ).
هذا الخيار منطقي فقط عندما fromesc تم تفعيله أيضًا. يتم تجاهله
خلاف ذلك، وبالتالي فهو اختياري. بشكل افتراضي، من المفترض أن يكون OFF.
(مقترح: إيقاف، حتى يكون لديك أسباب للاعتقاد بأن وكيل مستخدم البريد الخاص بك هو
مرتبكًا في هذا الوضع: عندما يحدث ذلك، سيقوم وكيل المستخدم الخاص بك بتقسيم البريد مقابل لا
سبب واضح).
fromesc سواء ذلك او تاجر البريد يجب الهروب يحتمل أن تكون خطرة من خطوط في البريد
رسائل. إذا كنت تستخدم MH أو إذا كان قارئ البريد الخاص بك لا يستخدم هذه الخطوط
رسائل منفصلة، ثم يمكنك ضبطها على OFF. (مقترح: تشغيل)
com.fromfake سواء ذلك او تاجر البريد يجب أن يقوم بتزييف سطر من: في رأس الرسالة متى
إنه غائب. وبطبيعة الحال، يتطلب الأمر خطًا بادئًا صالحًا للعمل!
(اختياري، الافتراضي هو ON، المقترح: ON).
com.groupsafe إذا تم إيقاف تشغيله، فستتم إدارة الملفات القابلة للكتابة في المجموعة كما لو كانت آمنة،
من وجهة نظر أمنية. اتركه قيد التشغيل إذا كان ذلك ممكنًا، أو يمكنك المرور بـ
ثغرة أمنية ضخمة دون أن تلاحظها (اختياري، الإعدادات الافتراضية هي ON، مقترحة:
تشغيل).
مزيج الدليل المستخدم لتجزئة الاسم بواسطة قاعدة البيانات المضمنة التي تستخدمها ONCE،
أوامر فريدة وتسجيل. اختياري، إلا إذا كنت تستخدم تلك الأوامر أو
تفعيل التنظيف التلقائي. يتم وضع الدليل في منطقة التخزين المؤقت. (مقترح:
$ التخزين المؤقت / دبر).
helpdir الدليل الذي يتم فيه الاحتفاظ بملفات المساعدة لأوامر SERVER. (مقترح:
$ التخزين المؤقت/مساعدة)
معرف com لهذا التطبيق هو com.hidenet عند الضبط على ON، تظهر قيمة المتغير نطاق هو الاسم المؤهل بالكامل
مستخدم. عند إيقاف التشغيل، يتم إضافة اسم المضيف مسبقًا إلى نطاق. إذا كان اسم المضيف
بالفعل مؤهل بالكامل، ثم قيمة نطاق يتم تجاهله. على افتراض نطاق
ومن المقرر أن example.com واسم المضيف هو مضيف، ثم الاسم المؤهل بالكامل
سوف يكون host.example.com if معرف com لهذا التطبيق هو com.hidenet متوقف، و example.com إذا كان قيد التشغيل. (خياري،
الإعدادات الافتراضية لكل ما تم تحديده في وقت الإنشاء)
الصفحة الرئيسية يحدد مكان وجود الدليل الرئيسي. يجب أن يكون هذا دقيقا.
مستوى مستوى السجل، انظر أدناه للحصول على تعريف للمستويات المتاحة (المقترح: 9).
linkdirs عند التعيين على ON، يتحقق بعناية من الروابط الرمزية للأدلة عند التنفيذ
الشيكات الأمنية على الملفات الحساسة. سيؤدي هذا (بشكل متكرر) إلى التحقق من كل منها
مستوى الارتباط الرمزي بحيث لا يكون الدليل الهدف قابلاً للكتابة أو المجموعة عالميًا
قابل للكتابة وأن الدليل الأصلي لكل رابط هدف ليس عالمًا
قابل للكتابة. إذا تأمين تم إيقاف الخيار، ويتم تجاهل هذه المعلمة. (خياري،
الإعدادات الافتراضية هي: تشغيل، المقترح: تشغيل عندما يكون الأمان قيد التشغيل أيضًا).
com.lockdekay التأخير بالثواني بين محاولتي القفل. (اختياري، الافتراضي هو: 2).
lockhold الحد الأقصى للتأخير بالثواني لتثبيت القفل. بعد ذلك الوقت، سيتم القفل
تكون مكسورة. (اختياري، الافتراضي هو: 3600).
com.lockmax الحد الأقصى لعدد محاولات القفل قبل الاستسلام. (اختياري، الافتراضي هو:
(متّى 20، XNUMX).
locksafe عند قفل ملف تاجر البريد عادة ما يجعل com.lockmax محاولات مفصولة
lockdelay ثواني، ثم يستسلم. عند مواجهة التسليم إلى صندوق البريد، فإنه
قد يكون من المنطقي الاستمرار حتى لو لم يتم الإمساك بالقفل، أو حتى لو كان ذلك فقط
تم إجراء القفل الجزئي (على سبيل المثال، أحد القفل بنمط .lock أو قطيع()).
نجح). يتحكم هذا المتغير في مدى الأمان الذي تريد أن تكون عليه. اضبطه على OFF للسماح
يستمر mailagent في تسليم صندوق البريد الخاص به على الرغم من عدم إجراء أي قفل، إلى ON
إذا كنت تريد القفل الصارم، فانتقل إلى القفل الجزئي إذا كنت تستطيع العيش مع القفل الجزئي.
يتم تفريغ الرسائل غير المحفوظة في مجلد إلى صندوق بريد الطوارئ. (خياري،
الافتراضية إلى ON). على أنظمة دبيان، منذ ذلك الحين تاجر البريد لا يمكن انتزاع الأقفال، ينبغي
يتم تركه دائمًا في وضع التشغيل، وإلا قد يحدث تشويش في البريد. يرى
/usr/share/doc/mailagent/SECURITY للتفاصيل.
com.lockwarn يتحكم هذا المتغير في الوقت الذي يليه تاجر البريد يجب أن يبدأ في إصدار أ
تحذير عند الانشغال بمحاولة الحصول على قفل. إنها قائمة مفصولة بفواصل
القيم، في ثوان. إذا تم إعطاء قيمتين، فإن الأولى هي الوقت الأولي
العتبة الثانية هي فترة التكرار. على سبيل المثال، قيمة "15,60"
سيتسبب في إصدار تحذير بعد 15 ثانية، ثم كل 60 ثانية حتى يتم القفل
تم التقاطها أو انتهت مدة محاولة القفل (انظر com.lockmax و lockdelay). إذا
يتم إعطاء قيمة واحدة فقط، ويتم اعتبارها بمثابة العتبة الأولية والعتبة
فترة. (اختياري، القيمة الافتراضية هي: 20,300).
سجل اسم ملف السجل الذي سيتم وضعه في دليل السجل. (مقترح: سجل الوكيل).
com.logdir دليل التسجيل. (مقترح: ~/var/log).
صندوق البريد اسم ملف صندوق بريد النظام، والذي يمثل بشكل افتراضي قيمة الملف المستخدم
متغير التكوين. هذه معلمة اختيارية.
انخفاض الإلكتروني موقع دليل التخزين المؤقت لبريد النظام. إذا لم يتم توفير أي شيء، ثم
سيستخدم mailagent القيمة التي يحددها التكوين.
mailopt الخيارات التي سيتم تمريرها إلى مرسل البريد (انظر ارسل بريد). (اختياري، مقترح: -odq
-i، عند استخدام sendmail).
com.maxcmds الحد الأقصى لعدد الأوامر المسموح بتنفيذها بواسطة أمر SERVER
قبل مسح ما تبقى من رسالة البريد. (المقترح: 10).
ماكسيرورز الحد الأقصى لعدد الأخطاء لأمر SERVER قبل مسح ما تبقى من
رسالة البريد. (المقترح: 10).
اقصى حجم الحد الأقصى لحجم الملفات بالبايت قبل الاستخدام عدة لإرسال الملفات. يستخدم هذا
بواسطة العملية. (المقترح: 150000).
com.mboxlock التنسيق الذي سيتم استخدامه لقفل صناديق البريد قبل تسليمها إليهم. هذا
تمر السلسلة عبر آلية استبدال ماكرو صغيرة لجعلها أكبر
عام. اسم الملف المشتق بعد استبدال الماكرو هو اسم القفل
الذي سيتم استخدامه، مع إعطاء اسم الملف الذي سيتم قفله. متاح
وحدات الماكرو هي:
%D: اسم دليل الملف
%f: اسم الملف المراد قفله (المسار الكامل)
%F: الاسم الأساسي للملف (مكون المسار الأخير)
%p: رقم معرف العملية الحالية
%%: حرف % عادي
تنسيقات القفل الشائعة هي "%f.lock" و"%D/.%F.lock". بالطبع، لتكون قادرة على ذلك
عند استخدام هذه الميزة، يجب ألا يتم تكوين وكيل البريد لاستخدام نمط القطيع ().
القفل فقط. (اختياري، الإعدادات الافتراضية هي: %f.lock). وهذا ليس له أي تأثير على دبيان
الأنظمة منذ ذلك الحين تاجر البريد لا يمكن الحصول على القفل على أية حال، لأنه ليس بريد sgid.
com.mhprofile اسم ملف تعريف MH الذي سيتم استخدامه. هذا مطلوب فقط عند محاولة ذلك
حفظ في مجلد MH. إذا لم يتم تعيين هذه المعلمة الاختيارية، فستكون القيمة الافتراضية
~ / .mh_profile .
mmdf اضبط هذا على ON إذا كنت ترغب في أن تكون قادرًا على حفظ البريد في صناديق البريد ذات نمط MMDF.
(مقترح: إيقاف، إلا إذا كنت تستخدم MMDF أو MH). وهذا غير صالح في نظام دبيان.
mmdfbox قيمة هذا المتغير لا يهم إلا عندما mmdf قيد التشغيل. إذا تم ضبطه على ON، فهو جديد
سيتم إنشاء المجلدات كمجلدات MMDF. لا يتم استخدام هذا المتغير عند الحفظ في
مجلد موجود، لأنه في هذه الحالة تاجر البريد سوف تلقائيا
حدد النوع واحفظ الرسالة وفقًا لذلك. (مقترح: إيقاف، ما لم
إذا كنت تستخدم MMDF أو ترغب في استخدام MH mshf).
msgprefix اسم الملف المراد وضعه في مجلدات الدليل، مع تحديد بادئة الرسالة
يستخدم. اختياري، الافتراضي هو .msg_prefix.
الاسم الاسم الأول للمستخدم، الذي يستخدمه وكيل البريد عند الإشارة إليك. هذا يحدد
قيمة الماكرو %U.
newcmd اسم الملف الذي يصف أوامر التصفية الجديدة. انظر القسم تمتد
تصفية أوامر لمزيد من التفاصيل. اترك هذه المعلمة الاختيارية خارجًا ما لم
أنت خبير بريدي. (مقترح: $spool/newcmd).
com.newsopt الخيارات التي سيتم تمريرها إلى برنامج نشر الأخبار (انظر إرسال الأخبار). (خياري،
مقترح: اتركه فارغًا عند استخدام inews).
com.nfslock اضبطه على ON لضمان تأمين NFS. الفرق هو أن اسم المضيف هو
تستخدم جنبا إلى جنب مع PID للحصول على القفل. ومع ذلك، يجب على وكيل البريد أن يفعل ذلك
fork/exec للحصول على تلك المعلومات. هذه معلمة اختيارية تم تعيينها
إلى OFF بشكل افتراضي. (مقترح: إيقاف إذا قمت بتسليم البريد من جهاز واحد فقط،
على الرغم من أنه عبر NFS).
باسود الملف الذي يتم فيه الاحتفاظ بكلمات مرور طاقة الخادم - وهو مشفر عادةً. (مقترح:
$الصلاحيات/passwd).
مسار الحد الأدنى للمسار الذي سيتم استخدامه بواسطة برنامج مرشح C. لتعيين مسار محدد ل
آلة مضيف، أعد ال p_host عامل. هذا سيكون مُسبَق إلى الافتراضي
PATH المتغير الذي توفره البرامج الأخرى. (مقترح: / بن:/ البيرة / بن:/usr/ucb).
لاحظ أنه يجب تحديد اسم المضيف دون إلحاق أي اسم مجال به
(على سبيل المثال لاسم مضيف lyon.eiffel.com، استخدم المتغير p_lyon). إذا كان مضيفك
الاسم يحتوي على "-" بداخله، يجب عليك كتابته كـ "_"، نظرًا لأن "-" ليس صالحًا
حرف ل بيرل اسم المتغير.
بيرليب يمكن استخدام هذا المتغير لتغيير مسار بحث Perl للملفات المطلوبة.
يجب فصل الدلائل باستخدام الحرف ':'، تمامًا مثل shell PATH.
هذا المسار مُلحق بمسار بحث Perl الافتراضي. أي دليل لا
البدء بـ "/" (بعد استبدال الاسم ~) يتم نقله نسبيًا إلى
يتم تحديد دليل lib الخاص لـ mailagent في وقت التكوين.
الرجاء الحفظ اسم الملف المستخدم لحفظ مستويات التصحيح للتوزيعات المؤرشفة. هذا
يتم استخدامه فقط من خلال الأوامر التي يتم استدعاؤها عبر PROCESS. (مقترح: $spool/plsave).
powerdir يسرد الدليل تراخيص المستخدم لصلاحيات الخادم. (مقترح:
صلاحيات $/التخليص)
powerlist اسم الملف الذي يحتوي على الأسماء المستعارة لطاقة SERVER. لأن أسماء السلطة يمكن أن تكون تعسفية
طويل ولكن بعض أنظمة الملفات لا تزال تحتوي على 14 حرفًا في اسم الملف
الطول، يتم إنشاء الأسماء المستعارة الداخلية وصيانتها بواسطة وكيل البريد. (مقترح:
$الصلاحيات/الأسماء المستعارة).
powerlog الملف الذي يتم فيه تسجيل طلبات طاقة الخادم، بالإضافة إلى سجل الوكيل. منذ
تلك هي مخاوف أمنية، فمن الجيد تسجيلها بشكل منفصل. ان لم
المحددة، قم بتسجيلها فقط في Agentlog. (مقترح: $logdir/powerlog).
القوى دليل لإدارة الطاقة SERVER. (مقترح: $spool/powers)
com.proglist وصف صغير للتوزيعات المتاحة. انظر العينة الموجودة في
ليب/mailagent/proglist. يتم استخدام هذا بواسطة PROCESS فقط. (مقترح:
التخزين المؤقت $/قائمة البرامج)
طابور دليل قائمة الانتظار (الرسائل التي تنتظر المعالجة). مطلوب بالطبع.
(مقترح: $spool/queue)
قائمة الانتظار الحد الأقصى لعدد الثواني التي يمكن أن يبقى فيها البريد في قائمة انتظار وكيل البريد قبل أن يكون
معالجتها فعلا. خلال ذلك الوقت، تاجر البريد لن تحاول معالجة
رسالة حتى عندما -q يستخدم. (اختياري، الافتراضي هو: 1800).
queuelost الحد الأقصى لعدد الثواني بعد ذلك تاجر البريد يجب وضع علامة على الرسائل التي لا تزال موجودة
قائمة الانتظار باعتبارها قديمة. (اختياري، الافتراضي هو: 86400، أي في اليوم).
queuewait الوقت بالثواني لإخبار C تصفية برنامج كم من الوقت يجب أن تنتظر من قبل
إطلاق تاجر البريد. (اختياري، القيمة الافتراضية هي: 60، ولكن يمكن خفضها إلى 0 إذا قمت بذلك
لا أريد الانتظار لتأخير تلقي رسائل جديدة).
com.rulecache اسم الملف المستخدم للتخزين المؤقت لأحدث القواعد المجمعة. منذ عادة
تاجر البريد يعمل بشكل أساسي مع نفس ملف القاعدة، وهذا يوفر الحمل
إعادة ترجمة كافة القواعد في كل مرة. (اختياري، مقترح: $spool/rulecache).
com.rulemac اضبط هذا على ON لتمكين بدائل الماكرو في أنماط القاعدة. (خياري،
الافتراضي هو: OFF).
القواعد اسم الملف الذي يحمل قواعد التصفية (اختياري في الأنظمة غير التابعة لنظام دبيان
الأنظمة المقترحة: ~/.rules). في أنظمة دبيان، يجب أن يكون لدى المرء حد أدنى من القواعد
ملف لمنع تاجر البريد من محاولة وضع الرسائل في
/ var / spool / mail /مستخدم $، نظرًا لأن وكيل البريد لا يمكنه قفل هذا الدليل لمنع البريد
من كونها مشوهة. وذلك لأن سياسة دبيان تتطلب جميع الكيانات
محاولة الأقفال على هذا الدليل SGID البريد، وجعل تاجر البريد SGID
أي شيء سيكون بمثابة ثغرة أمنية.
{حفظ الوارد };
هو ملف القواعد الدنيا المقترح.
com.runmax المهلة لأوامر RUN والأصدقاء. (اختياري، الافتراضي هو: 3600).
com.scriptcc علامة تشير إلى ما إذا كان يجب إرسال نسخة من نص جلسة SERVER أم لا
للمستخدم الذي يقوم بتشغيل mailagent. (مقترح: إيقاف).
تأمين عند التعيين على ON، سيقوم mailagent وعامل التصفية C بإجراء أمان شامل
يتحقق من الملفات الحساسة. يتضمن ذلك عمليات التحقق من قابلية الكتابة الجماعية،
الملكية واختبار الحماية على الدليل الذي يوجد به الملف، و
التحقق من الروابط الرمزية إلى الدلائل (mailagent فقط، عندما يكون linkdirs قيد التشغيل
أيضاً). لاحظ أنه من المفترض أن يكون الوضع الآمن قيد التشغيل، مهما كان الإعداد الحقيقي له، ومتى
يعمل كمستخدم متميز. (مقترح: تشغيل).
ارسل بريد اسم البرنامج المستخدم لإرسال البريد. يجب أن يقبل هذا البرنامج البريد
رسالة تحتوي على رؤوس في مدخلاتها القياسية وقائمة بالمستلمين في ملف
سطر الأوامر. إذا لم يتم تحديده، فسيتم استخدام مرسل البريد الذي تم اختياره في وقت التكوين
(إرسال البريد عادة). سيكون سطر الأوامر المستخدم لإرسال رسالة بالبريد هو ارسل بريد
mailopt عناوين). (اختياري، مقترح: / usr / lib / sendmail).
إرسال الأخبار اسم البرنامج المستخدم لنشر الأخبار. ويجب أن يقبل هذا البرنامج الأخبار
مقالة تحتوي على رؤوس في مدخلاتها القياسية. إذا لم يتم تحديده، سيتم استخدام الأخبار
برنامج النشر الذي تم اختياره في وقت التكوين (inews عادةً). سطر الأوامر
تستخدم لنشر مقال سيكون إرسال الأخبار -h com.newsopt. (اختياري، مقترح:
/usr/local/bin/inews).
يليها الملف المستخدم لحساب أرقام المهام (المقترح: .seq).
سيرفير اسم الدليل حيث يتم تخزين أوامر خادم Shell وPerl. هذا ال
مكان البحث الافتراضي معلمة اختيارية ما لم يتم استخدام SERVER. (مقترح:
$ التخزين المؤقت/كمدس).
servshell هذا هو اسم الصدفة المستخدمة لتشغيل أوامر SERVER shell (في الواقع
قم بمعالجة ملف الغلاف الذي سيقوم في النهاية بتنفيذ الأمر () . على بعض
أنظمة مثل HPUX 10.x، يجب ضبط هذا على /usr/old/bin/sh للحصول على الوضوح
قذيفة بورن القديمة، لأن / بن / ش عبارة عن غلاف POSIX ميت عقليًا يغلق الملف
الواصفات الأكبر من 2 عند exec()، في حين أن قذيفة Bourne لا تفعل ذلك.
(اختياري، مقترح: / بن / ش إلا إذا كنت تستخدم HPUX 10.x، كما هو موضح سابقًا).
لف دليل التخزين المؤقت، مطلوب (مقترح: ~/var/mailagent).
ملف الإحصائيات الملف الذي ينبغي جمع الإحصائيات فيه. في حالة عدم وجود مثل هذا الملف، لا توجد إحصائيات
سيتم تسجيله (مقترح: $spool/mailagent.st).
ليزيف سواء ذلك او تاجر البريد يجب أن يقوم بتزييف سطر "إلى:" في رأس الرسالة عندما يتم ذلك
غائب، والذي سيتم استخدامه لأغراض التصفية (لا يوجد تغيير فعلي لـ
يحدث الرأس). ويستخدم البديل إلى: الرؤوس إذا وجدت، وإلا فإنه يفترض
تم إرسال الرسالة إلى المستخدم وتأخذ القيمة من المستخدم ترتيب
عامل. (اختياري، الافتراضي هو تشغيل، مقترح: تشغيل؛ قم بإيقاف تشغيله فقط إذا كنت
تريد التعرف على المفقودين إلى: خطوط الكشف عن الرسائل الاقتحامية).
أخذ قد يحتوي هذا المتغير الاختياري على قائمة مفصولة بفواصل لتسجيلات الدخول البديلة
والتي تكون صالحة أيضًا للمستخدم (الأسماء المستعارة للبريد). يستخدم هذا في وضع الإجازة
للتحقق مما إذا كان البريد قد تم إرساله إلى المستخدم أو إلى القائمة البريدية. مطابقة
يرتكز على اسم تسجيل الدخول، لذا فإن قول "ro*" سيطابق كليهما جذر و ROM.
مسار لتعيين on (غير حساس لحالة الأحرف)، يؤدي هذا إلى تشغيل -t الخيار الذي يتتبع كافة
تطابقات القاعدة والإجراءات على الإخراج القياسي. هذا اختياري (مقترح:
إيقاف).
توقيت قيمة المنطقة الزمنية لمتغير البيئة TZ (اختياري).
تمبدير دليل الملفات المؤقتة. مطلوب (مقترح: / تمة).
Umask umask الافتراضي الذي تتم إعادة تعيينه بواسطة تاجر البريد قبل معالجة الرسالة. يفترض
أن يكون رقمًا عشريًا ما لم يبدأ بـ "0" (للنظام الثماني) أو "0x" (للنظام الست عشري).
التنسيق الثماني هو أسهل طريقة لتحديده. (خياري،
الافتراضي هو: 077).
المستخدم اسم تسجيل الدخول للمستخدم الذي يقوم بتشغيل mailagent. يؤدي هذا إلى تعيين قيمة الماكرو %u.
عطلة تم ضبط العلامة على ON أو OFF لتبديل وضع الإجازة وفقًا لذلك.
vacfile اسم الملف الذي سيتم إرساله مرة أخرى في وضع الإجازة (مقترح: ~/.vacation).
vacfixed عند التشغيل، يتم إجراء جميع التغييرات على ملف الإجازات (حتى محليًا) عن طريق
أمر VACATION محظور. وهذا مفيد إذا كان لديك عادةً الكثير
رسائل إجازة مخصصة لأشخاص مختلفين ولكنهم يريدون فرضها مؤقتًا
رسالة فريدة واحدة (اختياري، الإعداد الافتراضي هو: OFF).
فترة النقاهة الحد الأدنى من الوقت المنقضي بين رسالتين عطلة إلى عنوان معين
(المقترح: 1 د).
متوفرة تسجيل مستويات
يمكن استخدام مستويات السجل التالية أثناء تشغيل mailagent:
0 لا يوجد تسجيل
1 المشاكل الرئيسية فقط
2 فشل التسليم
3 عمليات التسليم الناجحة
4 رسائل مؤجلة
5 إجراءات تصفية ناجحة
6 حوادث غير عادية ولكنها حميدة
7 رسائل إعلامية
8 إجراءات تصفية عدم التسليم
9 استقبال البريد
12 التصحيح
19 مطول
20 المزيد من اللفظ
يسد وكيل البريد
بمجرد قيامك بتكوين وكيل البريد في ملف ~ / .mailagent (أين ~ يقف لمنزلك
الدليل)، يجب أن تقول ارسل بريد كيفية استدعاء ذلك. يتم ذلك عن طريق تعيين أ ~ /. إلى الأمام
الملف الذي يبدو بهذا الشكل (تعد علامات الاقتباس المزدوجة البادئة والزائدة جزءًا إلزاميًا من
هو - هي):
"| exec /users/ram/mail/filter >>/users/ram/.bak 2>&1"
سيؤدي هذا إلى توجيه جميع رسائل البريد الإلكتروني الخاصة بك إلى تصفية البرنامج، وإعادة توجيه كافة الرسائل غير العادية إلى
~/.باك. يمكن العثور على عينة من البرنامج النصي لمرشح Shell في ليب/وكيل البريدبالإضافة إلى مرشح C
برنامج. في بعض الأنظمة، قد يكون من الضروري نقل '|' الشخصية قبل الرائدة
اقتباس، ولكن لا تحاول ذلك إلا إذا لم يكن لديك خيار آخر (على سبيل المثال، فقط كحل أخير).
أيضا، على ما يبدو الاستيراد والتصدير يأخذ الاستثناء إلى exec، وحتى ربما إلى إعادة التوجيه -
والذي سيكون من المؤسف.
أنه جدا من المهم إعادة توجيه رسائل الخطأ إلى بعض الملفات داخل الدليل الرئيسي الخاص بك.
لسبب واحد، هذا سوف يخرجك من المشاكل إذا بدأت أشياء غريبة بالحدوث، ولكن
أكثر إلى هذه النقطة، فإنه يجعل الخاص بك .إلى الأمام ملف فريد من نوعه. اكبر سنا ارسل بريد برنامج، في
ستؤدي المحاولة البطولية "لتحسين" التسليم إلى إزالة المستلمين المكررين بصمت، وإذا أ
المتلقي لديه .إلى الأمام، ويتم استخدام محتواه الحرفي بدلاً من عنوان بريده الإلكتروني.
لذلك، سيتم اعتبار مستلمين محليين لهما نفس سلسلة التصفية كمستلم واحد
مستلم فريد وسيتلقى الرسالة واحد منهم فقط...
إذا كان نظامك لا يسمح بإعادة توجيه الصدفة من داخل .forward، فيمكنك استخدام هذا
بدلاً من ذلك (يدعمه مرشح C فقط):
"| exec /users/ram/mail/filter -o /users/ram/.bak"
والتي في الواقع تعيد التوجيه المعياري و ستدير إلى الملف المحدد لك، إلحاق البيانات
في نهاية الملف. إذا قام الفلتر بتشغيل setuid أو setgid، فلن يُسمح لك بذلك
إنشاء الملف، ولا الإلحاق به إلا إذا كان مالك الملف هو حقيقي استدعاء معرف المستخدم
البرنامج (لأسباب أمنية).
نلاحظ أن .إلى الأمام يقوم الملف فقط بتوجيه البريد إلى تصفية البرنامج ولا يترك
أي نسخة في صندوق البريد. الأمر متروك لك لتقرر في ملف القاعدة ما إذا كنت تريد ذلك أم لا
قم برمي البريد بعيدًا أو اتركه في صندوق البريد. (لاحظ ذلك في أنظمة دبيان تاجر البريد يمكن
عدم قفل دليل التخزين المؤقت، والسماح له بترك البريد في صندوق البريد قد يؤدي إلى الحصول عليه
مشوه). إذا لم يكن لديك ملف قاعدة (أي أنك تركت إدخالاً فارغًا في ملف
~ / .mailagent، أو قمت بتسمية ملف غير موجود، أو أن ملفك فارغ ببساطة)، فإن
الإجراء الافتراضي هو ترك البريد في صندوق البريد، وهي ليست فكرة جيدة لديبيان
آلات. يرجى تثبيت ملف قواعد الحد الأدنى في أي حال،
{حفظ الوارد };
هو ملف القواعد الدنيا المقترح.
مسموح به أوامر
ملف الأوامر المسموح به (كما هو محدد بواسطة ملف com.comfile متغير في الخاص بك ~ / .mailagent)
يحتوي على كافة الأوامر المعترف بها والمسموح بها. الملف الأوامر عقدت في الدليل
ليب/وكيل البريد يجب نسخه كما هو في دليل Spool الخاص بك.
الاختبار معلمتك اليوغا التثبيت
الآن، على افتراض أنك قمت بتعيين السليم ~ / .mailagent الملف وتحرير قسم التكوين
ل تصفيةلقد حان الوقت لاختبار التثبيت الخاص بك. تأكد الخاص بك .إلى الأمام هو العالم
قابلة للقراءة وأن تصفية تم تعيين بتات التنفيذ (لا يوجد سبب لإجراء
تصفية العالم مقروء). قم بتعيين مستوى سجل قدره 20 وقم بتعطيل وضع الإجازة ( عطلة
دخول في ~ / .mailagent يجب أن يكون معطلاً). قم بتعيين اسم ملف القاعدة إلى ملف
تحتوي على قاعدة شاملة:
{حفظ الوارد };
أنت على استعداد للمضي قدما...
أرسل لنفسك بريدًا وامنح وكيل البريد وقتًا لمعالجة بريدك. موضوع ال
يجب أن تكون الرسالة "اختبار" (في الواقع، أي شيء ما عدا "الأمر"). قد ترغب في تشغيل "ذيل
-f ملف تسجيل" لمعرفة ما يحدث. في نهاية المعالجة، يجب أن يكون ملف السجل
تحتوي على شيء مثل ما يلي (أسماء المؤقتين قد -وسوف- بالطبع
اختلف؛ تمت إزالة الطوابع الزمنية):
حصلت على الحق في معالجة البريد
بناء القواعد الافتراضية
تحليل البريد
تحليل البريد
في الوضع "الأولي" للجميع
المحدد 'الكل' في '<1,->'، النمط '/^الموضوع: [Cc]ommand/'
مطابقة '/^Subject: [Cc]ommand/' في 'All' (<1,->) كانت خاطئة
المحدد "الكل" على "<1,->"
مطابقة. على "الكل" (<1,->) كان صحيحًا
الحفظ في المجلد الوارد
XEQ (مغادرة)
بدء الإجازة
بدء حفظ /الصفحة الرئيسية/ذاكرة الوصول العشوائي/البريد/الواردة
تم الحفظ [qm7831] في المجلد الوارد
تمت تصفيته [qm7831] من الكبش (رافائيل مانفريدي)
يستمر وكيل البريد
يخرج وكيل البريد
إذا لم تحصل على ذلك، هناك مشكلة في مكان ما. ابدأ بالنظر إلى ~/.باك ملف
(أو أي ملف .إلى الأمام يستخدم لإعادة توجيه إخراج عامل التصفية). إذا رأيت
شيء مثل:
فادح لا يوجد دليل قائمة انتظار صالح
مغمورة في ~/mbox.filter
ثم يعني طابور المعلمة في ملف ~ / .mailagent لا يشير إلى صالح
الدليل. لقد تم إلقاء بريدك في صندوق بريد الطوارئ.
ال ~/.باك قد يحتوي الملف أيضًا على رسائل خطأ تفيد بذلك بيرل لم يتم العثور على. في هذا
في هذه الحالة، يجب أن تكون هناك رسالة خطأ في ملف السجل:
خطأ في فشل وكيل البريد، بقي [qm7886] في قائمة الانتظار
في هذه الحالة، تأكد من وضع البريد في قائمة الانتظار بشكل صحيح في ملف qm7886. قائمة الانتظار
ستتم معالجتها مرة أخرى عند وصول بريد آخر أو عند تاجر البريد يتم استدعاؤه مع -q
(ومع ذلك، لتجنب ظروف السباق، سيتم فقط إرسال الرسائل التي بقيت لفترة من الوقت
معالجتها).
يحدث انتظار البريد أيضًا عندما يكون هناك بريد آخر تاجر البريد يجري. إذا كان ملف السجل يقول:
رفض الحق في معالجة البريد
ثم قم بإزالة بيرل.لوك الملف في دليل التخزين المؤقت. ملفات القفل القديمة تلقائيا
تم التخلص منها من قبل تاجر البريد على أية حال (بعد ساعة واحدة).
إذا لم يحدث أي من هذه الأمور، فربما ارسل بريد لم معالجة الخاص بك ~ /. إلى الأمام على الإطلاق أو
يحتوي الملف على خطأ في بناء الجملة. تحقق من صندوق البريد الخاص بك، وإذا كان بريدك موجودًا هناك، .إلى الأمام
لم تتم معالجتها. بخلاف ذلك، اطلب من مسؤول النظام التحقق ارسل بريد's
ملف تسجيل. سيظهر الإدخال الصحيح كـ (مع الطوابع الزمنية البادئة وطوابع سجل النظام
إزالة):
معرف الرسالة=[البريد الإلكتروني محمي]>
من = ذاكرة الوصول العشوائي، الحجم = 395، الفئة = 0، وردت من المحلية
إلى = "| /york/ram/mail/filter >>/york/ram/.bak 2>&1"، تأخير=00:00:05، stat=Sent
إذا كنت لا تزال غير قادر على معرفة سبب عدم معالجة البريد بشكل صحيح، فيجب عليك التأكد
تتلقى عادةً البريد عن طريق إزالة (أو إعادة تسمية) بريدك الإلكتروني ~ /. إلى الأمام وإرسال نفسك
بريد تجريبي آخر. تأكد أيضًا من أن الدليل الرئيسي الخاص بك قابل للقراءة عالميًا و"قابل للتنفيذ".
إذا كنت تستخدم مرشح C، فتأكد من أنه يعمل على النظام الأساسي الصحيح. هناك قد
يكون توجيهًا منخفض المستوى لجميع رسائل البريد الخاصة بك إلى أ مضيف البريد الجهاز المسؤول عن المباراة النهائية
التسليم، وسيتم تشغيل برنامج التصفية على هذا الجهاز، والذي قد يكون مختلفًا
منصة من تلك التي قمت بتجميع عامل التصفية عليها. تأكد أيضًا من أن الدليل الرئيسي الخاص بك موجود
المثبتة على هذا الجهاز، وإلا فلن يتمكن وكيل نقل البريد من تحديد موقع بريدك
.إلى الأمام الملف، أقل معالجته.
يعد هذا النوع من تسليم البريد المركزي جيدًا فقط عندما يكون لدى عدد قليل من الأشخاص معالجة للبريد
السنانير (أي .إلى الأمام الملفات التي تنقل البريد إلى أحد البرامج)؛ وإلا فمن الأفضل توجيه البريد
إلى محطة العمل أو الجهاز الخاص بكل مستخدم، للمعالجة المحلية، لتجنب الإفراط
عبء العمل على مضيف البريد الجهاز، خاصة إذا كان خادم NFS مخصصًا. إذا كنت
تثبيت مسؤول النظام تاجر البريد وتوقع أن يستخدمه العديد من الأشخاص، احتفظ بهذا بداخلك
عقل.
OPTIONS
هناك مجموعة محدودة من الخيارات التي يمكن استخدامها عند الاتصال بوكيل البريد مباشرة.
يمكن تحديد خيار خاص واحد فقط في كل مرة. استدعاء وكيل البريد باسم قائمة انتظار البريد is
يعادل استخدام -l الخيار.
-c ملف حدد ملف تكوين بديل (~ يحدث الاستبدال). ال
الافتراضي هو ~ / .mailagent.
-d يقوم وكيل البريد بتوزيع ملف القاعدة، وتجميع القواعد وتفريغها
الإخراج القياسي. يستخدم هذا الخيار بشكل أساسي للتحقق من بناء جملة الملف
ملف القاعدة وتأكد من أن القواعد هي ما يعتقده المستخدم حقًا.
-e حكم يتيح لك هذا الخيار تحديد بعض القواعد في سطر الأوامر، والتي ستفعل ذلك
تجاوز تلك المحددة عبر ~ / .mailagent، لو اي. قد يكون هناك الكثير
-e حسب الضرورة، يتم تجميع جميع القواعد معًا في قاعدة واحدة سعيدة
array، والذي يتم بعد ذلك تحليله بنفس الطريقة التي يتم بها تحليل ملف القاعدة. فقط لو صورة واحدة؟ حكم
معطى ولا يوجد أي إجراء محدد بين الأقواس {...}، ثم
الخط بأكمله محاط بين الأقواس. ومن هنا قوله -e 'يحفظ فو سوف يكون
يفهم على أنه -e '{يحفظ فو}'، والتي سوف تتطابق دائمًا ويتم تنفيذها.
باستخدام -d الخيار بالتزامن مع هذا هو وسيلة مريحة ل
تصحيح مجموعة من القواعد.
-f ملف البريد باستخدام ملف البريد كصندوق بريد على نمط UNIX (أي صندوق يوجد به كل بريد
يسبقه سطر خاص من يوضح المرسل وتاريخ الرسالة
تم إصداره)، واستخراج جميع رسائله إلى قائمة الانتظار ومعالجتها كما لو كانت
لقد تم وصولهم حديثًا من النظام الفرعي لتسليم البريد.
-F فرض المعالجة على الرسائل التي تمت مشاهدتها بالفعل. عادة، تاجر البريد يدخل
تختص _زيارة_ الدولة عندما يكتشف مرشح X: الخط الصادر من تلقاء نفسه،
ولكن هذا الخيار سيجعله يستمر كالمعتاد (على الرغم من أن رسائل الإجازة
يتم تعطيل). استخدم هذا الخيار عند تصفية بريد ما بعد المعالجة بالفعل.
أنظر أيضاً إلى -U قم بالتبديل إذا كنت تستخدم إجراءات RECORD أو UNIQUE في
بعض القواعد.
-h اطبع رسالة استخدام بشأن الخطأ القياسي واخرج.
-i الوضع التفاعلي، يوجه mailagent لطباعة نسخة من كافة رسائل السجل
on ستدير.
-I تثبيت ~ / .mailagent ملف من القالب، أو دمج التكوين الجديد
المتغيرات في ملف موجود؛ ثم قم بإجراء فحوصات التعقل وإنشاء
الملفات أو الدلائل الإلزامية. يمكن النظر إلى هذا الخيار على أنه مساعدة في
إنشاء تاجر البريدبيئة . على أية حال، تم إنشاء/دمج
~ / .mailagent يجب التحقق من الملف يدويًا قبل السماح به تاجر البريد صفقة
مع البريد الخاص بك عن طريق ربطه ~ /. إلى الأمام.
-l سرد قائمة انتظار mailagent. رسائل البريد الإلكتروني الموجودة في قائمة الانتظار مؤخرًا والتي يتم انتظارها بواسطة
تصفية . تخطي لمدة نصف ساعة تقريبًا، لتجنب ظروف السباق. هذا
يمكن تكوينها عبر قائمة الانتظار عامل. رسائل قديمة حقا (المزيد
من queuelost ثانية) يتم وضع علامة عليها بالحرف "#". رسائل خارج
من صف الانتظار (طابور متغير) يتم وضع علامة عليها بعلامة "*"، بينما الرسائل القديمة
تتم الإشارة إلى خارج قائمة الانتظار بواسطة "@". الرسائل المقفلة تحتوي على علامة "*"
ملحقة بوضعهم.
-L مستوى تجاوز مستوى السجل المحدد في ملف التكوين.
-o تجاوز يتيح لك هذا الخيار تجاوز خيار تكوين محدد. الخيار
يجب أن يتبعه سطر تكوين صالح، والذي سيتم تحليله بعد ذلك
ملف التكوين نفسه على سبيل المثال، -L 4 الخيار تماما
أي ما يعادل -o 'مستوى: 4'. لاحظ أنه يجب حماية أي مساحة بيضاء
ضد تفسير الصدفة باستخدام آلية الاقتباس المناسبة.
قد يكون هناك الكثير -o الخيارات في سطر الأوامر حسب الضرورة.
-q فرض معالجة قائمة انتظار وكيل البريد. فقط رسائل البريد التي لم يتم وضع علامة عليها تخطي
عن طريق -l سيتم معالجة الخيار
-r ملف حدد ملف قاعدة بديل.
-s {عمريت} أنشئ ملخصًا لجميع الإحصائيات التي تم جمعها حتى الآن. يمكن أن يكون الإخراج
يتم التحكم بها عن طريق إلحاق حرف أو أكثر من المجموعة {umaryt}. استخدام
-ملخص هي طريقة ملائمة للحصول على السجل الكامل للمرشح
أجراءات. ال u سيقوم المُعدِّل بطباعة القواعد المستخدمة فقط. ال m سوف دمج كافة
الإحصاءات في النهاية بينما a يُبلغ عن الوضع الذي كان فيه الفلتر عندما
تم تنفيذ الأمر. ال r يسأل عن الإحصائيات المستندة إلى القواعد و y is
عديمة الفائدة جدًا وهي هنا فقط للحصول على خيار تذكيري لطيف. لاحظ أن
تحديد خيار أكثر من مرة ليس له أي تأثير على الخيار
نفسها (أي يمكنك وضع ثلاثة Uu وواحد فقط m، لكنك ستظل تحصل على
ملخص!). ال t قد يتبع الحرف أرقام تحدد عدد القواعد
إصدارات الملفات المتعلقة بملف القاعدة الأعلى (الأحدث) الذي ينبغي علينا القيام به
استخرج من الإحصائيات أن المبلغ الافتراضي هو 1: الاستخدام -سورة سوف
طباعة تقرير إحصائي كامل للإصدار الأخير من قواعدك،
في حين -surt12a سيفعل الشيء نفسه بالنسبة للإصدارات الاثني عشر الأخيرة من تلك نفسها
القواعد.
-t ضع mailagent في وضع تتبع خاص حيث تتطابق جميع القواعد و
تتم طباعة الإجراءات المنفذة على الإخراج القياسي. وهذا مفيد في الغالب
لتصحيح ملف القاعدة. أنظر أيضاً مسار معلمة في
ملف الضبط.
-V اطبع رقم النسخة واخرج.
-U منع الأمرين UNIQUE وRECORD من رفض ما تمت معالجته بالفعل
معرف الرسالة في المرة الأولى التي يتم فيها تشغيلها على رسالة معينة. وهذا مفيد
عند معالجة الرسائل التي تم إسقاطها في com.emergdir دليل
بسبب بعض الحالات غير الطبيعية (ولكنها عابرة) وترغب في إعادة المعالجة
الرسالة. انظر أيضا -F قم بالتبديل إذا كنت تقوم بإعادة معالجة الرسائل.
إذا قمت باستدعاء mailagent بدون خيارات وبدون أي وسيطات، فسينتظر البرنامج
البريد على المدخلات القياسية الخاصة به. إذا تم توفير وسيطة، فهو اسم الملف الذي يحمل
بريد واحد لتتم معالجته. هذا هو إجراء الاتصال العادي من عامل التصفية
الوسيطة هي موقع البريد في قائمة الانتظار.
باستخدام ال DEFAULT قواعد
إذا كنت لا تريد استخدام ميزة التصفية الخاصة بـ mailagent، (ملحوظة: هذا قد يسبب البريد
ليتم تشويهها على أنظمة دبيان، منذ ذلك الحين تاجر البريد لا يمكن قفل دليل spol تحت
قيود سياسة دبيان) فسيتم استخدام القواعد الافتراضية المضمنة. هؤلاء يكونون
بسيط حقًا: يتم ترك جميع رسائل البريد الإلكتروني في صندوق البريد الخاص بك ورسائل البريد تحتوي على سطر "الموضوع:
"الأمر" في أي مكان في الرسالة ستتم معالجته. يتم البحث عن الأوامر على الأسطر
بدءًا بـ "@SH". ثم يتم تسليم ما تبقى من الخط إلى Shell للتنفيذ.
تتم قراءة الأوامر المتاحة من ملف (entry com.comfile في ملف التكوين الخاص بك)، واحد
اسم الأمر في كل سطر. سيتم إعدام الأشخاص المدرجين هناك فقط، وسيقوم الآخرون بإنتاج
رسالة خطأ. يقوم وكيل البريد برصد حالة الخروج وسيرسل تقرير خطأ في حالة حدوث خطأ
فشل الأمر (شريطة ألا يُصدر الأمر رسالة من تلقاء نفسه، وفي هذه الحالة
يجب أن يُرجع حالة خروج صفرية).
إذا كنت لا تريد استخدام القواعد الافتراضية، فيمكنك تخطي بقية هذا القسم.
تكوين المساعدة
يجب نسخ نص المساعدة الذي سيرسله وكيل البريد إلى الأشخاص ليب/mailagent/agenthelp
في دليل التخزين المؤقت الخاص بك، كما هو محدد في ملفك ~ / .mailagent. يمكن استخدام وحدتي ماكرو:
=DEST= سيتم توسيع هذا إلى عنوان المرسل (الشخص الذي أرسل لك البريد
تتم معالجتها حاليًا بواسطة وكيل البريد).
=الحجم الأقصى= هذا يمثل الحد الأقصى للحجم المحدد من قبل عدة يستخدم لإرسال الملفات مرة أخرى
(معامل اقصى حجم في الخاص ~ / .mailagent الملف).
يمكنك استخدام ملف المساعدة الافتراضي أو تصميم ملف يقدم المزيد من التفاصيل للملف
مستخدم فقير.
التوزيع ملفات
الملفين com.proglist و توزع الذي عقد في ليب/وكيل البريد وصف التوزيعات الخاصة بك
سوف يكون وكيل البريد قادرا على التوزيع. إظهار العينات المقدمة بناء الجملة المتوقع. في
ولتوضيح الأمور، إليك الشكل الذي يجب أن يكون عليه:
قم بتقديم com.proglist يحتوي على وصف صغير للبرامج. يظهر اسم البرنامج
بعد نجمة واحدة. ويليها خطوط في شكل حر. خط اختياري ثلاثي الشرطات
يفصل وصف كل برنامج. لاحظ أنه ستتم إضافة علامة تبويب بادئة إلى كل سطر
من الوصف.
ال توزع يحتوي الملف على أسطر من النموذج التالي:
اسم الإصدار مسار المؤرشفة مضغوط بقع
حيث:
اسم هو اسم البرنامج (نفس الاسم المذكور في com.proglist).
الإصدار هو رقم الإصدار الحالي. إذا لم يكن هناك شيء، يمكن استخدام خط ثلاثي متقطع.
مسار هو المسار حيث يتم تخزين التوزيع. سيتم توسيع ~ إلى ملفك
الدليل الرئيسي. لاحظ أنه إذا تم تخزين التوزيع في نموذج مؤرشف، فإن
اسم المسار هو اسم الأرشيف بدون ملحق النهاية (والذي قد يكون
.cpio.Z or .tar.Z).
المؤرشفة اما y or n اعتمادًا على ما إذا كان التوزيع مؤرشفًا أم لا.
مضغوط
اما y or n اعتمادا على ما إذا كان التوزيع مضغوطا أم لا.
يمكن تخمين ذلك من اسم الامتداد، لكن يجب أن نفكر في الملف
أنظمة بأسماء قصيرة.
بقع is y or n اعتمادًا على ما إذا كانت تتم صيانة التوزيع بواسطتك أم لا. لو
قمت بوضع p، وهذا يعني أن التصحيحات الرسمية متاحة، على الرغم من عدم توفرها لديك
الحفاظ على التوزيع. وأخيرا، أ o يعني هذا اصدار قديم
حيث تتوفر التصحيحات فقط، ولكن maildist لن يعمل. في هذه الحالة،
على افتراض أن رقم الإصدار هو 1.0، من المتوقع وجود بقع قديمة في ملف البق-1.0
الدليل.
يمكنك تضمين التعليقات في كلا الملفين: جميع الأسطر التي تبدأ بعلامة # ستكون كذلك
تجاهلها.
الاختبار معلمتك اليوغا بريد الوكيل
لقد حان الوقت للتأكد من أن وكيل البريد الخاص بك يعمل. أرسل لنفسك البريد التالي:
الموضوع: أمر
@SH mailhelp
يجب أن تتلقى بريدًا من نفسك مع تعيين الموضوع على: "كيفية استخدام ملفي
mailagent". إذا لم تقم بذلك، فتحقق من الملف ~/.باك (أو أي ملف قمت بتعيينه في ملف
.إلى الأمام). إذا كان فارغاً، انظر إلى ملف السجل. إذا لم يكن ملف السجل فارغًا، إذن
ربما تم وضع البريد في قائمة الانتظار. افحص ال ارسل بريد طابور. تأكد أيضًا من أنك
تمت إزالة التعليقات "#" في تصفية النصي. في بعض الأنظمة، فإنها تسبب بعض المشاكل.
إذا كنت تستخدم مرشح C، فربما يكون بريدك الإلكتروني معطلاً وتحتاج إلى إنشاء بريد إلكتروني خاص بك
نسخة setuid (أو قد يشكو Perl من وجود خطأ في kernel، وما إلى ذلك ...).
إذا قمت بكل شيء بشكل صحيح ولكن لا يزال لا يعمل بشكل صحيح، فقم بزيادة مستوى السجل
إلى 20 وأعد إرسال بريد الأوامر الخاص بك. ثم تحقق من ملف السجل. يجب أن يكون التشخيص
أسهل.
بمجرد أن يعمل هذا، يجب عليك التحقق من الخاص بك توزع و com.proglist الملفات عن طريق إرسال نفسك
البريد التالي:
الموضوع: أمر
@SH القائمة البريدية
إذا كانت القائمة التي لديك في المقابل غير صحيحة، فإن ملفات التوزيع الخاصة بك خاطئة
مكتوب. إذا لم تحصل على القائمة، فهذا يعني أن هناك مشكلة في وكيل البريد الخاص بك
إعدادات. أعد المحاولة مع ضبط مستوى السجل على 20 وانظر إلى رسائل السجل الصادرة
دليل السجل الخاص بك. تأكد من أن الملف المدرج في الرجاء الحفظ دخول الخاص بك
~ / .mailagent يتم تحديثه بشكل صحيح بعد أ قائمة البريد تم تشغيله.
باستخدام ال منقي
ال تاجر البريد يمكن استخدامه أيضًا كمرشح: حيث يتم تحليل البريد ويتم اتخاذ بعض الإجراءات
على أساس بسيط ليكس-مثل القواعد. تتراوح الإجراءات من الحفظ البسيط في مجلد، أ
إعادة التوجيه إلى شخص آخر، أو حتى إصدار أمر shell. قبل المضي قدمًا،
فيما يلي مثال صغير لملف قاعدة صالح:
من: الجذر { FORWARD postmaster };
إلى: [البريد الإلكتروني محمي] { نشر mail.gue };
الموضوع: /metaconfig/ {حفظ التوزيع };
{حفظ الوارد };
هناك ثلاث قواعد متميزة. يتم تطبيق القواعد بالتسلسل، حتى يتطابق أحدها (وبالتالي فإن
الترتيب مهم). أي بريد يأتي من جذر سيتم إرسالها إلى المستخدم مدير البريد. A
البريد الموجه إلى [البريد الإلكتروني محمي] هو بريد قادم من القائمة البريدية. تم نشر البريد
في مجموعة أخبار محلية mail.gue. سيتم إرسال رسائل البريد الإلكتروني التي يحتوي موضوعها على كلمة "metaconfig".
المحفوظة في مجلد حي لتأخير القراءة ولن تظهر في صندوق البريد الرئيسي. إذا لا
مطابقة القاعدة، يتم ترك البريد في المجلد الوارد.
قاعدة قم بتقديم بناء الجملة
فيما يلي وصف غير رسمي لملف القاعدة. يتم تحليل الملف بشكل معجمي،
ومن هنا جاء اختيار الرموز المميزة غير الغامضة مثل '{' أو ';' والتي يمكن تحليلها بسهولة. هذا
يقدم بعض القيود التي يتم تطبيقها بصمت: على سبيل المثال، لا يجوز استخدام '{'
كجزء من العنوان.
يتم تقديم التعليقات بواسطة علامة '#'، والتي يجب أن تكون على الهامش الأيسر. على عكس القشرة
التعليقات، فإن العلامة "#" التي لم يتم تركها مبررة لن يتم فهمها على أنها تعليق. لكن،
يُسمح بالمسافات أو علامات التبويب أمام "#".
يجب أن تنتهي كافة البيانات الموجودة في ملف القاعدة بـ "؛". هناك بشكل رئيسي أربعة أجزاء في
كل خط. قائمة الأوضاع المفصولة بفواصل، بين '<' و'>'، والتي تعطي مجموعة
الأوضاع التي تنطبق عليها القاعدة. الوضع الخاص ALL سيطابق كل شيء. مرشح
يبدأ في الوضع الأولي. حذف الإعدادات الافتراضية للوضع إلى " ". من الممكن الحراسة
قاعدة ضد وضع معين عن طريق إبطاله، وهو ما يتم عن طريق بادئة الوضع بـ
'!'. الأوضاع السلبية لها الأسبقية على الأوضاع العادية الأخرى، مما يعني " " لن تكون أبدا
متطابقة، من أي وقت مضى، وذلك " "يعادل" ".
ثم تأتي قائمة المحددات. يجب أن تكون هذه المحددات مفصولة بمسافات وتنتهي بـ ':'.
إنها تمثل أسماء حقول الرأس التي يجب النظر إليها في المستقبل
نمط. قائمة المحددات الفارغة تكون افتراضيًا على "الموضوع:". محددات خاصة "الكل:"، "النص:"
و"الرأس:" تنطبق على الرسالة بأكملها، نصها أو رأسها. محدد شائع الاستخدام
القائمة هي "إلى نسخة:" والتي تختبر حقول المستلمين للرأس. إذا كان اسم المحدد هو
مسبوقة بعلامة التعجب '!'، ثم القيمة المنطقية للاختبار لهذا المحدد
تم نفيه.
قد تنتهي قائمة المحددات بمواصفات النطاق الاختيارية، الموضحة كـ <دقيقة، الحد الأقصى>,
قبل الحرف ':' النهائي الذي يشير إلى نهاية قائمة المحددات. الحد الأدنى أو
يمكن إعطاء الحد الأقصى كـ "-"، وفي هذه الحالة يتم استبداله بالحد الأدنى أو الحد الأقصى
القيمة الممكنة. تبدأ مؤشرات الاختيار من 1 (وليس 0)، على سبيل المثال: <3 ، 7>. إذا كان الجواب لا
يتم إعطاء اختيار النطاق، ثم الافتراضي <1 ، -> يستخدم. نطاقات تحديد الخطوط عادة
داخل المخزن المؤقت المطابق، ما لم يكن المحدد يتوقع قائمة في هذه الحالة
يعمل على عناصر القائمة. على سبيل المثال، الجسد <3 ، 5>: سيختار الأسطر من رقم 3 إلى رقم 5
(مضمنة) من نص البريد، في حين إلى Cc <1,3>: سوف تركز على الثلاثة الأولى
العناوين في كل سطر إلى: أو نسخة:. تشير القيم السالبة إلى العديد من الأسطر أو
عناوين العودة من النهاية، أي Cc <-2,->: يحدد العنوانين الأخيرين في النسخة:
خط. رقم واحد مثل يُفهم على أنه <2 ، 2>، أي أنه حدد عنصرًا واحدًا فقط
في القائمة ، <-> يعني كل شيء (وبالتالي تكون زائدة عن الحاجة).
يُتبع المحدد بعد ذلك بنمط داخل "/" أو باسم واحد. بغرض
سهولة كتابة القواعد، فدلالات الاسم الواحد تختلف باختلاف
المحدد المستخدم. بالنسبة للمحددات الخاصة "من:"، "إلى:"، "نسخة:"، "المرسل:"، الخاصة بهم
حقول "المرسل إليه-" المرتبطة و"الرد على:" و"المغلف:" و"على ما يبدو إلى:"، اسم واحد
يُفهم على أنه مباراة على تسجيل الدخول الاسم من العنوان. لاحظ أنه إذا لم يكن هناك حقل "إلى:".
الموجود في الرأس، سيتم تزوير واحد من "على ما يبدو إلى:" لغرض
التصفية فقط (أي لا يتم إجراء أي تعديل مادي على الرأس). إذا كان اسم تسجيل الدخول
العنوان هو الاسم الكامل للنموذج First.Last، ويتم الاحتفاظ بالاسم الأخير فقط، وهو
بأحرف صغيرة. إذا تم إعطاء اسم واحد فقط، فسيتم استخدام الأحرف الأولية لـ Shell فقط * و ؟ نكون
مسموح به، وكذلك فترات [].
إذا كان النمط مسبوقًا بعلامة تعجب واحدة '!'، فإن حالة المطابقة هي
تم إبطاله (أي أنه سينجح إذا لم يتم العثور على النمط). إذا تم استخدام كلمة واحدة ل
المحددات غير الخاصة، تنطبق نفس القواعد ولكن النمط ثابت في البداية
والنهاية لمطابقة تامة. بنمط يبدأ بـ "/"، أي تعبير عادي
يفهم من قبل بيرل يمكن استخدامه ولن يتم تعديل النمط الخاص بك بأي شكل من الأشكال. الأخرى
يعمل المحدد الخاص "مجموعات الأخبار:" كـ "إلى:"، باستثناء أن أسماء مجموعات الأخبار متوقعة
وتتم محاولة إجراء مطابقة لكل عنصر في القائمة. كل نمط يتطابق مع اسم واحد
بالنسبة لحقل نوع العنوان (على سبيل المثال، تم استبعاد "مجموعات الأخبار:")، بحيث تكون غير حساسة لحالة الأحرف
وضع. بخلاف ذلك، يمكنك فرض مطابقة غير حساسة لحالة الأحرف عن طريق إلحاق زائدة i اختيار،
كما في / نمط / أنا.
هناك أيضًا القليل من السحر عند المطابقة في حقل العنوان. أي إذا كان
النمط ليس كلمة واحدة وهو الراسية at القادم بداية، ثم جزء العنوان فقط
سيتم الاحتفاظ بالميدان. على سبيل المثال، إذا كان لدينا حقل من: قيمته هي رافائيل
مانفريدي <[البريد الإلكتروني محمي]>، ثم النمط /رافائيل/ سوف تتطابق، ولكن لا /^رافائيل/.
بدلا من ذلك، /^رام@.*$/ قد يتطابق، ولكن يمكن القيام بذلك بسهولة أكبر باستخدام نمط كلمة واحدة
ذاكرة الوصول العشوائي، لأنه يركز فقط على اسم تسجيل الدخول الخاص بالعنوان وسيتطابق أيضًا إذا كان
تمت كتابة العنوان كما eiffel.com!رام. عنوان واحد في شكل إنترنت، كما في
[البريد الإلكتروني محمي] يتطابق ضمنيًا مع جزء العنوان من الحقل، ويجب ألا تفعل ذلك
الهروب من '.' كما يجب أن تفعل في التعبير العادي.
قد يبدو هذا معقدًا بعض الشيء، ولكن هذا التصميم يهدف إلى تسهيل الأمور على المستخدمين
مستخدم. في ما يلي بعض الأمثلة الأخرى:
# مباراة [البريد الإلكتروني محمي] وأيضا [البريد الإلكتروني محمي].
من: رام
# مباراة [البريد الإلكتروني محمي], ذاكرة الوصول العشوائي ولكن ليس [البريد الإلكتروني محمي]
من: ص[وا]*
# مباراة [البريد الإلكتروني محمي] ولكن ليس [البريد الإلكتروني محمي]
إلى نسخة: /^gue@eiffel\.fr/
# وهذا سوف يتطابق [البريد الإلكتروني محمي] وأيضا [البريد الإلكتروني محمي]
إلى نسخة: /gue@eiffel/
# مباراة comp.lang.Perl ولكن ليس comp.lang.perl.poetry (؟)
مجموعات الأخبار: comp.lang.perl
# قبول أي شيء ما عدا الرسائل الواردة من جذر
من: !root
عند محاولة إجراء مطابقة على "إلى:" أو "نسخة إلى:" أو "على ما يبدو إلى:"، يتم فصل قائمة العناوين
من المتوقع بفاصلة، بينما من المتوقع عنوان واحد فقط بعد "من:". إذا أهملت
النمط، سيتم فهمه على أنه * (تذكر أن كلمة واحدة تستخدم shell meta-
الشخصيات)، والتي سوف تتطابق مع أي شيء.
ثم يأتي الإجراء الذي يجب اتخاذه عند حدوث المباراة. لا يوجد سوى مجموعة محدودة من
الإجراءات الصحيحة التي سيتم وصفها قريبا بالتفصيل. الإجراء محاط بالمجعد
يتم فصل الأقواس "{" و"}" والإجراءات أو إنهاؤها (حسب ذوقك) بواسطة أ
'؛'. تتم كتابة أسماء الإجراءات بأحرف كبيرة لسهولة القراءة، ولكن حالة الأحرف غير ذات صلة. لو
تريد وضع "؛" ضمن القاعدة، يجب الهروب منها بأن يسبقها ب
شرطة مائلة عكسية. تتم ترجمة الشرطة المائلة العكسية المزدوجة إلى شرطة واحدة وأي هروب آخر
يتم تجاهل التسلسل الذي يتضمن حرف الخط المائل العكسي (أي سيتم الاحتفاظ \n حرفيًا).
لاحظ أن القاعدة يجب أن تنتهي بـ ';' واحد. بعد آخر "}". من الممكن
احذف هذا "؛" الأخير، ولكن هذا الرمز المميز هو نقطة إعادة المزامنة للخطأ
استعادة. ومع ذلك، يمكن للمرء أن يجادل بأنه لا ينبغي أن يكون هناك خطأ في بناء الجملة، وبالتالي فإن ';'
ينبغي حذفها بأمان. عندما تكون في شك، تحقق من ملف القاعدة الخاص بك باستخدام ملف -d الخيار.
فيما يلي قاعدة نموذجية (باستخدام بيرل التعبيرات العادية؛ يرجى الرجوع إلى
القسم الفرعي منتظم التعبيرات للمزيد من المعلومات):
من: /^\[البريد الإلكتروني محمي]$/ { احفظ إيفل };
لن يتم أخذ هذه القاعدة في الاعتبار إلا عندما يكون الفلتر في الوضع ROOT (تذكر ذلك
تبدأ المعالجة في الوضع الأولي؛ استخدم BEGIN لتغيير الوضع، كما في ليكس). حتى في
وضع ROOT، أي شيء يأتي من مستخدم موجود في eiffel.com يتم حفظ الموقع في
مجلد إيفل للقراءة المؤجلة. لن يظهر البريد في صندوق البريد.
من الممكن أن يكون لديك أكثر من اختيار واحد للقاعدة. محددات متطابقة هي
منطقيا or'ed بينما تكون مختلفة و'إد. يتم فصل التحديدات بفواصل. ل
نموذج،
من: الجذر، إلى: ذاكرة الوصول العشوائي، من: ذاكرة الوصول العشوائي، الموضوع: /\btest\b/ { DELETE };
سيتم حذف البريد من جذر or ذاكرة الوصول العشوائي إذا تم إرساله إلى ذاكرة الوصول العشوائي وله الكلمة تجربه بالعربي في تقريرها
موضوع. ومن الممكن أيضًا كتابة القاعدة السابقة على النحو التالي:
من: الجذر، ذاكرة الوصول العشوائي، إلى: ذاكرة الوصول العشوائي، الموضوع: /\btest\b/ { DELETE };
لأنه إذا لم يتم إعطاء أي محدد، فسيتم استخدام المحدد السابق (حيث يكون المحدد الأول
"الموضوع:" بشكل افتراضي).
في أي مكان في ملف القاعدة، من الممكن تعريف بعض المتغيرات. قائمة المعترف بها
يتم إعطاء المتغيرات في وقت لاحق. في الوقت الحالي، دعنا نقول ذلك هو البريد هو دليل المجلد الافتراضي.
يتم استخدام هذا المتغير بواسطة الأمر SAVE عندما لا تكون الوسيطة مسارًا مطلقًا.
الضبط
عنوان البريد = ~/mail;
سوف يوجه الفلتر للاستخدام ~/mail كدليل المجلد (الافتراضي هو ~ / بريد). لاحظ ال
~ الاستبدال والنهائي '؛'. ليس من الممكن (حاليًا) تعديل البيئة
عن طريق تحديد PATH على سبيل المثال.
وأخيرًا، هناك بنية خاصة لتحميل الأنماط من ملف. نمط المغلقة في
علامات الاقتباس المزدوجة تعني أن الأنماط التي سيتم تطبيقها يجب أن تؤخذ من المحدد
ملف. ومن المتوقع أن يكون الملف في الدليل مرشح البريد إذا لم يكن المسار المطلق
(~ يحدث الاستبدال). إذا لم يتم تعيين المتغير هو البريد سوف يستخدم. لو عن طريق الصدفة (!)
هو البريد لم يتم تعيينه أيضًا، فسيتم استخدام الدليل الرئيسي. يجب أن يحتوي الملف على نمط واحد
لكل سطر، يُسمح بتعليقات الصدفة (#) في بداية كل سطر.
قد يتبع الإجراء قواعد أخرى. ومن ثم فإن ما يلي صحيح تمامًا:
بدءًا من:
ذاكرة الوصول العشوائي {حفظ ذاكرة الوصول العشوائي}
/plc/i {حفظ plc}
الجذر {حفظ ~/admin }
/xyz/ {حذف}
"المستخدمون" {مغادرة}
;
لاحظ استخدام تضمين الملف: جميع المستخدمين المدرجين في الملف المستخدمين سوف يكون لهم
البريد المتبقي في صندوق بريد النظام. تنطبق القواعد المعتادة على هذه الأنماط المحملة.
منتقى مجموعة
قد تحتوي القاعدة الواحدة على مجموعة متنوعة من المحددات. على سبيل المثال في القاعدة التالية:
من: ذاكرة الوصول العشوائي، إلى نسخة: الجذر،! الموضوع: /اختبار/، من: رافائيل
لدينا المجموعة التالية { From, To Cc, !Subject }. يتم استدعاء المحددين الأولين
مباشرة المحددات،! الموضوع: يسمى أ نفي محدد. المحدد إلى نسخة: هو أ رأس التجميع
محدد يتحلل إلى قسمين مباشرة المحددات، بينما من: هو الذري محدد.
وأخيرا، من: هو أيضا محدد مع متعدد الأحداث. ال قيمنا من محدد هو
القيمة المنطقية لحالتها المطابقة.
اسمحوا D تكون مجموعة المحددات المباشرة و N مجموعة المحددات السلبية، والتي تشكل أ
تقسيم R، مجموعة كافة المحددات الموجودة في القاعدة. ذلك بالقول، R هو الاتحاد
of D و Nو D تتقاطع مع N هي المجموعة الفارغة (دليل تافه: المحدد إما
مباشر أو منفي). أي كان D or N فارغ، فهو ليس قسمًا ولكن في هذه الحالة
لدينا إما D = R او اخرى N = R.
دعونا نحدد القيمة المنطقية للمجموعة S باعتبارها القيمة المنطقية التي سيفعلها المرشح
العودة إذا كانت هذه القواعد مكتوبة بالفعل. ثم القيمة المنطقية ل D هو المنطقي
قيمة كل عنصر من عناصره مع توزيع العامل المنطقي AND فيما بينها، أي
القيمة المنطقية لـ { a, b, c } هي قيمة (a AND b AND c). لنكتبها و(D). ال
القيمة المنطقية لكل عنصر هي القيمة المنطقية للمحدد نفسه إذا كان كذلك
ليست متعددة، أو أنها القيمة المنطقية لجميع تكرارات المحدد المتعدد
ضمن القاعدة، مع توزيع العملية المنطقية OR فيما بينهم. وهذا يعني، في
في المثال أعلاه، تكون قيمة "من" صحيحة إذا كانت الحقول "من:" تحتوي على ذاكرة الوصول العشوائي OR رافائيل.
لنكتب ذلك OR[من].
لكي نكون سليمين، علينا أن نطبق قانون دي مورغان على Nومن هنا القواعد التالية: المنطقية
قيمة N هو أو(N) وأعطيت محددًا مرفوضًا s، قيمته المنطقية هي AND[s]. و
وأخيراً القيمة المنطقية لـ R هو ذلك من D لأي لبس N، مع وجود المنطق حسب الاتفاقية
قيمة المجموعة الفارغة تكون صحيح.
بالنسبة لأولئك الذين لا يعرفون قانون دي مورغان، فها هو: في ضوء افتراضين منطقيين p
و q، ثم تحدث الهويات التالية:
NOT (p و q) <=> (NOT p) أو (NOT q)
NOT (p أو q) <=> (NOT p) و (NOT q)
بينما نحن في منطق القضايا، لاحظ أيضًا أن OR و AND متبادلان
التوزيعية، أي في ضوء ثلاثة افتراضات منطقية p, q و r، نحن لدينا:
ص و (ف أو ص) <=> (ص و ف) أو (ص و ص)
ص أو (ف و ص) <=> (ص أو ف) و (ص أو ص)
لكي تكون مكتملة، فإن OR و AND مرتبطان مع نفسيهما ومتبادلان. و ال B طقم
{0, 1} مزود بمجموعة العمليات (NOT، OR، AND). علم الجبر (واحدة منطقية).
سأوفر عليك تعريف الجبر، الذي لا علاقة له حقًا بهذا
صفحة الدليل (وهي مخصصة لوكيل البريد، في حالة عدم تذكرك :-).
من المؤكد أن القارئ اليقظ قد لاحظ أنني لم أحدد القيمة المنطقية
من محدد المجموعة. حسنا، نظرا لمنتقي المجموعة G، نحن نحللها إلى أ DG و NG
تقسيم، DG كونها مجموعة فرعية من المحددات المباشرة (الذرية) لـ G و NG كونها المجموعة الفرعية
من المحددات (الذرية) السلبية. ثم القيمة المنطقية ل DG هو أو(DG) والمنطقية
قيمة NG هو و(NG); القيمة المنطقية العالمية G كونه من DG OR NG. في حالة
إما DG or NG فارغًا، إذن ليس لدينا قسم، ولكن وفقًا للاتفاقية فإن قيمة
المجموعة الفارغة هي زائف، وإحدى المجموعتين تساوي G. لاحظ أنه ضمن المجموعة
المحدد، فإن القواعد هي بالضبط ثنائية القواعد الموجودة بداخلها R.
الآن القاعدة الوحيدة التي ليست كذلك منطقي هو ما إذا كان محدد المجموعة ينتمي إلى D or N. لدي
تم اختياره، لأسباب تشبيهية، لكي ينتمي محدد المجموعة إليه D إذا لم يبدأ
بواسطة '!' و ل N خلاف ذلك. وهذا هو،! إلى نسخة: ينتمي إلى N بينما نسخة !إلى: ينتمي إلى D.
وبصرف النظر عن ذلك، فإن الترتيب داخل محدد المجموعة ليس له أي صلة: إلى نسخة: يعادل نسخة
إلى:، وبالتالي فإن السلوك في مجموعة حاصل القسمة سليم.
وهنا بعض الأمثلة:
# تطابق أي شيء: (ليس من ذاكرة الوصول العشوائي أو ليس من الجذر) صحيح دائمًا.
من: !ram، !root
# تطابق أي شيء باستثناء رفض رسائل البريد القادمة من ذاكرة الوصول العشوائي أو الجذر
!من: ذاكرة الوصول العشوائي، الجذر
# رفض الرسائل التي تحتوي رؤوسها المطابقة /^Re.*/ على اختبار الكلمات
!^إعادة.*: /\btest\b/
# احتفظ بالرسائل التي يحتوي موضوعها تجربه بالعربي لأي لبس مضيف
!الموضوع: !/اختبار/، !/المضيف/
# يطابق إذا ذاكرة الوصول العشوائي مدرج في إلى أو ال Cc خط
إلى نسخة: ذاكرة الوصول العشوائي
أدنى رأس
يتم ضمان تعيين الحد الأدنى من المحددات، بغض النظر عن الرأس الفعلي لـ
الرسالة. هذا لغرض التصفية فقط، ولا يوجد أي تغيير مادي
نفذت.
المغلف: هذا هو العنوان الموجود في مظروف البريد، أي العنوان الذي تم إرسال البريد إليه
يبدو أنه نشأ من. يمكن أن يكون هذا مختلفًا عن بدءًا من: حقل العنوان إذا
البريد ينشأ من أ افضل المستخدم، في مصطلحات sendmail. إذا لم تفعل ذلك
تعرف ما هو هذا، ببساطة تجاهله.
بدءًا من: المستخدم الذي كتب البريد. إذا كان هذا السطر مفقودًا، استخدم العنوان الموجود في
الأول من السطر.
الطول: الطول الفعلي للجسم، بالبايت، بمجرد ترميز نقل المحتوى (if
أي) تمت إزالته.
خطوط: كمية الخطوط الموجودة في الجسم (فك شفرتها إذا لزم الأمر).
إلى: المستلم (المستلمون) الرئيسي للرسالة. إذا كان هذا الخط مفقودا ولكن مجموعة من
على ما يبدو-إلى: تم العثور على الأسطر، ثم يتم استخدام تلك العناوين بدلاً من ذلك. إذا لم يكن هناك مثل هذا
السطر موجود، فافترض أن البريد تم توجيهه إلى المستخدم (والذي يبدو أنه
افتراض معقول :-).
المرسل: المستخدم الذي أرسل البريد. وقد يختلف هذا عن بدءًا من: خط. إذا لم يكن هناك مثل هذا المجال
إذا كان موجودًا، فسيتم استخدام العنوان الموجود في السطر الأول من (مظروف البريد).
مرحل: هذا الرأس المحسوب عبارة عن قائمة مفصولة بفواصل لجميع الأجهزة المضيفة حيث
تم نقل الرسالة بترتيب الإرسال الصحيح. كل عنصر في هذه القائمة
يمكن أن يكون اسم الجهاز مثل mail.hp.com أو عنوان IP مثل
[15.125.38.12]. القائمة مستمدة من تم الاستلام: الخطوط الموجودة في
رسالة.
الرد على: حيث ينبغي إرسال أي رد. إذا لا الرد على: الحقل موجود، ثم
مسار العودة يُستخدم (مع تجريد <>)، أو بدءًا من: يتم تحليل الخط إلى
استخراج عنوان البريد الإلكتروني للمؤلف.
المتغيرات
يدعم وكيل البريد المتغيرات المعرفة من قبل المستخدم، وهي المتغيرات العالمية. يتم تعيينهم عن طريق
أمر ASSIGN ويشار إليه بالماكرو % #. لنفترض أننا قمنا بتعيين متغير مضيف، ثم
%#مضيف سيتم استبداله بالقيمة الفعلية للمتغير. وهذا يتيح بعض المتغيرات
الانتشار عبر القواعد
على سبيل المثال، لنفترض أن المستخدم يتلقى مخرجات cron من أجهزة مختلفة ويرغب في ذلك
وحفظها على أساس كل جهاز، مع التمييز بين المخرجات اليومية والأسبوعية.
هنا حل:
الموضوع: /output for host (\w+)/ { ASSIGN host '%1'; يرفض }؛
الموضوع: /^الإخراج اليومي/ {حفظ %#host/daily.%D };
الموضوع: /^الإخراج الأسبوعي/ {حفظ %#host/weekly.%m-%d };
إلى جانب الاستيفاء المتغير عبر % # escape، من الممكن أيضًا تنفيذه
البدائل والترجمات على محتوى متغير (أو مرجع خلفي، على سبيل المثال أ
العدد بين 1 و 99). سيتم تنفيذ الأمرين SUBST وTR في مكانهما على التوالي
الاستبدالات والترجمات. ولكن في هذه الحالة، يجب أن يكون اسم المتغير
يسبقه # واحد. وهذا يميز المرجع الخلفي 1 من المتغير #1,
رغم أن 1 هو اسم مضحك للمتغير. كما أن الحاجة إلى # تمنع الخطأ الشائع
من كتابة % #، حيث سيشكو وكيل البريد بصوت عالٍ إذا كانت المعلمة الأولى لـ SUBST أو TR كذلك
ليس رقمًا بين 1 و99 أو لا يبدأ بـ #.
فيما يلي بعض الإجراءات لتحويل اسم المضيف إلى أحرف صغيرة وإزالة اسم المضيف
اسم النطاق إن وجد:
{ TR #host /AZ/az/; SUBST #host /^([^.]*)\..*/$1/ };
تتم ترجمة هذه الإجراءات مباشرة إلى بيرل يعادلها، وأي خطأ في
سيتم الإبلاغ عن مواصفات التعبير العادي.
إذا كان اسم المتغير يبدأ بنقطتين ':'، يصبح المتغير ثابتًا. الذي - التي
يعني أنه سيحتفظ بقيمته عبر استدعاءات وكيل البريد المختلفة. المتغير هو
يتم تخزينها ببساطة (مع إزالة البادئة ':') في قاعدة بيانات mailagent وبالتالي فهي تخضع
لسياسة الشيخوخة المنصوص عليها في ~/.mailagent.
من خلال أوامر PERL أو روابط البريد باستخدام Perl (راجع قسم MAIL HOOKS)، يمكنك ذلك
التعامل مع تلك المتغيرات الخارجية (ما يسمى) عبر مجموعة من وظائف الواجهة الموجودة
في ال خارجي package (أي يجب عليك بادئة كل اسم وظيفة بـ package
اسم، طقم أن تصبح مجموعة خارجية). يتم توفير وظائف الواجهة الثلاث التالية:
val(name) يُرجع قيمة المتغير الاسم (البادئة ':' ليست جزءًا من الاسم،
في أي من وظائف الواجهة الثلاث هذه).
مجموعة (الاسم، القيمة)
تعيين المتغير الخارجي الاسم عقد قيمنا. لا يتم أي تفسير من قبل
وظيفة على المحتوى الفعلي لل قيمنا الذي تقدمه.
age(name) يُرجع عمر المتغير، أي الوقت المنقضي بالثواني منذ آخر مرة
التعديل الذي أجراه طقم.
لا توجد حاليًا طريقة لمسح متغير من قاعدة البيانات. ولكن إذا كنت لا تستخدم
المتغير بعد الآن، سيتم إزالته عندما يصبح عمره أكبر من الحد الأقصى
العمر المحدد من قبل com.agemax متغير التكوين.
منتظم التعبيرات
تتبع جميع التعبيرات النمطية بناء الجملة V8، كما في بيرل، مع كل بيرل
ملحقات. إذا تم استخدام بنية الأقواس (...) داخل القاعدة، فإن %أرقام الماكرو
يطابق أرقامالسلسلة الفرعية الموجودة داخل القوس. كل تلك المراجع الخلفية هي
يتم حفظها على أساس كل قاعدة، مرقمة من اليسار إلى اليمين. ومع ذلك، يجب أن تكون هناك رعاية كبيرة
يتم التقاطها عند استخدام مرجع خلفي في المحددات الحالية المتعددة، كما ستفعل جميع المطابقات
يتم إجراؤها حتى المباراة الأولى، ويتم حساب المراجع الخلفية أثناء الطيران
القيام بمطابقة الأنماط.
على سبيل المثال:
إلى: /(.*)/، الموضوع: /الإخراج من (\w+)/ { تعيين إلى '%1'؛ حفظ %2 };
سيحفظ الحقل إلى: في المتغير "إلى" ويحفظ البريد في مجلد مشتق من
اسم المضيف المحدد في الموضوع. لكن إذا قلنا:
الموضوع: /host (\w+)/, /from (\w+)/ { ASSIGN match '%1' };
عندها ستكون هناك مجموعة مرجعية خلفية واحدة فقط، وستأتي من النمط الأول
المطابقة إذا نجحت، أو من الثانية. ينبغي أن يكون النمط الثاني أو الأول
لا يوجد بناء بين قوسين ولا يزال متطابقًا، فلن يتم تسجيل المرجع الخلفي في
الكل، مما يعني أن ما يلي ربما ليس هو ما تريده:
الموضوع: /من/، /المضيف (\w+)/، إلى: /(.*)/ { SAVE %1; يرفض }؛
كما لو كان النمط /from/ متطابقًا، فلن يتم تحديد /host (\w+)/ (متطابق
المحددات هي or'ed وهذا هو الأمثل)، فسيشير %1 إلى الحقل إلى: بينما
إذا تطابق /host (\w+)/، فسيكون %1 هو اسم المضيف.
ومع ذلك، يمكن استخدام هذا السلوك لتخزين مقالة إخبارية بشكل انتقائي
يتم إرسالها إليك بالبريد في مجلد اسمه هو اسم مجموعة الأخبار على شكل نقطة. لنفترض أننا نريد
ولإعطاء الأولوية لـ comp.lang.perl، يمكننا أن نقول:
مجموعات الأخبار:
/(comp.lang.perl)/,
/(comp.mail.mh)/,
/(comp.compilers)/,
/([^,]*)/ { احفظ %1 };
سيتم حفظ المقالة المنشورة بشكل مشترك على كل من comp.lang.perl وcomp.mail.mh في ملف
مجلد comp.lang.perl، لأن هذا هو ما سيطابق أولاً. القواعد الأخيرة تعتني
مقالات أخرى: المجلد المستخدم هو أي مجموعة أخبار تظهر أولاً.
يوجد أيضًا ماكرو خاص %&، والذي يسرد (وهي قائمة مفصولة بفواصل) جميع ملفات
المحددات المحددة عبر تعبير عادي متطابق بالفعل. على سبيل المثال:
إعادة.*: /york/ { ASSIGN that '%&' };
سوف يعين ل التي قائمة بجميع الحقول المطابقة للنمط /Re.*/ الذي
يحتوي على "york"، سواء كان حقلًا مستلمًا: أو حقلًا مستاءً من: (حيث يتطابق كلاهما مع
مواصفات المحدد). بافتراض أن كلا الحقلين يحتويان على الكلمة نيويورك، قيمة ال
%& سيكون "مستلمًا، مستاءً من؛" (يتم فرز الحقول أبجديا).
إذا كان لديك أكثر من محدد محدد ضمن قاعدة واحدة، فقد يكون الأمر كذلك
من الجدير معرفة أن كل مجموعة المحددات المتطابقة يتم تسجيلها ضمن %&، كل مجموعة
تم إنهاؤه بـ "؛". إذا تم استخدام محدد مُلغى، فسيقوم %& بتسجيل جميع الحقول
التي لا تحتوي على النمط، بافتراض نجاح التحديد (وإلا فلا شيء
مسجل).
متوفرة الإجراءات
تتوفر الإجراءات التالية كأوامر تصفية. القضية ليست ذات صلة على الرغم من
النمط الموصى به هو تهجئتها بأحرف كبيرة. كما هو موضح لاحقا، فإن معظم الإجراءات
قم بتسجيل حالة خروجهم في متغير خاص يمكن اختباره عبر ملف -t و -f
خيارات الإجهاض والرفض وإعادة التشغيل. لكل أمر يعيد حالة الخروج هذه، فإن
وترد شروط الفشل أو النجاح في نهاية كل وصف. إذا لم يكن هناك شيء
المحدد، فإن الأمر لا يُرجع حالة ذات معنى.
إحباط [-تف] [طريقة]
قم بإحباط تطبيق قواعد التصفية على الفور. انظر رفض لمعرفة معنى
المعلمات الاختيارية. (لا يعدل الوضع الحالي)
بعد [-سانك] (زمن) عمل
يسجل رد اتصال بعد المحدد الوقت ، حيث عمل سوف تنجز.
بشكل افتراضي، يُفترض إجراء تصفية وكيل البريد (-a الخيار)، في الوقت الحاضر
رسالة بريدية. أمر شل (-c) قد يتم إعطاؤه بدلاً من ذلك، حيث يستقبل التيار
رسالة البريد كمدخل قياسي. وأخيرًا، قد يتم تشغيل أمر shell عادي (مع
لا يوجد إدخال) باستخدام -s خيار. الخيار -n يمكن استخدامها عند البريد الحالي
لا يلزم الاحتفاظ بالرسالة للإدخال. على سبيل المثال:
AFTER -an (يوم واحد) افعل ~/process:proc'run(%u)
سوف يتصل proc'run المحدد في ~/process الملف خلال يوم واحد من الآن، بدون
إعطاء أي مدخلات (الإجراء هنا لا يتطلب أي مدخلات).
عند تشغيل أوامر mailagent، يتم ضبط وضع العمل الأولي على _CALLOUT_.
قد يكون هذا مهمًا إذا اتصلت بـ APPLY على سبيل المثال. إذا كان الوقت المسجل أقل أو
يساوي الوقت الحالي (وهو زيوت ناو)، سيحدث رد الاتصال عندما
يتم تنفيذ mailagent مع الرسائل الموجودة في قائمة الانتظار الخاصة به، قبل الخروج. هذا يسمح
للخدعة اللطيفة التالية، التي اكتشفها راندال شوارتز:
بعد (الآن) # شوكة نسخة يمكنني تشويهها
قطاع الرد على \؛ إعادة المزامنة \;
التعليق -du الرد على %2 \; إعادة المزامنة \;
رسالة الإعلام %r \; يمسح \؛
;
لاحظ أنه لم يتم استدعاء الأمر AT لأنه سيتم تنفيذ المكالمة فقط
عند استدعاء وكيل البريد التالي بعد انقضاء الوقت المحدد. التواريخ هي
المحدد باستخدام نفس التنسيق كما في SELECT. (يفشل إذا كان الإجراء لا يمكن أن يكون
المسجلة في قائمة انتظار وسائل الشرح).
تعليق توضيحي [-دو] حقل قيمنا
قم بتعليق الرسالة عن طريق الإضافة حقل في رأس البريد، مع المرفقة قيمنا.
هذا مثل أمر MH أنو، ولكن يتم تنفيذ التعليق التوضيحي في نهاية
الرأس، بينما يقوم MH بذلك في الأعلى. عادة، اضافية حقل يضاف ،
مع التاريخ الحالي كقيمة الحقل.
يمكن قمع هذا باستخدام -d اختيار. إذا قيمنا تم حذفه، فقط
تم إنشاء حقل التاريخ (وبالتالي فمن الخطأ استخدام ملف -d خيار بدون
توريد أ قيمنا). كما هو الحال مع كافة الأوامر التي تغير الرأس، فإن RESYNC هو كذلك
ضروري لجزء المرشح لرؤية الرأس الجديد فعليًا.
ال -u الخيار يعني "فريد"، ويمنع ANNOTATE من التنفيذ إذا كان
محدد حقل موجود بالفعل في الرأس. لا تنس إعادة المزامنة بين
أوامر ANNOTATE المتعاقبة باستخدام هذا الخيار إذا كان حقل يشير إلى سابقة
تعليق الهدف. (يفشل عندما لا يتم إجراء أي تعليق توضيحي)
تطبيق ملف مسطرة
احصل على القواعد الموجودة ملف مسطرة وتطبيقها على الرسالة الحالية. ال
سيبدأ عامل التصفية في أي وضع كنت فيه عند استخدام هذا الأمر، ولكن بدون تغذية
ستحدث العودة، أي سيتم فقدان أي تغيير في الوضع عند العودة من
أمر.
يتم نشر المتغيرات (انظر الماكرو % #) ذهابًا وإيابًا من خلال التطبيق،
مما يعني أنك ترى المتغيرات التي حددها المتصل، ويمكنك تغيير قيمها أو
إنشاء متغيرات جديدة ليستخدمها المتصل لاحقًا.
إذا تم حفظ البريد أثناء تطبيق القواعد، ثم المقابلة
يتم تعيين العلامة في عامل التصفية الرئيسي (الذي بدأ تشغيل أمر التطبيق). يمكنك
عش لهم، بطبيعة الحال. (يفشل إذا لم يتم حفظ البريد وفقًا للقواعد الموجودة في
ملف مسطرة)
ASSIGN فار قيمنا
قم بتعيين القيمة للمتغير المحدد من قبل المستخدم فار، والتي يمكن الوصول إليها أيضًا
as '%#فار' لاستبدال الماكرو أو # فار في الأوامر TR وSUBST في المكان
من اسم المتغير. لاحظ أنه لا يوجد الرائدة # أمام المتغير
اسم. ال قيمنا يتم تشغيله لأول مرة من خلال التي تقدمها بيرل لمعرفة ما إذا كان يحتوي على بعض
عمليات حسابية. إذا كان التقييم ناجحا، فإن القيمة الناتجة هي
تستخدم بدلا من ذلك. إذا حدث خطأ في عملية التقييم هذه، فإن الخطأ الحرفي
يتم استخدام القيمة المقدمة. لتجنب التقييم، يمكنك إرفاق الكل
القيمة في علامات الاقتباس البسيطة. وسيتم قطع تلك قبل أن تتم المهمة.
إذا كنت تريد بالفعل علامات اقتباس بسيطة في الموضع الأول والأخير، فيجب عليك ذلك
ضعف كل واحد منهم. (لا يعدل الوضع الحالي)
عودة أمر
تنفيذ أمر واتخاذ مخرجاتها كإجراءات جديدة يتعين تنفيذها على البريد
(وبالتالي أداء شيء مماثل ل "أمر" في القشرة). إذا لم يكن هناك
الإخراج، لم يتم فعل أي شيء. يمكن أن تكون أوامر BACK متداخلة، على الرغم من أن هذا قد يؤدي إلى
مفاجآت لن تكشف عنها هذه الصفحة (لكنني أؤكد لك أنها ستكون مضحكة،
على افتراض أن لدينا نفس روح الدعابة... :-). لاحظ أن كلا المعيار
يتم استخدام الإخراج والخطأ القياسي من الأمر.
إذا فشل الأمر، يتم إرسال الإخراج مرة أخرى إلى المستخدم ولا يتم اتخاذ أي إجراء
إجراء. علاوة على ذلك، لا تحدث ردود فعل طبيعية هنا: أي إخراج من ملف
يتم أخذ الأمر كإجراءات تصفية، وهو ما يعني دلالات PASS، ل
على سبيل المثال، تغير: نحن لا نستعيد جسدًا بل نأمر. (الاعدام
الوضع هو أن أمر)
زمارة [-l] عد
يمكن استخدام هذا الأمر لضبط مقدار أصوات التنبيه المنبعثة عند التشويش على
محطة لكل منهما %a توسع. افتراضيًا، يتم تعيين هذا المبلغ على 1. باستخدام
-l يغير الخيار عدد أصوات التنبيه محليًا للقاعدة. وإلا الافتراضي
يتم تغيير المبلغ.
لاحظ أن هذا يؤدي ببساطة إلى توسيع %a إلى المقدار المناسب من أحرف Ctrl-G.
يجب أن يُسمح لمحطتك بإصدار أجراس متتالية حتى يعمل هذا. جداً
في كثير من الأحيان، يتم تكوين المحطات بحيث يتم تعطيل الجرس الأول بشكل أكبر
يصدر صوتًا لبعض الوقت لتجنب سلسلة من الأجراس. إذا كنت تستخدم إكس تيرم لـ
على سبيل المثال، يجب عليك استخدام:
xterm -xrm "XTerm*BellSuppressTime: 0"
لتمكين أجراس متتالية. خلاف ذلك، إكس تيرم سوف يبتلعهم خلال 200 مللي ثانية،
ومن ثم جعل الأمر BEEP غير فعال، على ما يبدو. (لا تعديل
الوضع الحالي)
يبدأ [-قدم] حالة
أدخل حالة جديدة. يعد الرفض الصريح أو إعادة التشغيل ضروريًا لإحباط عملية
معالجة القاعدة الحالية. تبدأ المعالجة في الحالة الأولية. لو
القادم -f (ريب. -t) تم تحديد العلامة، فإن تغيير الحالة يحدث فقط إذا كان
أشارت حالة الأمر الأخيرة إلى الفشل (النجاح). يمكن اسم الدولة
تحتوي على أحرف أبجدية رقمية وشرطات سفلية. (لا تعديل الموجودة
الحالة)
بيف [-l] تشغيل|إيقاف|المسار
السماح أو عدم السماح بالتقسيم ديناميكيًا. عند تشغيل التقسيم عبر
ملف التكوين أو عبر هذا الأمر، تتم طباعة رسالة على بعض ملفات
المحطات الطرفية حيث يتم تسجيل دخول المستخدم عند استلام البريد، كما هو موضح أسفل
قسم MAIL BIFFING.
بدلا من on or خصم، يمكنك تحديد اسم الملف (~ الاستبدال مسموح به).
المسار الجديد الذي سيتم استخدامه لقالب تنسيق biffing.
إذا كنت تستخدم -l الخيار، يتم إجراء التغييرات محليًا، طوال مدة القاعدة
فقط. إذا رفضت الانتقال إلى قاعدة أخرى، فسيتم فقدان التغييرات التي أجريتها. ال
يتم تغيير القيمة العالمية للمعلمات المتغيرة عند الاستخدام المحلي الأول و
يتم استعادتها عند إدخال قاعدة جديدة. (لا يغير حالة التنفيذ)
وثب، ارتداد عناوين)
قم بإرجاع الرسالة إلى العنوان (العناوين) المحدد وتعمل كما لو تم حفظها
منتهي. والفرق الوحيد مع FORWARD هو أنه لا تتم إضافة أي أسطر تشبه المستاءين
رأس. إذا تم تحديد عنوان بين علامتي اقتباس مزدوجتين، فسيتم اعتباره كاسم
من الملف المراد تحميله للحصول على العناوين (عنوان واحد في كل سطر، وتعليقات الصدفة
(#) مسموح). تحليل اسم الملف هو نفسه المستخدم للنمط
تحميل. (يفشل إذا تعذر إعادة إرسال البريد)
DO روتين [(arg1، arg2 ، , ارجن)]
يستدعي بيرل روتين، مع الوسائط المتوفرة إن وجدت. وهذا هو مستوى منخفض جدا
ربط المستوى في وكيل البريد داخلي. يمكن تحديد الروتين في حد ذاته
(اسم الحزمة, صفقة يجري رئيسي بشكل افتراضي)، أو يتم تحديدها بواسطة قائد بطاقة,
متبوعًا بـ ':'، ثم اسم الروتين كما كان من قبل. ال بطاقة يمكن أن يكون طريقا إلى
الملف حيث يتم تعريف الروتين، أو اسم الأمر (للأوامر المحددة من قبل المستخدم
والتي يتم تحميلها ديناميكيًا). على سبيل المثال
قم بتنفيذ UNKIT:newcmd'unkit('true')
سوف تبحث عن المعرفة من قبل المستخدم UNKIT الأمر، قم بتحميل الملف حيث تم تعريفه
(في ال newcmd الحزمة)، ثم اتصل بالروتين باستخدام 'حقيقي' كحجة. ال
صفقة المحدد يحدد مكان إجراء التحميل، لذا تأكد من ذلك
متوافق مع التعريف الموجود في الملف حيث تم تعريف الروتين. (فشل
إذا كان لا يمكن تحديد موقع الروتين وتنفيذه)
DELETE حذف الرسالة الحالية. في الواقع، هذا لا يفعل شيئًا، إنه مجرد علامات
البريد كما تم حفظه. إذا لم يتم اتخاذ أي إجراء آخر يتضمن الحفظ، فسيتم إرسال البريد
لن تظهر أبدًا في صندوق البريد. (لا يفشل أبدا)
يٌطعم [-أن] برنامج
قم بتغذية الرسالة بأكملها إلى أحد البرامج واحصل على الإخراج مرة أخرى كرسالة جديدة.
ومن ثم يظهر البرنامج كمرشح للرسالة بأكملها. لا علامة
الرسالة كما تم حفظها. تتم عملية إعادة المزامنة تلقائيًا عند العودة.
(إرجاع حالة برنامج)
تحذير: يجب أن يكون برنامجك قادرًا على تحليل رسالة MIME بشكل صحيح ويجب أن يكون كذلك
التعامل مع الهيئات المشفرة بالنقل في حد ذاته. لتبسيط مهمة البرنامج
يمكنك توريد -b التبديل الذي سيسمح لـ mailagent بفك تشفير الجسم بالكامل
أنت، وقمع أي رأس ترميز نقل المحتوى (مما يعني "ثنائي"). هذا
هو تنسيق رسالة غير صالح لإرسال الرسالة، ولكنه يجعل المعالجة
أسهل. لا يزال يتعين عليك تحليل أجزاء MIME بنفسك.
باستخدام -b لا يمنع برنامجك من إخراج رسالة صالحة مرة أخرى
التي يمكن إرسالها على الشبكة بحيث يكون لديك خياران: إما أن تفعل ذلك
عدم توفير أي ترميز لنقل المحتوى في الرؤوس، وسيقوم وكيل البريد بذلك
قم بإعادة ترميز النص لك باستخدام ترميز النقل الأولي الموجود في ملف
رسالة (خيار آمن نسبيًا إذا قمت فقط بإجراء تغييرات في الجسم بشكل جيد)
نقاط محددة دون إدخال أحرف 8 بت)، أو يمكنك توفير المحتوى-
قم بنقل الترميز بنفسك وقم بإجراء ترميز النص يدويًا.
لكي تكون آمنًا تمامًا وتقلل من العمل في برنامجك، فإن -e سوف التبديل
اسمح لوكيل البريد بتحليل نص الرسالة الذي تعيده واختيار المناسب
نقل الترميز تلقائيا. لأن هذا سوف يتسبب في تكون الجسم كله
بعد تحليلها، ومن الممكن أن تكون ضخمة، يجب أن يكون هذا السلوك واضحًا
يطلب. اذا احتجت -e ثم ربما تريد -b كذلك (يمكنك توفير كليهما
بالقول -أن بطبيعة الحال).
إذا لم تقم بتوفير أي تبديل، فسيقدم لك وكيل البريد الرسالة كما هي
سوف تحصل على رسالتك كما هي دون أي سحر إضافي.
إلى الأمام عناوين)
إعادة توجيه البريد إلى العنوان (العناوين) المحدد. وهذا يبدو كما لو تم الحفظ،
من أجل تجنب الحذف. عادة عند إعادة توجيه البريد، فإنك لا ترغب في ذلك
للحفاظ عليه. يضيف الأمر أسطرًا تشبه المستاءين في الرأس. أما بالنسبة لاونس،
من الممكن تضمين الملف (أي استخدام عنوان "قائمة_الأمام" لإعادة توجيه البريد
لجميع المستخدمين المدرجين في الملف ward_list). (يفشل إذا كان البريد لا يمكن أن يكون
مستاء)
يعطى برنامج
قم بإعطاء نص الرسالة إلى البرنامج المحدد عن طريق تغذية معياره
مدخل. يتم إرسال أي مخرجات بالبريد إلى المستخدم الذي يقوم بتشغيل الملف تاجر البريد. نلاحظ أن
لم يتم وضع علامة على الرسالة على أنها تم حفظها. (إرجاع حالة برنامج)
NOTE: إذا كانت الرسالة تحتوي على نص تم ترميزه للنقل (باستخدام أحد
base64 أو ترميز النقل القابل للطباعة)، سيقوم وكيل البريد بشفافية
قم بفك تشفيرها وتوفير نسخة يمكن التعامل معها بشكل صحيح. بعبارة أخرى،
لا يحتاج البرنامج إلى الاهتمام بالجسم المشفر في الرسالة،
لأنها سوف تحصل على واحد عادي. (نظرًا لعدم توفير أي رؤوس، فهذا هو الملف الوحيد
خيار ممكن).
لكن الحذر بالنسبة لرسائل MIME: يجب عليك استخدام PIPE لهم لإعطاء فرصة
للبرنامج للتعامل بشكل صحيح مع الجسم، ولكن بعد ذلك يجب أن يكون MIME- بالكامل
واع.
احتفظ header_fields_list
يحتفظ فقط بالأسطر المقابلة في رأس البريد. على سبيل المثال، أ
سيحتفظ "KEEP From To Cc Subject" بالحقول الأساسية فقط من البريد
رسالة. هذا مناسب لأرشفة رسائل القوائم البريدية. يمكنك إضافة أ
':' بعد اسم كل حقل رأس إذا كنت ترغب في ذلك، ولكن هذا ليس بشكل صارم
ضروري. يمكن تحديد الرؤوس باستخدام التعبيرات العادية بنمط الصدفة، و
يُسمح بتضمين الملف للحصول على رؤوس من ملف. (لا تعديل الموجودة
الحالة)
إجازة اترك البريد الوارد في صندوق بريد النظام. هذا هو الإجراء الافتراضي إذا لم تكن هناك قاعدة
متطابقة أو إذا لم يحدث أي حفظ. لا ينصح بهذا على أنظمة دبيان.
(يفشل إذا تعذر حفظ البريد)
دقيق [-rdp] الاسم [= (قيمنا, نوع)]
يتيح لك تحديد وحدات الماكرو المعرفة من قبل المستخدم، من النموذج %-(الاسم). انظر الفقرة على
وحدات الماكرو المعرفة من قبل المستخدم لشرح الأنواع المتوفرة (SCALAR، EXPR،
CONST، FN، PROG، PROGC). واجهة Perl لوحدات ماكرو المستخدم الأساسية هي
متاح لأوامر بيرل الخاصة بك. ال -r يتم استخدام الخيار ليحل محل القائمة
الماكرو (بدلاً من دفع مثيل جديد على المكدس)، فإن -d هو حذف الكل
مثيلات الماكرو المسمى (في هذه الحالة يستغرق الوسيطة الأولى فقط)،
و -p ينبثق المثيل الأخير للماكرو من المكدس ويعود إلى ملف
التعريف السابق، إن وجد (وإلا فإنه بمثابة -d). إذا كنت ترغب في تحديد أ
ماكرو SCALAR بسيط، يمكنك حذف = (قيمة، نوع) جزء واستمر ببساطة
مع القيمة الكلية. (لا يعدل الوضع الحالي)
رسالة ملف
إرسال ملف العودة إلى مرسل الرسالة (كما هو مستمد من header
من الرسالة). يتم تشغيل نص الرسالة من خلال استبدال الماكرو
الآلية (الموصوفة لاحقا). (يفشل إذا تعذر إرسال الرسالة)
لا [-قدم] لايوجد عملية. إذا كان هذا يبدو غريبًا بعض الشيء، فكر في الأمر من حيث أمر ONCE.
(لا يغير الوضع الحالي إلا إذا -f or -t يتم استخدامه، وفي هذه الحالة فإنه يفرض
a زائف --الفشل-- أو صحيح حالة النجاح)
إعلام ملف عناوين)
إرسال رسالة إعلام ملف إلى قائمة عناوين معينة. نص ال
يتم تشغيل الرسالة من خلال آلية استبدال الماكرو (الموصوفة لاحقًا).
كما هو الحال مع FORWARD، من الممكن تضمين الملف لمواصفات العنوان. (فشل
إذا تعذر إرسال الرسالة)
ON (يوم قائمة) أمر
قم بتنفيذ أمر التصفية المحدد في قائمة الأيام المحددة فقط. تلك القائمة
هي قائمة أيام مفصولة بمسافات، محددة باستخدام الأسماء الإنجليزية. فقط
يتم أخذ الأحرف الثلاثة الأولى في الاعتبار، بشكل غير حساس لحالة الأحرف. لذلك،
أقصر مواصفات يوم صالح هي الاثنين ، الثلاثاء ، الأربعاء، الخميس ، الجمعة ، السبت و الأحد.
يمكن استخدام هذا الأمر مع SELECT للقيام بالاختيار المستند إلى الوقت
ارتداد الرسائل إلى عنوان منزلك، على سبيل المثال:
ON (الاثنين الثلاثاء الأربعاء الخميس) اختر (18:30 .. 23:00) BOUNCE [البريد الإلكتروني محمي];
ON (الجمعة) حدد (18:30 .. 23:59) وثب [البريد الإلكتروني محمي];
ON (السبت الأحد) ترتد [البريد الإلكتروني محمي];
سيؤدي ذلك إلى ارتداد الرسائل فقط في عطلات نهاية الأسبوع وخلال الأسبوع، بعد الساعة 18:30،
وحتى الساعة 23:00 (بافتراض أن هذا هو وقت النوم، سيتم رؤية رسائل أخرى في العمل
اليوم المقبل). لاحظ أنه في أيام الجمعة، نصل إلى الساعة 23:59. (نشر الحالة
تبدأ من أمر. إذا لم يتم تنفيذ الأمر، فارجع النجاح دائمًا)
ذات مرة (اسم، يوم - نهار، فترة) أمر
قم بتنفيذ أمر التصفية المحدد مرة واحدة لكل فترة. الاسم و بطاقة الحقول
يتم استخدامها لتسجيل الطوابع الزمنية للأمر ONCE الأخير. المزيد عن هذا لاحقا.
(ينشر الحالة من أمر. إذا لم يتم تنفيذ الأمر، فارجع دائمًا
النجاح)
مرر برنامج
قم بتغذية نص الرسالة إلى البرنامج المحدد واحصل على نص جديد مرة أخرى
من مخرجات البرنامج . لاحظ أنه لم يتم وضع علامة على الرسالة على أنها تحتوي
تم حفظها. (إرجاع حالة برنامج)
NOTE: إذا كانت الرسالة تحتوي على نص تم ترميزه للنقل (باستخدام أحد
base64 أو ترميز النقل القابل للطباعة)، سيقوم وكيل البريد بشفافية
قم بفك تشفيرها وتوفير نسخة يمكن التعامل معها بشكل صحيح. تولد الجسم
بواسطة البرنامج سيتم ترميزه تلقائيًا مرة أخرى باستخدام نفس النقل
التشفير.
لكن الحذر بالنسبة لرسائل MIME: يجب عليك استخدام FEED لهم لإعطاء فرصة
للبرنامج للتعامل بشكل صحيح مع الجسم، ولكن بعد ذلك يجب أن يكون MIME- بالكامل
واع.
PERL سيناريو [الحجج]
الهروب إلى بيرل سيناريو لتنفيذ بعض الإجراءات على الرسالة. هذا بالكامل
الموصوفة بشكل أكبر في الصفحة الرئيسية، وهي مختلفة تمامًا عن a RUN بيرل سيناريو
يأمر. (إرجاع الفشل إذا لم يتم تجميع البرنامج النصي أو إرجاع قيمة غير صفرية
حالة).
يضخ [-b] برنامج
قم بتوجيه الرسالة بأكملها إلى البرنامج المحدد، ولكن لا تحصل على أي شيء مرة أخرى.
يتم إرسال أي مخرجات بالبريد إلى المستخدم الذي يقوم بتشغيل الملف تاجر البريد. الرسالة ليست كذلك
تم وضع علامة عليه على أنه تم حفظه على أي حال، لذا يجب عليك حذفه صراحةً إذا
كانت الأنابيب كافية ولم تفشل: "REJECT -f" هو صديقك هنا الذي يجب تجنبه
الحذف غير المرغوب فيه. (إرجاع حالة برنامج)
تحذير: يجب أن يكون برنامجك قادرًا على تحليل رسالة MIME بشكل صحيح ويجب أن يكون كذلك
التعامل مع الهيئات المشفرة بالنقل في حد ذاته. لتبسيط مهمة البرنامج
يمكنك توريد -b التبديل الذي سيسمح لـ mailagent بفك تشفير الجسم بالكامل
أنت، وقمع أي رأس ترميز نقل المحتوى (مما يعني "ثنائي"). هذا
هو تنسيق رسالة غير صالح لإرسال الرسالة، ولكنه يجعل المعالجة
أسهل. لا يزال يتعين عليك تحليل أجزاء MIME بنفسك.
بريد [-رطل] مجموعة (مجموعات) الأخبار
قم بنشر الرسالة إلى مجموعة (مجموعات) الأخبار المحددة بعد تنظيفها
header: تمت إزالة الحقول المتعلقة بالبريد مثل Received: أو In-Reply-To: وهي صالحة
من: يتم إنشاء السطر، ويتم إعادة تسمية النص الأصلي إلى: ونسخة: ببادئة X،
المراجع: يتم تحديث/إنشاء السطر إذا لزم الأمر بناءً على المعلومات الموجودة
يتم تجريد حقول الرد والحقول الخاصة بـ NNTP حتى يتمكن الخادم من إضافة الحقول الخاصة به
خاصة.
يعمل تشغيل POST بنجاح بمثابة توفير.
إذا كان الاسم الأول -l كما في "POST -l comp.mail.mh"، ثم "التوزيع:
local" لفرض التسليم المحلي. وبخلاف ذلك، يكون الإعداد الافتراضي عارض أخبار أفاست
سيتم استخدام التوزيع (العالم، عادة).
عندما -b يتم إعطاء المفتاح، وسوف يؤدي POST الناجح إلى وجود التقطيع
تم تفعيله (انظر القسم MAIL BIFFING) للمقال الإخباري الناتج.
إذا تم تحديد أكثر من مجموعة أخبار واحدة، فيجب فصلها بمسافات. إنها
من الممكن الحصول على قائمة مجموعات الأخبار عن طريق إدراج الملف. (يفشل إذا لم تتمكن الرسالة
سيتم نشرها)
العملية قم بتشغيل معالجة وكيل البريد التي تبحث عن أوامر @SH وتقوم بتنفيذها.
لقد تم وصف ذلك من قبل في القسم الذي يتناول القواعد الافتراضية. الحدث
يرتبط بشكل افتراضي بالبريد الذي يحتوي على أمر [Cc] حيث أن موضوعه هو PROCESS.
(يعود دائما النجاح)
يحمي [-لو] طريقة
يضبط وضع الحماية الافتراضي الذي يجب ضبطه على المجلدات التي تم إنشاؤها (أو
الملفات التي تم إنشاؤها عند الحفظ في مجلد MH أو دليل). بشكل افتراضي،
تخضع الأذونات لأمر UMASK، لكن هذا يتيح لك تجاوز الأذونات
تقصير. المحدد طريقة يجب أن يسبقه أ 0 كما في 0644 لإعطاء
أذونات ثماني مألوفة. خلاف ذلك، يتم تفسيره على أنه رقم عشري، لذلك
احذر!
ال -l يمكن استخدام الخيار لتحديد الوضع محليًا لقاعدة واحدة. خلاف ذلك،
تم ضبط وضع الحماية عالميًا. ال -u يؤدي الخيار إلى إلغاء تعيين الخيار العالمي (أو المحلي).
عند دمجها مع -l) الوضع، والعودة إلى السلوك الافتراضي حيث فقط
يتم أخذ umask في الاعتبار من قبل النظام.
لاحظ أنه عند الحفظ في مجلد MH، يكون لأمر الحماية الأولوية
خلال حماية الرسالة المجال من الخاص بك ~ / .mh_profile ملف. (لا يتغير
حالة التنفيذ)
تنقية برنامج
قم بإدخال الرأس في البرنامج واحصل على رأس جديد مرة أخرى. تم إجراء إعادة المزامنة
تلقائيا عند العودة. يمكن استخدام هذا لتنقية الرأس بالفعل
إزالة جميع العناصر المطولة التي أضافها العديد من وكلاء نقل البريد (X-400
مثل الخطوط على سبيل المثال). من الواضح أن هذا لا يضع علامة على الرسالة على أنها موجودة
تم حفظها. (إرجاع حالة برنامج)
إذا قام برنامجك بإزالة رأس Content-Transfer-Encoding في رسالة MIME،
سيقوم mailagent بتحويل الرسالة بشكل صحيح إلى نص غير مشفر. لو
قمت بتغيير قيمة رأس Content-Transfer-Encoding، وسيقوم وكيل البريد بذلك
قم أيضًا بإعادة ترميز الجسم بشكل صحيح لك. الترميزات المدعومة الوحيدة هي base64
ومقتبسة للطباعة.
QUEUE قائمة انتظار البريد مرة أخرى. يتم احتساب قائمة الانتظار الناجحة كما لو تم حفظ البريد. بريد
في قائمة الانتظار بهذه الطريقة لن تتم معالجتها خلال الـ 30 دقيقة القادمة. لاحظ أن
ما لم يتم استدعاء وكيل البريد على أساس منتظم من قبل كرون، سيبقى البريد في
قائمة الانتظار حتى وصول بريد آخر. (يفشل عندما لا يمكن وضع البريد في قائمة الانتظار)
سِجِلّ [-acr] [حالة] [(قائمة العلامات)]
قم بتسجيل الرسالة في السجل وإدخال الحالة _SEEN_ إذا كانت الرسالة موجودة بالفعل
موجود هناك. إذا تم تسجيل الرسالة لأول مرة، تتم معالجتها
يستمر بشكل طبيعي. وإلا سيتم تنفيذ الرفض. قد يكون هذا السلوك
تم تعديله إلى حد ما باستخدام بعض الخيارات. انظر فريد للحصول على وصف كامل
من الخيارات والحجج. وبطبيعة الحال، عندما أ حالة تم تحديد ذلك
يتجاوز الإعداد الافتراضي _SEEN_. يمكن أن يحتوي اسم الولاية على أحرف أبجدية رقمية
ويؤكد.
عندما يكون للـ قائمة العلامات (قائمة أسماء مفصولة بفواصل)، يتم تحديد الرسالة
تم تسجيلها والتحقق منها فقط مقابل كل تلك العلامات، ولكن فقط لهم. لا يحدد
أي قائمة علامات تعني أي حدث، سواء تم وضع علامة عليه أم لا. انظر الفقرة
باستخدام مصطلحات البحث in القيد و التفرُّد للمزيد من المعلومات. (إرجاع حالة الفشل
إذا تم تسجيل البريد بالفعل)
يرفض [-تف] [حالة]
قم بإلغاء تنفيذ الإجراء الحالي، واستمر في المطابقة. لو -t محدد،
لن يحدث الرفض إلا إذا تم إكمال الإجراء السابق بنجاح
(حالة العودة صحيح)، في حين -f من شأنه أن يسبب الرفض فقط عند الفشل
حصل. اذا كان حالة تم تحديده، ندخل تلك الحالة قبل الرفض. يرفض
يعيد تعيين علامة المطابقة، مما يعني أنه في حالة عدم حدوث أي تطابق آخر، فإن
سيتم تطبيق الإجراء الافتراضي. يمكن أن يحتوي اسم الولاية على أحرف أبجدية رقمية و
الشرطة السفلية. (لا يغير حالة التنفيذ)
تطلب ملف [صفقة]
يتصرف مثل بيرل تطلب المشغل عن طريق تحميل ملف بيرل في الذاكرة. بواسطة
افتراضيًا، تتم قراءة الملف في ملف newcmd الحزمة، ولكن يمكنك تحديد أي شيء
الحزمة التي ترغب في تحميلها فيها. سيقوم هذا الأمر بالتحميل مرة واحدة فقط
لكل (ملف، حزمة) Tuple. على عكس ما يعادله من لغة Perl، فإن الملف "القيمة" ليس كذلك
مهم، أي أنه ليس من الضروري أن ينتهي ببيان يُرجع قيمة حقيقية.
(يفشل إذا تعذر تحميل الملف)
إعادة تشغيل [-تف] [حالة]
قم بإيقاف تنفيذ الإجراء الحالي وأعد تشغيل عملية المطابقة من
بداية. لتجنب الحلقات، يمكن المرور عبر كل قاعدة مرة واحدة في وقت معين
ولاية. راجع الرفض للتعرف على معنى المعلمات الاختيارية. إعادة التشغيل يعيد ضبط
مطابقة العلامة، مما يعني أنه سيتم تطبيق الإجراء الافتراضي، لا ينبغي أن يكون أكثر من ذلك
تحدث المباراة. (لا يغير حالة التنفيذ)
RESYNC إعادة مزامنة الرأس المستخدم للمطابقة مع رأس البريد. هذا هو
ربما يكون مفيدًا فقط عند تشغيل أمر SUBST أو ANNOTATE. (لا يتغير
حالة التنفيذ)
NOTE: في وقت RESYNC، سيتحقق وكيل البريد مما إذا كان ترميز نقل المحتوى أم لا
تم تغيير الرأس وسيتم إعادة ترميز النص بشفافية إذا لزم الأمر، لذلك
تظل الرسالة بأكملها صالحة على الرغم من تشويه الرأس. وسوف تأخذ الرعاية أيضا
لتحديث طول المحتوى إذا لزم الأمر. كلما قمت بتغيير هذه المهم
الرؤوس عبر SUBST أو ANNOTATE، تأكد من الاتصال بـ RESYNC قبل التخلص من الملف
رسالة وإلا فإنك تخاطر بحفظ نسخة تالفة لن تكون كذلك
مفهومة بشكل صحيح من قبل وكيل مستخدم البريد الخاص بك.
RUN برنامج
قم بتشغيل البرنامج المحدد وأرسل أي مخرجات بالبريد إلى المستخدم الذي يقوم بتشغيله تاجر البريد.
لا يضع هذا الإجراء علامة على الرسالة على أنها تم حفظها. (إرجاع الحالة
of برنامج)
SAVE مجلد
حفظ الرسالة في المجلد المحدد. إذا كان اسم المجلد يبدأ بـ "+"، فهو كذلك
يتم التعامل معه كمجلد على نمط MH و com.rcvstore تمت محاكاته لتسليم الرسالة
في هذا المجلد. إذا كان المجلد دليلا، فسيتم تسليم الرسالة في ملف واحد
الملف داخل هذا الدليل. انظر المجلدات قسم. (يفشل إذا لم تتمكن الرسالة
يتم حفظه)
تحديد (بداية .. النهاية) أمر
تنفيذ أمر فقط خلال فترة الاختيار الزمنية المحددة. يمكن التواريخ
يتم تحديدها في مجموعة واسعة من الأشكال. إخراج ال تاريخ(١) الأمر هو
مثال لمواصفات صالحة. إذا كان التاريخ أو السنة أو الشهر مفقودًا،
ثم يتم استبدال الحالي بدلا منه. التواريخ التالية هي
المواصفات الصالحة: '10:04:25'، 'الآن'، '1 أبريل 1992'، '25 ديسمبر'، '14 يوليو
1789، 07:40' (خطأ... إنه صحيح حسب القواعد، لكنه قبل
عصر لذلك لا يعني شيئا). تواريخ فاخرة أخرى مثل "الشهر الماضي - 5".
تم أيضًا تمكين "دقائق" أو "منذ 3 أسابيع". (أليس من الرائع أن يكون لديك حقيقي
محلل؟ كان من الممكن أن تكون قواعد التصفية أكثر تفصيلاً لو كنت أعرف ذلك
حول هذا بيركلي ياك إنتاج أ بيرل محلل...). (إرجاع حالة
أمر، إذا تم تشغيله، فسيتم إرجاع صحيح).
الخادم [-t] [-d معاق الأوامر]
تفعيل معالجة الخادم. يتم تفسير نص الرسالة كقائمة
أوامر للتنفيذ. انظر القسم عام MAIL الخادم لمزيد من المعلومات حول
الخادم نفسه. ال -t الخيار يحول الخادم إلى افضل طريقة، حيث
القوى يمكن اكتسابها. ال -d يجب أن يتبع الخيار قائمة المعوقين
الأوامر، مفصولة بفواصل بدون مسافات متداخلة بينها.
ينقسم [-أديو] مجلد
قم بتقسيم بريد بتنسيق ملخص إلى المجلد المحدد (نفس اصطلاحات التسمية
كما في حفظ). إذا لم يتم تحديد أي مجلد، فسيتم وضع كل عنصر في قائمة الانتظار وسيتم ذلك
تحليلها كبريد واحد في حد ذاته. ال -d الخيار يحذف رأس الملخص.
ال -i يعني الخيار أن التقسيم يتم في مكانه ويتم تجاهل البريد الأصلي.
يمكن استخدام جميع الخيارات في وقت واحد بشرط أن تكون عالقة معًا
البداية (تحليل الخيار بدائي حقًا).
إذا لم يكن البريد بتنسيق ملخص وتم تحديد مجلد، فسيتم حفظه
في هذا المجلد. وإلا، فسيفشل إجراء SPLIT ولن يحدث شيء (filter
تواصل معالجتها بالرغم من ذلك). سوف يقوم أمر SPLIT بتفجير RFC-934 بشكل صحيح
هضم الرسائل وسيحاول بذل قصارى جهده بخلاف ذلك. إذا لم يكن الملخص
متوافق مع RFC-934 وهناك احتمال أن يكون SPLIT قد أنتج شيئًا ما
غير صحيحة، فسيتم حفظ الرسالة الأصلية أيضًا إذا -i، وإلا فلا
تم وضع علامة عليه كمحفوظ (بحيث يمكن تطبيق أمر الإجازة الافتراضي). ال -w (يشاهد)
يطلب رعاية خاصة وسيكتشف كل ملخص غير RFC-934، حتى عندما يكون
وإلا فإن عدم الامتثال غير ضار؛ علاوة على ذلك، أي قمامة زائدة لفترة أطول
سيتم حفظ 100 بايت كعنصر ملخص بمفرده.
ال -a يقوم الخيار بتعليق كل عنصر ملخص باستخدام سطر رأس X-Digest-To:،
وهو تسلسل الحقول إلى: ونسخة: من الملخص الأصلي
رسالة. يمكن استخدام هذا على سبيل المثال لدمج الملخص في قائمة الانتظار و
ثم قم بإعادة معالجة كل بند من بنوده حسب هذا الحقل المضاف. وأخيرا، فإن
-e سيتجاهل الخيار رأس الملخص فقط إذا كان نصه فارغًا (على سبيل المثال
لم يتضمن المشرف أي تعليق رئيسي). (يُرجع النجاح إذا كان البريد موجودًا
تنسيق الملخص والتقسيم بشكل صحيح دون أي خطأ)
المتجر مجلد
احفظ الرسالة في المجلد المحدد واترك نسخة في صندوق بريد النظام.
ال مجلد تتبع المعلمة نفس اصطلاحات التسمية كما في SAVE. مرة أخرى،
بسبب مشكلات القفل، لا يوصى بترك البريد في صندوق البريد
آلات دبيان. (يفشل إذا تعذر حفظ الرسالة أيضًا في ملف مجلد أو في
صندوق البريد)
قطاع header_fields_list
قم بإزالة الأسطر المقابلة في رأس البريد. على سبيل المثال، "STRIP
مجموعات الأخبار على ما يبدو-إلى" ستزيل الأسطر المناسبة لمسح أي منها
مجموعات الأخبار: أو على ما يبدو إلى: رأس الصفحة. يمكنك إضافة ':' بعد كل حقل رأس
اسم إذا كنت ترغب في ذلك، ولكن هذا ليس ضروريا تماما. يمكن تحديد الرؤوس
عبر التعبيرات العادية بنمط الصدفة أو عبر تضمين "ملف". (لا يتغير
حالة التنفيذ)
SUBST فار/header التعبير
يستبدل التعبير بالمتغير المحدد من قبل المستخدم (اسم البداية
مع #) أو مرجع خلفي (رقم)، أو حقل رأس (ينتهي اختياريًا بـ
':'). على سبيل المثال
SUBST #foo /w/y/g
سيحل محل متغير محدد من قبل المستخدم فو جميع w by y. انظر أيضًا تعيين
و تر.
بالنسبة للبدائل في حقول الرأس، مثل:
الموضوع الفرعي: /\[foo\]\s+//;
ستتم إعادة تنسيق الأسطر الرأسية المطابقة عند نجاح الاستبدال،
وهو ما يعني على الأرجح أنه لن يتم الحفاظ على الاستمرارات الأصلية. الهدف من
الاستبدال هو الرأس بأكمله، مع استمرارية طبيعية لواحد
فضاء. لذلك نضمن لك أن تكون مستقلاً عن الرأس الفعلي
التنسيق في الأصل.
لا تنس إصدار إعادة المزامنة بعد حقل الرأس SUBST، نظرًا لبعض الإجراءات
(مثل POST) قم بالتحقق من جدول تجزئة الرأس الذي تم تحليله لإنشاء ما تم حفظه
رسالة.
(يفشل إذا حدث خطأ في التعبير)
TR فار/header ترجمة
قم بإجراء الترجمة على المتغير المحدد أو المرجع الخلفي أو الرأس
مجال. على سبيل المثال
تر 1 /من الألف إلى الياء/من الألف إلى الياء/
من شأنه أن يحول محتوى المرجع 1 إلى أحرف صغيرة. بنجاح
تتم إعادة تنسيق الرؤوس المكتوبة بحروف صوتية، حتى عندما لا يكون حجمها الإجمالي كذلك
تغير. انظر أيضًا ASSIGN وSUBST. (يفشل إذا حدث خطأ في ترجمة)
أوماسك [-l] طريقة
يغير umask العملية إلى المحدد طريقة، والتي يمكن أن تكون عشرية، ثماني
(إذا كان مسبوقًا بـ "0") أو سداسي عشري (يبدأ بـ "0x"). التدوين الثماني هو
أوضح طريقة لتحديد umask على أي حال. ليست شائعات تقول أن الثماني
تم اختراعه لهذا الغرض فقط؟ ؛-) استخدم ال -l خيار تغيير umask
لمدة قاعدة الإجراء الحالية فقط. لاحظ أن umask الافتراضي
المحدد في ملف التكوين الخاص بك يستخدم لإعادة التعيين تاجر البريدumask في بداية
معالجة كل بريد. (لا يغير حالة التنفيذ)
فريد [-acr] [حالة] [(قائمة العلامات)]
قم بتسجيل الرسالة في السجل ووضع علامة على الرسالة كمحفوظة إذا كانت موجودة بالفعل
هناك. إذا تم تسجيل الرسالة لأول مرة، فستستمر المعالجة
عادة. وإلا سيتم تنفيذ الرفض. لو -r تم استخدام، يتم استخدام إعادة التشغيل
بدلا من ذلك بينما -a سيتم تشغيل ABORT. على سبيل المثال، لإزالة التكرارات
الرسائل من القوائم البريدية، تشغيل UNIQUE -a قبل حفظ البريد. ال -c
يمكن استخدام الخيار بمفرده لمنع الأمر فعليًا من إزعاج الملف
تدفق التنفيذ، واستخدام حالة الإرجاع لاحقًا لمعرفة ما حدث: UNIQUE
إرجاع حالة الفشل إذا تم تسجيل الرسالة بالفعل. إذا كان اختياريا
حالة يتم إعطاء الوسيطة، ثم سيدخل الإنسان تلك الحالة إذا كان البريد
كان موجودا سابقا في قاعدة البيانات. أنظر أيضاً السجل، والفقرة التي تحمل عنوان
باستخدام مصطلحات البحث in القيد و التفرُّد لمزيد من المعلومات حول قائمة العلامات. (فشل
إذا تم تسجيل البريد بالفعل)
أجازة [-l] تشغيل|إيقاف|المسار [فترة]
السماح أو عدم السماح برسالة إجازة. عند تشغيل وضع الإجازة عبر
ملف التكوين، يتم إرسال رسالة عندما يتلقى المستخدم اجتماع بريد
بعض المتطلبات، كما هو موضح في القسم عطلة MODE. واحدة من
الشروط هي أن تكون علامة الإجازة المعدلة بواسطة هذا الأمر صحيحة. هذا
يجعل من السهل عدم السماح برسائل العطلات لمجموعة من الأشخاص على الإطلاق
حتة.
بدلا من on or خصم، يمكنك تحديد اسم الملف (~ الاستبدال مسموح به).
المسار الجديد الذي سيتم استخدامه لتحديد موقع ملف الإجازة. اختياريا، يمكنك
حدد المعلمة الأخيرة، والتي سيتم اعتبارها الفترة التي سيتم تطبيقها فيها
إرسال رسالة الإجازة. تغييرات على رسالة الإجازة مسار .
ممنوع عندما يكون متغير التكوين vacfixed تم ضبطه على ON.
إذا كنت تستخدم -l الخيار، يتم إجراء التغييرات محليًا، طوال مدة القاعدة
فقط. إذا رفضت الانتقال إلى قاعدة أخرى، فسيتم فقدان التغييرات التي أجريتها. ال
يتم تغيير القيمة العالمية للمعلمات المتغيرة عند الاستخدام المحلي الأول و
يتم استعادتها عند إدخال قاعدة جديدة. (لا يغير حالة التنفيذ)
الكتابة مجلد
اكتب الرسالة في المجلد المحدد، مع إزالة أي مجلد موجود مسبقًا
نفس الاسم. ومن ثم، فإن أوامر WRITE المتعاقبة ستحل محل الأوامر السابقة.
يعد هذا مفيدًا لتخزين مخرجات أوامر النظام التي يتم تشغيلها كرون. لا تحاول استخدام
مع مجلد MH أو مجلد دليل أو سيتصرف مثل SAVE. (فشل
إذا لا يمكن كتابة الرسالة)
التنفيذ الحالة
تقوم جميع الإجراءات تقريبًا بتعديل متغير يتتبع حالة التنفيذ
(مشابه للمتغير $? في الصدفة). يمكن اختبار هذا المتغير عبر -t or -f
خيار الأمر REJECT على سبيل المثال. ولإعطاء مثال واحد فقط، إجراء الحفظ
سيعود فشل إذا لم يتمكن من حفظ البريد في المجلد المحدد. إذا كان هذا حفظ
الأمر متبوعًا بـ "فشل رفض -f"، ثم سيتم تنفيذ القاعدة الحالية
توقف وسيستمر الجهاز الآلي في تحليل البريد في حالة الفشل.
ومع ذلك، فإن بعض الإجراءات لا تقوم بتعديل حالة التنفيذ الأخيرة هذه. عادة، تلك هي
الإجراءات التي تتخذ قرارات بناءً على تلك الحالة، أو ببساطة الإجراءات التي قد لا تفشل أبدًا.
هذه الإجراءات الخاصة هي: ABORT، ASSIGN، BEGIN، KEEP، MACRO، NOP، REJECT، RESTART،
إعادة المزامنة والشريط والإجازة.
من المؤسف أن أوامر ONCE أو SELECT لا يمكنها أن تُحدِث فرقًا بين غير
التنفيذ والتنفيذ الناجح للأمر المحدد. قد يكون هناك تغيير في
الطريقة التي يعمل بها هذا المخطط، ولكن يجب أن يظل متوافقًا مع الإصدارات السابقة.
بيرل هرب
باستخدام أمر PERL، لديك القدرة على إجراء التصفية وغيرها
إجراءات متطورة مباشرة في بيرل. وهذا يختلف حقًا عما يمكنك القيام به
تغذية البريد الخاص بك إلى برنامج نصي بيرل. أولًا، لا يتم إنشاء أي عملية إضافية: البرنامج النصي
يتم تحميله مباشرة في mailagent وتجميعه في حزمة خاصة تسمى com.mailhook.
ثانيًا، لديك واجهة Perl لجميع أوامر التصفية: كل إجراء تصفية
يرتبط بوظيفة Perl (مكتوبة بأحرف صغيرة). وأخيرا، بعض محددة مسبقا
يتم تعيين المتغيرات لك بواسطة mailagent.
قبل أن نذهب إلى أبعد من ذلك، يرجى ملاحظة أنه نظرًا لعدم إنشاء أي عملية إضافية، يمكنك يجب
ليست استدعاء بيرل خروج وظيفة. يستخدم &مخرج بدلاً من ذلك، بحيث قد يكون المخرج محاصراً. &مخرج
يأخذ وسيطة واحدة، رمز الخروج. إذا استخدمت 0، فهذا يُفهم على أنه نجاح، أي
قيمة أخرى تعني الفشل (أي أن أمر PERL سيعيد حالة الفشل). استخدام
بيرل خروج وظيفة مباشرة سوف تقتل تاجر البريد ومن المحتمل أن يتحمل بعض البريد
خسائر.
يجب أن تظل البرامج النصية المستخدمة بسيطة. وعلى وجه الخصوص، يجب عليك تجنب استخدام
صفقة توجيه أو تحديد وظائف باسم حزمة بخلاف com.mailhook (أي
الحزمة حيث يتم تحميل البرنامج النصي الخاص بك). قد يؤدي عدم القيام بذلك إلى إثارة بعض التعارضات في الأسماء
تاجر البريدإجراءاته الخاصة. على وجه الخصوص، تجنب رئيسي طَرد. لاحظ أنه منذ
تم إعداد بيئة التجميع لـ com.mailhook، وعدم تحديد أسماء الحزم في ملفك
المتغيرات والروتين الفرعي جيدان (في الواقع، من المفترض أن يعملا بهذه الطريقة).
البرنامج النصي الخاص بك حر في فعل ما يريده عبر البريد. ومع ذلك، في معظم الأحيان، تنتهي
حتى باستخدام تاجر البريد الأوليات لحفظ البريد أو إعادة توجيهه (لكن لك الحرية في ذلك).
أعد تصميم تصميمك الخاص واتصل بهم بدلاً من ذلك بالطبع). الواجهة بسيطة: كل منهما
تأخذ الدالة وسيطة واحدة فقط، وهي سلسلة، وهي وسيطات الأمر، إن وجدت.
على سبيل المثال، في البرنامج النصي للهروب من Perl، يمكنك التعبير عن:
{حفظ القائمة؛ إعادة توجيه "المستخدمين"؛ يٌطعم ~/bin/newmail -tty؛ يرفض }
مع:
&حفظ('قائمة');
&forward('"المستخدمين"');
&يٌطعم('~/bin/newmail -tty');
&يرفض؛
القاعدة بسيطة: يتم استبدال كل أمر باستدعاء دالة، مع الباقي
المعلمات المغلقة في سلسلة، إن وجدت. وبدلاً من ذلك، يمكنك تحديد المعلمات كـ a
list: يتم ربط جميع الوسائط التي تقدمها في سلسلة سعيدة كبيرة، باستخدام مسافة
حرف كفاصل. يتم بعد ذلك تشغيل آلية استبدال الماكرو على هذه النتيجة
سلسلة الوسيطة.
تقوم كل دالة بإرجاع حالة نجاح منطقية للأمر (أي 1 يعني النجاح). ل
تلك الوظائف التي عادةً لا تقوم بتعديل متغير حالة التنفيذ الأخير للمرشح، أ
يتم إرجاع النجاح دائما. هذا يجعل من الممكن (بشكل حدسي) الكتابة:
&خروج(0) إذا &حفظ('uucp');
&ترتد('الجذر') || &حفظ('طوارئ');
والحصول على النتيجة المتوقعة. سيتم حفظ البريد في مجلد الطوارئ فقط عندما
فشل الحفظ في مجلد uucp ولا يمكن ارتداد البريد إلى الجذر.
من المهم أن نفهم أن هذه الأوامر لها بالضبط نفس التأثير على
عملية التصفية عند تشغيلها من برنامج نصي للهروب من Perl أو من داخل ملف القاعدة
كإجراءات منتظمة. أ &يرفض call سوف يتخلى ببساطة عن تنفيذ Perl الحالي
سوف يستعيد البرنامج النصي والمرشح الآلي السيطرة ويحاولان إجراء مطابقة جديدة. لكن بيرل
يجلب لك المزيد من القوة، ولا سيما مكالمات النظام، وهياكل التحكم مثل if و
لـ، التعبيرات العادية الخام، الخ ...
الخاص بيرل صفيف @INC (الذي يتحكم في مسار البحث عن تطلب) هو قليلا
تم تعديله عن طريق إضافة مسار المكتبة الخاصة لوكيل البريد. وهذا يترك الباب مفتوحا ل
نصوص Perl لمكتبة mailagent المستقبلية والتي قد تكون مطلوبة بواسطة البرنامج النصي Perl.
علاوة على ذلك، يتم إعداد المتغيرات الخاصة التالية بواسطة Perl قبل استدعاء ملفك
النصي:
ARGV وسيطات البرنامج النصي التي تم تقديمها بواسطة أمر PERL. هذا
تم إعداد المصفوفة بنفس الطريقة التي تتوقع أن يتم إعدادها بها إذا كنت
تم استدعاء الأمر مباشرة من الصدفة، باستثناء ذلك @ARGV[0] هل
اسم البرنامج النصي (حيث لا يمكنك استخدام Perl's $0 للحصول عليه؛ التي من شأنها أن
أعطيك اسم وكيل البريد).
عنوان $ جزء العنوان من السطر:.
$ سم مكعب المحتوى الأولي لخط Cc:.
@نسخة قائمة العناوين الموجودة في سطر نسخة:، مع منع التعليقات.
مغلف $ مغلف البريد، كما تم حسابه باستخدام السطر الأول من الرسالة.
$ ودية جزء التعليق من السطر من:، إن وجد.
$من محتوى السطر من: مع جزء العنوان والتعليق.
%header يقوم هذا الجدول، المفهرس حسب اسم الحقل، بإرجاع المحتوى الأولي الموجود على الملف
خط الرأس المقابل. انظر أدناه.
$msgpath اسم المسار الكامل للمجلد (أو الرسالة داخل مجلد MH) حيث يوجد الملف
حدثت عملية الحفظ الأخيرة. هذا مخصص للاستخدام إذا كنت ترغب في ذلك
لإنشاء إشعار استلام البريد الخاص بك.
طول $ طول الرسالة بالبايت.
خطوط $ عدد الأسطر في الرسالة.
$تسجيل الدخول اسم تسجيل الدخول للعنوان الموجود في السطر من:.
$ الأسبقية محتوى الأسبقية: السطر، إن وجد.
@relayed تم إدراج قائمة بأسماء المضيفين (ربما عناوين IP الأولية في حالة عدم وجود تعيين DNS).
في (المحسوبة) المُرحّلة: سطر الرأس.
$reply_to عنوان البريد الإلكتروني الذي سيتم إرسال الرد إليه، مع التعليق
قمع.
$المرسل مرسل الرسالة (قد يكون لديه تعليق)، مشتق بنفس الطريقة
المرسل: يتم حساب الخط بواسطة وكيل البريد.
الموضوع $ موضوع الرسالة.
$ إلى المحتوى الأولي للخط إلى:.
@ل قائمة العناوين في السطر "إلى:"، مع منع التعليقات.
المصفوفة النقابية %header يتيح لك الوصول إلى كافة الحقول الموجودة في رأس الملف
رسالة. على سبيل المثال، $ إلى هي حقا قيمة $رأس {'إلى'}. تم تحديد المفتاح
باستخدام حالة طبيعية، أي أن الحرف الأول من كل كلمة مكتوب بأحرف كبيرة، والباقي
كونها صغيرة. هذا مستقل عن التمثيل المادي الفعلي في
الرسالة نفسها.
المفاتيح الزائفة الرأس , الجسد و الكل على التوالي يتيح لك الوصول إلى الرأس الأولي لملف
الرسالة والجسم والرسالة بأكملها. ال %header المصفوفة هي في الواقع إشارة إلى
تاجر البريدبنية البيانات الداخلية لـ، لذا فإن تعديل القيم سيؤثر على التصفية
عملية. على سبيل المثال، يقوم الأمر SAVE بكتابة الملف الرأس أطلقت حملة مرشح X: السطر، نهاية
رأس (سطر جديد واحد) ثم الجسد (هذا مثال فقط وليس توثيقا)
ميزة :-). ال =الجسم= المفتاح خاص: إنه مرجع Perl إلى عددي يحتوي على
النص مع إزالة أي ترميز لنقل المحتوى.
نلاحظ أن $msgpath المتغير يحمل فقط لقطة من مسار المجلد في الوقت الذي
تم استدعاء الهروب PERL. إذا قمت بإجراء المدخرات الخاصة بك في بيرل، فأنت بحاجة إلى البحث
في $main'folder_saved متغير بدلاً من ذلك للحصول على قيمة مسار المجلد المحدثة.
كملاحظة أخيرة، قاوم إغراء قراءة المعلومات الداخلية لوكيل البريد و
استدعاء الإجراءات الروتينية التي تحتاجها مباشرة. إذا لم يتم توثيقه في صفحة الدليل، يجوز ذلك
يمكن تغييرها دون سابق إنذار بواسطة أي تصحيح آخر. (وهذا لا يقوله موثق
قد لا تتغير الميزات أيضًا... إنه أمر مستبعد أكثر، وستوضح التصحيحات ذلك بوضوح
ذلك بالطبع.)
البرنامج البيئة
جميع البرامج التي بدأها mailagent عبر RUN ويرث الأصدقاء ما يلي
متغيرات البيئة: HOME، وUSER، وNAME، يتم تعيينها على التوالي من التكوين
المعلمات الصفحة الرئيسية, المستخدم و الاسم. إذا تم استدعاء وكيل البريد بواسطة تصفية، ثم المسار
يتم تعيينه أيضًا وفقًا لملف التكوين (إذا كنت تستخدم مرشح C) أو
مهما قمت بتعيين PATH (إذا كنت تستخدم مرشح Shell).
يتم تنفيذ كافة البرامج من داخل الصفحة الرئيسية الدليل. وهذا يشمل البرامج النصية
بدأت عبر أمر PERL وخطافات البريد. سيتم وصف هذا الأخير بالتفصيل
إلى الأسفل أكثر.
قم بتقديم إدراجه
تسمح لك بعض الأوامر مثل FORWARD أو KEEP بتحديد اسم ملف بين علامات الاقتباس المزدوجة
لتحميل المعلمات فعليًا من هذا الملف. ما لم يتم إعطاء المسار الكامل، ما يلي
يتم استخدام الطريقة لتحديد موقع الملف: أولاً في الموقع المشار إليه بواسطة الملف مرشح البريد
متغير إذا تم تعيينه، وإلا في هو البريد وأخيرا في الدليل الرئيسي. لاحظ أن هذا
ليس مسار بحث بمعنى أنه إذا مرشح البريد يتم تعريف والملف ليس هناك، و
سيتم الإبلاغ عن الخطأ.
يجب أن يسرد الملف كل معلمة (سواء كانت عنوانًا أو رأسًا أو نمطًا) على سطر
بحد ذاتها. يُسمح بالتعليقات ذات النمط Shell (#) داخل هذا الملف ويُسمح بالمسافات البيضاء البادئة
قلص (ولكن ليس مسافات زائدة).
وحدات الماكرو بدائل
تمر كافة الأوامر عبر آلية استبدال الماكرو قبل تنفيذها. ال
تتوفر وحدات الماكرو التالية:
%% علامة النسبة المئوية الحقيقية
%A عنوان الإنترنت المستخرج من بدءًا من: حقل (abc in [البريد الإلكتروني محمي]),
تم تحويلها إلى أحرف صغيرة.
اسم وحدة المعالجة المركزية %C الذي يعمل عليه وكيل البريد. هذا هو اسم المضيف المؤهل بالكامل مع
اسم المجال، على سبيل المثال lyon.eiffel.com.
%D يوم من الأسبوع (0-6)
اسم المضيف %H (اسم الجهاز الذي تم تثبيت تاجر البريد يعمل)، دون أي مجال
اسم. دائمًا بالأحرف الصغيرة، بغض النظر عن اسم الجهاز.
%I اسم مجال الإنترنت المستخرج من بدءًا من: حقل (قبل الميلاد in [البريد الإلكتروني محمي]),
تم تحويلها إلى أحرف صغيرة.
%L طول الجزء الأساسي، بالبايت، مع إزالة ترميز نقل المحتوى.
%N الاسم الكامل للمرسل (اسم تسجيل الدخول إذا لم يكن هناك)
%O اسم المنظمة المستخرج من بدءًا من: حقل (b in [البريد الإلكتروني محمي])، تحويلها
إلى حالة صغيرة.
%R موضوع الرسالة الأصلية مع البادئة Re: تم منعه
%S رد: موضوع الرسالة الأصلية
%T وقت آخر تعديل على الملف المرسل بالبريد (الأوامر MESSAGE وNOTIFY)
%U الاسم الكامل للمستخدم
%Y سنة كاملة، مكونة من أربعة أرقام (ما يسمى س س س س شكل)
%_ مسافة بيضاء (مفيدة لوضع المسافات البيضاء في أنماط مفردة)
%& قائمة المحددات التي حدثت فيها تطابق (من بين تلك المحددة عبر ملف عادي
تعبير مثل 'X-*: /foo/i'. إذا وجدنا فو سلسلة فرعية في X-Mailer:
سطر الرأس، ثم سيتم تعيين %& على هذه القيمة). القيم الموجودة في القائمة هي فاصلة
فصل.
%~ حرف فارغ، تم مسحه من السلسلة الناتجة.
%أرقام قيمة المرجع الخلفي المقابل من المباراة الأخيرة.
%#فار قيمة المتغير المحدد من قبل المستخدم فار
%=فار قيمة متغير تكوين mailagent فار كما هو محدد في
~ / .mailagent ملف.
%d يوم من الشهر (01-31)
%e عنوان البريد الإلكتروني للمستخدم (الخاص بك!).
%f محتويات السطر "من:"، مثل %N <%r> أو %r (%N) اعتمادًا على كيفية
تم تكوين المرسل.
%h ساعة من اليوم (00-23)
%i معرف الرسالة، إذا كان متاحًا (وإلا، فهذه سلسلة فارغة)
%l عدد الأسطر في الرسالة، بمجرد إزالة ترميز نقل المحتوى
%m شهر السنة (01-12)
%n اسم تسجيل الدخول للمرسل بأحرف صغيرة
%o منظمة (أين تاجر البريد أشواط)
%r عنوان إرجاع الرسالة
%s موضوع الرسالة الأصلية
%t الساعة والدقيقة الحالية (بتنسيق HH:MM)
%u اسم تسجيل الدخول للمستخدم
%y السنة (آخر رقمين)
%[إلى] قيمة حقل الرأس (هنا إلى:)
تعريف المستخدم وحدات الماكرو
يتيح لك وكيل البريد تحديد وحدات الماكرو الخاصة بك بطريقتين: على مستوى التصفية عبر
أمر MACRO، أو على مستوى Perl في الأوامر الخاصة بك أو إجراءات Perl.
بمجرد تحديد ماكرو المستخدم (على سبيل المثال فو) يمكن استبداله باستخدام %-(فو). في حالة أ
ماكرو أحادي الحرف، يمكن تحسينه ٪-F على سبيل المثال، أي يمكن بين قوسين
يتم حذفها.
هناك ستة أنواع من وحدات الماكرو:
SCALAR يتم إعطاء قيمة عددية، على سبيل المثال: أحمر. قيمة الماكرو هي العددية الحرفية
القيمة، لا يتم إجراء أي تفسير آخر على البيانات.
EXPR سيكون تعبير بيرل وحدة التقييمed للحصول على القيمة، على سبيل المثال: $أحمر. نلاحظ أن
سيتم إجراء التقييم داخل com.usrmac الحزمة، لذلك إذا كنت تشير
لمتغير في حزمة أخرى، سيكون من الحكمة تحديده، كما في
$فوبار.
CONST إنها في الحقيقة نفس قيمة EXPR، ولكن من المعروف أن القيمة ثابتة. لذلك
في المرة الأولى التي يتم فيها الاستبدال، سيتم تقييم التعبير، وبعد ذلك
يتم تخزين نتائجها مؤقتا.
FN اسم دالة Perl (بدون البادئة &)، مثل الشيء الرئيسي هو القيام بهذا.
سيتم استدعاء الدالة بمعلمة واحدة: اسم الماكرو نفسه.
وهذا يترك الباب مفتوحًا لمزيد من الاتفاقيات التي يحددها المستخدم عن طريق الإجبار
التقييم من خلال وظيفة بيرل واحدة.
PROG برنامج يتم تشغيله للحصول على القيمة الفعلية. يتم قطع السطر الجديد الزائد فقط،
والبعض الآخر محفوظ. يتم تشعب البرنامج في كل مرة. في قائمة الوسيطة
المعطى للبرنامج، %n يتم توسيعه كاسم الماكرو الذي نحاول القيام به
يقيم. إذا حددت ذلك في قواعد التصفية، فلا تنس الهروب من
أولاً ٪.
PROGC هو نفسه PROG حقًا، ولكن يتم تشعب البرنامج مرة واحدة فقط ويتم تخزين القيمة مؤقتًا
للاطلاع عليها لاحقا.
على مستوى بيرل، هناك أربع وظائف تتيح لك التعامل مع وحدات الماكرو الخاصة بك وتحديدها (كل جزء من
القادم com.usrmac رزمة):
اسم جديد، القيمة، نوع)
استبدل أو أنشئ ماكرو %-(name). على سبيل المثال:
new('foo', "$mailhook'header{'X-Foo'}", 'EXPR');
من شأنه إنشاء ماكرو جديد فو من شأنها أن تتوسع إلى قيمة افتراضية
اكس فو رأس.
حذف (الاسم)
حذف كافة القيم المسجلة للماكرو.
دفع (الاسم، القيمة، نوع)
قم بتجميع ماكرو جديد، وقم بإنشائه إذا لزم الأمر.
البوب (الاسم) إزالة تعريف الماكرو الأخير على المكدس.
يتم تخصيص مكدس ماكرو واحد لكل ماكرو، بحيث يكون هناك نوع من النطاق الديناميكي الخام
يمكن تنفيذها. إنشاء ماكرو عبر دفع يشبه أخذ متغير محلي في بيرل،
أثناء إنشاء واحد بواسطة جديد يتم ببساطة تعيين لمتغير. محتمل، فرقعة يشبه الخروج أ
كتلة مع تعريف المتغير المحلي و حذف تفرج الكل الماكرو الذي يحمل هذا الاسم،
أي أنه يحذف المكدس بأكمله.
على مستوى عامل التصفية، يحتوي أمر MACRO على ثلاثة خيارات. بشكل افتراضي، يحدد الأمر
ماكرو جديد باستخدام دفع، ويتيح لك كل من الخيارات الأخرى الوصول إلى أحدهما الآخر
وظائف الواجهة. لاحظ أن تعريفات الماكرو تستمر عبر أوامر التطبيق.
تعريف المستخدم تسجيل
في أغلب الأحيان، عند كتابة أمر تصفية mailagent جديد أو خطاف Perl، ستفعل ذلك
لديك حاجة إلى تسجيل محدد، إما للإبلاغ عن مشكلة أو لتتبع ما تقوم به
يؤدون.
عادة، يتم إلحاق السجلات في com.agentlog الملف عن طريق الاتصال &main'add_log(سلسلة) (انظر
القسم الفرعي أسئلة عامة الهدف إجراءات). بالنسبة لإجراءات mailagent العادية، يعد هذا أمرًا جيدًا.
لكن mailagent يتيح لك تحديد ملفات تسجيل بديلة، يشار إليها بالاسم. هذا عام
يتم تعريف واجهة التسجيل في com.usrlog صفقة:
اسم جديد، ملف، علم)
يسجل ملف سجل جديد يعرف باسم الاسم ويتم في ملف. إذا تم إعطاء اسم المسار لـ
هذا الملف ليس مطلقًا، فهو متجذر ضمن ملف com.logdir الدليل. لو علم is
تم تعيينه على "صحيح"، وسيتم أيضًا نسخ أي تسجيل يتم إجراؤه لهذا الملف إلى الوضع الافتراضي
ملف السجل على مستوى النظام. لا يتم فعل أي شيء إذا كان ملف السجل الذي يحمل نفس الاسم موجودًا بالفعل
تم تعريفه.
حذف (الاسم)
يحذف ملف السجل المعروف باسم الاسم. مزيد من التسجيل القيام به لهذا الملف
إعادة التوجيه إلى ملف السجل الافتراضي.
main'usr_log(الاسم، خيط)
يضيف إدخالاً إلى ملف السجل الاسم. يُعرف ملف السجل الافتراضي باسم الافتراضي و
لا يمكن إعادة تعريفها أو حذفها. لاحظ أن هذه الوظيفة متاحة من
رئيسي طَرد. يدعو بها الاسم اضبط على السلسلة 'إفتراضي' هي في معظمها
يعادل الاتصال مباشرة main'add_log مع الاستثناء الملحوظ أن
-i لن يتم تكريم خيار mailagent في هذه الحالة. قد يكون هذا أو لا يكون
مفيدة لك.
إذا اتصلت &main'usr_log باستخدام اسم ملف سجل غير موجود، تتم إعادة توجيه التسجيل إلى ملف
ملف السجل الافتراضي على مستوى النظام المحدد في ملف ~ / .mailagent.
حيوي تحميل جديد رمز
في إجراءات Perl الخاصة بك (الأوامر المحددة من قبل المستخدم، وخطافات Perl، وما إلى ذلك ...)، قد تشعر بالحاجة إلى ذلك
قم بتحميل بعض التعليمات البرمجية الجديدة ديناميكيًا إلى mailagent. لديك إمكانية الوصول المباشر إلى الداخلية
الروتين الذي يستخدمه mailagent لتنفيذ الأمر REQUIRE أو تحميل التصفية الجديدة
الأوامر على سبيل المثال.
باستخدام ما يسمى ب com.dynload الواجهة تشتري لك بعض الميزات الإضافية:
· يتم إضافة مسار المكتبة العامة لـ mailagent تلقائيًا إلى مصفوفة @INC، والتي
يتيح لك تحديد ملفات مكتبة Perl الخاصة بك على مستوى النظام أو الخاصة (ملف
يتم تعريف مسار المكتبة بواسطة بيرليب متغير التكوين، مسار المكتبة العامة
تم تعريفه في وقت التثبيت).
· مثل بيرل تطلب، يقوم mailagent بتتبع الملفات التي تم تحميلها فيها
الحزم ولن يتم إعادة تحميل نفس الملف في نفس الحزمة مرتين.
· من الممكن التأكد من تحديد وظيفة معينة في الملف المحمل،
مع الإبلاغ عن خطأ إذا لم يكن الأمر كذلك.
· أنت تستفيد من التسجيل الافتراضي الذي تقوم به com.dynload عند حدوث بعض الأخطاء.
وللقيام بكل هذا، اتصل بـ:
&dynload'load(حزمة، ملف، وظيفة)
تحديد الحزمة التي ترغب في تحميل الملف فيها، واختياريًا اسم ملف
الوظيفة التي يجب تعريفها بمجرد تحميل الملف (اترك هذا الحقل لـ أونديف if
ليس لديك مثل هذا القيد). يعود الروتين أونديف إذا كان الملف لا يمكن أن يكون
محملة (ملف غير موجود، على الأرجح)، 0 إذا تم تحميل الملف ولكنه يحتوي على بناء جملة
خطأ أو لم يتم تحديد الوظيفة المحددة، و 1 للنجاح.
باستخدام Once Spa أوامر
تتيح لك بنيات ONCE تحديد أمر معين ليتم تشغيله مرة واحدة كل فترة (يوم،
أسبوع...). يتم تحديد الأمر بواسطة أ الاسم و بطاقة، الجمع بين الكائنين
فريد. لماذا لا يكون مجرد معرف واحد؟ حسنًا، سيكون ذلك جيدًا، لكن افترض أنك تريد ذلك
إرسال رسالة للرد على شخص ما مرة واحدة كل أسبوع. يمكنك استخدام عنوان البريد الإلكتروني الخاص بـ
الشخص كمعرف الأمر. ولكن ماذا لو كنت تريد أيضًا إرسال رسالة أخرى إلى
نفس العنوان، هذه المرة مرة واحدة في الشهر؟
فيما يلي استخدام نموذجي لـ ONCE، والذي يعمل مثل برنامج الإجازة، باستثناء
أنه يرسل الرد مرة واحدة فقط يوميًا لعنوان معين:
{ مرة واحدة (%r، رسالة، 1د) رسالة ~/.رسالة };
يعتمد هذا على آلية استبدال الماكرو لإرسال الرسالة مرة واحدة فقط يوميًا
in ~/.رسالة. لا تستخدم العلامة عطلة، إلا إذا كنت تعلم ما تفعله: هذا هو
العلامة المستخدمة داخليًا بواسطة وكيل البريد في وضع الإجازة. أذكر أنه لا يوجد محدد ولا نمط
يُفهم على أنه "الموضوع: *"، وبالتالي يتم تنفيذ القاعدة دائمًا بسبب هذا النمط
يتطابق دائما.
يتم الاحتفاظ بالطوابع الزمنية المرتبطة بكل أمر في ملفات ضمن دليل التجزئة.
يتم استخدام الاسم كمفتاح تجزئة لحساب اسم الملف (الحرفين الأولين
يستخدم). داخل الملف، يتم فرز الطوابع الزمنية حسب الاسم، ثم حسب العلامة. طبعا انت
يمكن أن يقول (عكس العلامة والاسم):
{ مرة واحدة (رسالة، %r، 1d) رسالة ~/.رسالة };
ولكن من المحتمل أن يكون ذلك أقل كفاءة، حيث سيتم إجراء التجزئة الأولى على ملف
كلمة ثابتة، وبالتالي ستكون جميع الطوابع الزمنية موجودة في الملف التجزئة / م / ه (أين مزيج is
اسم دليل التجزئة الخاص بك، وهو مزيج المعلمة في التكوين
الملف).
باستخدام مصطلحات البحث in القيد و التفرُّد
يتيح لك كل من الأمرين RECORD وUNQUE تحديد قائمة علامات مفصولة بفواصل بين '('
و ')'. لكل علامة موجودة في القائمة، هناك إدخال منفصل في قاعدة البيانات
المرتبطة بمعرف الرسالة. عندما يتم تسجيل الرسالة لعلامة واحدة على الأقل،
الأمر "فشل". عدم تحديد أي علامات يعني البحث عن أي حدوث لذلك
معرف الرسالة، سواء تم وضع علامة عليها أم لا.
يعد هذا مفيدًا جدًا عند تلقي البريد المنشور في قوائم بريدية مختلفة وأنت
ترغب في حفظ مثيل واحد للرسالة في كل مجلد، ولكنك لا تزال تتجنب ذلك
التكرارات. يمكنك ان تقول:
إلى نسخة: معالجات يونكس {
فريد (المعالجات)؛
حفظ المعالجات.
يرفض؛
};
إلى نسخة: مستخدمو Majordomo {
فريدة من نوعها (ماجوردومو)؛
حفظ ماجوردومو؛
يرفض؛
};
وسينتهي مثيل واحد فقط من الرسالة في كل مجلد. عندما يكون لديك مجلدات
في حالة وجود اهتمامات متضاربة، يمكنك استخدام قائمة علامات، بدلاً من علامة واحدة. ل
على سبيل المثال، بافتراض أنك ترغب في الاحتفاظ بنسخة واحدة للرسائل التي يتم نشرها بشكل مشترك على كليهما حي-
المستخدمين و مستخدمو الوكيل، ولكن احصل على نسخة منفصلة في حالة إرسالها أيضًا إلى majdomo-users,
ثم قل:
إلى نسخة: مستخدمو Majordomo {
فريدة من نوعها (ماجوردومو)؛
حفظ ماجوردومو؛
يرفض؛
};
إلى نسخة: مستخدمو التوزيع {
فريد (منطقة، وكيل)؛
حفظ مستخدمي التوزيع؛
يرفض؛
};
إلى نسخة: المستخدمون الوكيل {
فريد (منطقة، وكيل)؛
حفظ مستخدمي التوزيع؛
يرفض؛
};
إذا كانت لديك قاعدة ما تستخدم UNIQUE دون أي علامات، فستتطابق عندما تكون واحدة على الأقل
تم تسجيل مثيل الرسالة، بغض النظر عن العلامة (إن وجدت) التي تم استخدامها فيها
المكان الأول.
تحديد A فترة
معلمة الفترة لأوامر ONCE أو فترة النقاهة معلمة التكوين الخاص بك
يحتوي الملف على التنسيق التالي: رقم متبوعًا بالمُعدِّل. المعدل هو ذري
مثل يوم أو أسبوع، العدد هو عدد الفترات الذرية في الفترة النهائية
يجب أن يكون مساويا ل. المعدلات المتاحة هي:
م دقيقة
ساعة (60 دقيقة)
د يوم (24 ساعة)
الأسبوع (7 أيام)
شهر (30 يومًا)
السنة (365 يومًا)
يتم تحويل جميع الفترات داخليًا بالثواني، على الرغم من أنك لا تهتم حقًا...
تتراوح أمثلة الفترات الصالحة من "1m" إلى "136y" على جهاز 32 بت (لماذا؟).
مهلة
من أجل تجنب وجود تاجر البريد انتظار الأمر إلى الأبد، أقصى قدر من التنفيذ
يُسمح بوقت ساعة واحدة افتراضيًا. وبعد مرور هذه المدة من الوقت، يتم إرسال الطفل أ
إشارة سيجتيرم. إذا لم يموت خلال الـ 30 ثانية التالية، فسيتم إرسال SIGKILL. انتاج |
من البرنامج، إن وجد حتى الآن، يتم إرساله بالبريد مرة أخرى إلى المستخدم. قد يكون هذا السلوك الافتراضي
يمكن تغييرها عن طريق وضع السليم com.runmax متغير في ملف التكوين الخاص بك للسماح بالمزيد
الوقت لإكمال الأمر.
هنالك أيضا تصفية مهلة قائمة الانتظار. من أجل تخفيف تحميل النظام، تم استخدام C تصفية
ينتظر البرنامج 60 ثانية افتراضيًا (أو أيًا كان queuewait تم تعيينه في ملف التكوين)
قبل الانطلاق تاجر البريد. لتجنب التعارضات، يتم وضع الرسائل في قائمة الانتظار بواسطة عامل التصفية الأول (والذي
سوف ينام بعد ذلك queuewait ثواني) لا تتم معالجتها بواسطة تاجر البريد's -q الخيار حتى
هم على الأقل قائمة الانتظار ثواني قديمة. المعلمة الأخرى المتعلقة بقائمة الانتظار هي قائمة الانتظار, القادم
مقدار الثواني بعد ذلك تاجر البريد سيتم وضع علامة على الرسائل على أنها "مفقودة" عند إدراجها
طابور.
وأخيرًا، قد يتم أيضًا تكوين سياسة مهلة التأمين. بشكل افتراضي، القفل مكسور
عندما يبلغ عمره ساعة واحدة (تم تكوينه بواسطة lockhold متغير) و تاجر البريد سوف تجعل فقط
com.lockmax محاولات، متباعدة lockdelay ثواني للحصول على القفل. ثم سيتم المضي قدما
سواء حصلت على هذا القفل أم لا. إذا كنت تريد سياسة قفل آمنة، تأكد com.lockmax
مرات lockdelay أكبر من lockhold، هذه المعلمة "كبيرة" بدرجة كافية.
تجنب الحلقات
ال تاجر البريد يترك رأس "X-Filter:" على كل رسالة تمت تصفيتها، والتي بدورها يتم استخدامها
للكشف عن الحلقات. إذا كانت هناك رسالة تمت تصفيتها بالفعل لتتم معالجتها، فسيتم تاجر البريد يدخل أ
حالة خاصة _SEEN_. وهذه الحالة خاصة بمعنى أنها مدمجة فيها، وليست متطابقة
بواسطة ALL، ولا يتم توفير بعض الإجراءات، وهي: BACK، BOUNCE، FEED، FORWARD،
إعطاء، إخطار، تمرير، تمرير، نشر، تنقية، قائمة الانتظار والتشغيل. لاحظ أيضًا أنه على الرغم من أن مرة واحدة
وتم تمكين بنيات SELECT، فلن تسمح لك بتنفيذ الأوامر غير المسموح بها.
بخلاف ذلك، فإن حالة _SEEN_ تتصرف مثل أي حالة أخرى يمكنك تحديدها أو إبطالها، لذلك أ
لن يقوم الحارس بتحديد القاعدة عندما نكون في حالة _SEEN_.
تسهل حالة _SEEN_ التعامل مع رسائل البريد الإلكتروني التي يتم تكرارها بسبب اسم مستعار
لا تملك السيطرة على. إذا لم يتم العثور على أي إجراء في حالة _SEEN_، فسيتم ترك البريد في الحالة
صندوق البريد، كالعادة. علاوة على ذلك، إذا لم يتم إجراء أي حفظ، فسيتم تنفيذ الإجازة. هذا هو الطبيعي
السلوك.
تتم إضافة رأس "X-Filter:" فقط عند حفظ الرسالة. إجراءات مثل PIPE أو
GIVE لا تضع علامة على الرسالة على أنها محفوظة ولذلك يقومون بذلك ليست أضف هذا الرأس
خط. يمكنك إضافة واحدة عبر ANNOTATE إذا كنت ترغب في منع الحلقات، في حالة قيام البرنامج بذلك
الذي تقوم بتغذيته بالرسالة قد يعيدها إليك بطريقة غريبة.
الرسالة ملفات
تتم قراءة نص الرسالة التي سيتم إرسالها مرة أخرى (للرسالة أو الإخطار) من ملف و
مرت من خلال آلية استبدال الماكرو. الماكرو الخاص %T تم ضبطه على التاريخ
التعديل الأخير الذي تم إجراؤه على هذا الملف. التنسيق هو يوم الشهر، ويتم إضافة السنة
قبل الشهر فقط إذا كان يختلف عن العام الحالي.
في رأس الرسالة، يمكنك وضع أسطر رأسية. هذه الخطوط سوف تحل محل
الخطوط الموردة الافتراضية. قد يكون ذلك مفيدًا لتغيير الموضوع الافتراضي أو إضافة بعض المواضيع
حقول إضافية مثل اسم مؤسستك. يتم إعطاء نهاية رأسك بواسطة
تمت مواجهة أول سطر فارغ. إذا كان الجزء العلوي من الرسالة التي ترغب في إرسالها يبدو مثل
رأس البريد، يمكنك حمايته عن طريق إضافة سطر فارغ في أعلى الملف. هذا
ستتم إزالة السطر الوهمي من الرسالة وسيتم إرسال الملف بأكمله كنص أساسي
جزء.
فيما يلي مثال لملف الإجازة. نضيف نسخة كربونية بالإضافة إلى اسمنا
التنظيم في الرأس:
نسخة: ذاكرة الوصول العشوائي
المنظمة:٪ o
الأسبقية: السائبة
[آخر مراجعة تم إجراؤها على %T]
عزيزي %N:
لقد تلقيت رسالتك بخصوص "%R".
سأقرأه فور عودتي من الإجازة.
مع خالص التقدير والاحترام،
--
%U <%u@%C>
عطلة MODE
عندما يحين وقت أخذ إجازة، من الممكن إعداد وكيل البريد في وضع الإجازة.
كل ما فترة النقاهة، الرسالة vacfile سيتم إرسالها مرة أخرى إلى المستخدم (مع وحدات الماكرو
البدائل) إذا تم إدراج المستخدم بشكل صريح في إلى or Cc الحقل وإذا كان المرسل
ليس مستخدمًا خاصًا (جذر, uucp, أخبار, الخفي, مدير البريد, مدير الأخبار, من الأعضاء, مراسل رقمي-
الخفي, وكيل البريد or لا أحد). تتم المطابقات بطريقة غير حساسة لحالة الأحرف، لذلك
الارسال الخفي سيتم التعرف عليه أيضًا كمستخدم خاص. وعلاوة على ذلك، أي رسالة الموسومة
مع الأولوية: تعيين الحقل ل الجزء الأكبر, الإدارية or خردة لن يؤدي إلى ظهور رسالة إجازة.
يمكن بالطبع تحميل هذا السلوك المدمج بقواعد مناسبة (عن طريق الاختبار و
إصدار رسالة الإجازة بنفسك عبر MESSAGE).
داخليًا، يستخدم mailagent الأمر ONCE الموسوم (%ص، أجازة، $vacperiod). هذا يعني
يجب عليك عدم استخدام عطلة ضع علامة في أوامر ONCE الخاصة بك، إلا إذا كنت تعرف من أنت
به.
علاوة على ذلك، يتم إرسال رسالة الإجازة فقط في حالة عدم إصدار أوامر "إيقاف الإجازة"، أو
إذا قام "VACATION on" آخر بالكتابة على السابق. لاحظ أنه سواء كانت القاعدة متطابقة أو
not لا علاقة له بالخوارزمية. بشكل افتراضي، بالطبع، يتم السماح برسالة الإجازة
عندما عطلة تم تعيين معلمة التكوين على on.
إذا لم تكن راضيًا عن حقيقة إرسال رسالة الإجازة إلى الأشخاص الذين خاطبوا
لديك نسخة كربونية فقط، ثم يمكنك الكتابة في أعلى ملف القاعدة الخاص بك:
نسخة إلى: ذاكرة الوصول العشوائي {VACATION off؛ يرفض }؛
بالطبع، يجب عليك استبدال اسم تسجيل الدخول الخاص بك بدلاً من ذاكرة الوصول العشوائي. لا يمكنك استخدام ملف
نفس المخطط للسماح برسائل الإجازة للمستخدمين المميزين مثل جذرلأن الاختبار ل
يحدث "التخصص" بعد علامة وضع الإجازة. يتم تفسير هذا على أنه ميزة كما هو
يمنع الأخطاء الغبية، مثل استخدام r* بدلا من ذاكرة الوصول العشوائي في القاعدة السابقة.
قد ترغب أيضًا في إعداد رسالة إجازة مختلفة، مخصصة فقط للأشخاص الموجودين في منطقتك
المنظمة نظرا للطبيعة الحساسة للمعلومات التي تم الكشف عنها ؛-). طريقة بسيطة ل
القيام بذلك هو:
من: /^\w+$/, /^\w+@\w+$/, /^[\w.-]+@.*\.hp\.com$/i
{ أجازة ~/.hp_vacation 1 واط؛ رفض HP };
على افتراض أن مجال مؤسستي هو .hp.com وأن الرسائل لا تحمل أي مجال
هي رسائل محلية، فالقاعدة المذكورة أعلاه تقوم بإعداد الملف ~/.hp_vacation، يتم إرساله مرة واحدة في الأسبوع، ل
جميع موظفي HP.
لن يسمح لك الأمر VACATION بتغيير مسار الرسالة (ولكنه سيسمح بالتردد
يتغير على أي حال) عندما vacfixed تم ضبط متغير التكوين على ON. هذا هو المقصود أن يكون
تستخدم في حالات الطوارئ، عندما تكون رسالة إجازة واحدة فقط مناسبة. على سبيل المثال، متى
أنت في إجازة مرضية، قد تتغير رسالة تنبيه بسيطة إلى وكيل البريد الخاص بك من المنزل
لك ~ / .mailagent التكوين لإجبار ~/.i_am_sick الرسالة، بغض النظر عن ما
قواعد مختلفة يجب أن أقول. في الواقع، هذا هو بالضبط سبب إضافة هذه الميزة،
مدهش... :-)
المتغيرات
يتم الاهتمام بالمتغيرات التالية: قد تأتي من البيئة أو تكون
المحددة في ملف القاعدة:
مرشح البريد
يشير إلى المكان الذي سيتم البحث فيه عن الأنماط المحملة، إذا كان اسم الملف
غير مؤهل بشكل كامل. إذا لم يتم تعيينه، هو البريد سيتم استخدامها بدلا من ذلك. لو هو البريد
لم يتم تعيينه أيضًا، فسيتم استخدام الدليل الرئيسي.
هو البريد هو موقع مجلدات البريد الخاص بك. يُفهم أي مسار نسبي على أنه
يبدأ من هو البريد. إذا لم يتم تعيينه، ~ / بريد .
تظل هذه المتغيرات نشطة أثناء وجودها في نطاق ملف القاعدة. ينبغي البديل
يتم استخدام ملف القاعدة (عبر ربط القواعد أو الأمر APPLY)، ويتم نشر القيم الحالية
إلى مجموعة القواعد الجديدة ما لم يتم تجاوزها في ملف القاعدة البديل. وعلى أية حال فإن
تتم استعادة القيمة السابقة عندما يتم نقل التحكم مرة أخرى إلى مجموعة القواعد السابقة.
أي أن هذه المتغيرات يتم تحديد نطاقها ديناميكيًا بدلاً من تحديد نطاقها بشكل ثابت.
أوتوماتيك شكر وتقدير
في أي مكان في البريد، يمكن أن يكون هناك خط @RR مضبوط على اليسار والذي سيرسل رسالة مرة أخرى
إقرار لمرسل البريد. يمكن أن يتبع @RR اختياريًا حرف
العنوان، وفي هذه الحالة سيتم إرسال الإقرار إلى ذلك العنوان بدلاً من ذلك. في الحقيقة
(لكن دعونا نبقي ذلك سرا)، هذه هي الطريقة التي أتمكن من خلالها من معرفة من يدير موقعي
برنامج mailagent ومن لا...
ال ارسل بريد عادةً ما ينفذ البرنامج مثل هذه الميزة عبر رأس Return-Receipt-To:
الخط الذي يرسل الرأس بأكمله مرة أخرى عند التسليم الناجح. ومع ذلك، هذا ليس كذلك
يتم تنفيذه على كافة وكلاء نقل البريد، ويعتبر @RR بديلاً جيدًا :-).
ملاحظة بيني
طوال هذه الصفحة اليدوية، كنت أكتب دائمًا حقول رأسية بالحرف الأول من
كل كلمة كبيرة، كما في عودة الإيصال إلى. لكن RFC-822 لا يفرض هذا الإملاء
الاتفاقية، ويمكن لمرسل البريد إعادة كتابة الحقل السابق بشكل قانوني كـ إيصال العودة إلى
(وفي الواقع كذلك ارسل بريد في ملفات قائمة انتظار البريد الخاصة به).
ومع ذلك، يجب عليك دائمًا تحديد الرؤوس فيما يمكن تسميته بـ a تطبيع حقيبة
(للرؤوس على أي حال). سوف يتعرف وكيل البريد بشكل صحيح نسخة إلى:, CC: or نسخة إلى: في البريد
الرسالة وستسمح لك بتحديد هذه الحقول عبر الخيار الطبيعي نسخة إلى: محدد. في
في الواقع، فإنه يعمل على التطبيع بالنسبة لك، و نسخة إلى: لن يتم التعرف على المحدد
هذه. وبطبيعة الحال، لم يتم إجراء أي تغيير مادي على الرأس نفسه.
وينطبق هذا أيضًا على الرؤوس المحددة في أمر STRIP أو KEEP. إذا كتبت قطاع
Cc، سيتم إزالة أي منها بشكل صحيح نسخة إلى: خط. وبالمثل، إذا كنت تستخدم التعبيرات العادية ل
تحديد محدد، يكرر.*: سوف تتطابق مع كل من الأصلي تم الاستلام: و مسار العودة: مجالات،
معروفة داخليًا من خلال تمثيلها الطبيعي.
MAIL HOOKS
تسمح خطافات البريد لـ mailagent باستدعاء بعض البرامج النصية بشفافية أو تنفيذ المزيد
المعالجة على الرسالة. يتم تنشيط هذه الخطافات عبر الحفظ أو التخزين أو المغادرة
الأوامر. وهي أن الحفظ في مجلد تم تعيين البت القابل للتنفيذ الخاص به سيؤدي إلى رفع ملف خاص
يعالج. افتراضيًا، يتم أخذ المجلد كبرنامج حيث يجب إرسال البريد عبر الأنابيب
ل. إذا قام برنامج "المجلد" بإرجاع حالة صفر، فسيتم أخذ الرسالة في الاعتبار تم الحفظ by
وكيل البريد. وإلا، فسيتم بدء كافة عمليات المعالجة المرتبطة بأوامر الحفظ الفاشلة
(بما في ذلك محاولات الإنقاذ في حالات الطوارئ). توفر المجلدات القابلة للتنفيذ طريقة شفافة (من
وجهة نظر ملف القاعدة) للتعامل مع نوع خاص من الرسائل.
في الواقع، تتوفر خمسة أنواع مختلفة من الخطافات. الأول هو السهل
المجلد القابل للتنفيذ الذي تحدثنا عنه للتو. ولكن في الواقع، هذا ما يحدث بالفعل عندما
يكتشف أمر الحفظ مجلدًا قابلاً للتنفيذ: يقوم وكيل البريد بفحص السطر الأول من الملف
المجلد (في الواقع، أول 128 بايت) ويبحث عن شيء يبدأ بـ #: و
متبوعة بكلمة واحدة تصف نوعًا خاصًا من الخطاف. وهذا مشابه في الطريق
تتعامل النواة مع #! ربط في البرامج القابلة للتنفيذ. إذا لم يتم العثور على #: أو #: موجود
تليها بعض القمامة، ثم تاجر البريد يقرر أنه برنامج بسيط ويقوم بتغذية البريد
رسالة إلى هذا البرنامج. نهاية القصة.
ولكن إذا تم اتباع الرمز #: (المسافات مسموح بها، حالة الأحرف غير ذات صلة) بواسطة أحد الرموز
الكلمات التالية، ثم يتم اتخاذ الإجراءات الخاصة:
القواعد يحتوي الملف على مجموعة من قواعد وكيل البريد التي سيتم تطبيقها. وكيل بريد جديد
يتم إنشاء العملية للتعامل فعليًا مع هؤلاء ويتم نشر حالة الخروج
العودة إلى وكيل البريد الأصلي.
التدقيق وهذا مشابه من حيث الروح لما تفعله حزمة Audit.pl الخاصة بـ Martin Streicher،
ومن هنا اسم هذا الخطاف. المتغيرات الخاصة التي تم إعدادها بواسطة PERL
تتم تهيئة أوامر التصفية ويتم تحميل البرنامج النصي في ملف خاص com.mailhook
مساحة اسم الحزمة، والتي تمنحك أيضًا واجهة خاصة بوكيل البريد
إجراءات. يمكنك استخدام بأمان خروج وظيفة هنا، منذ اضافية شوكة is
منتهي. هذا هو الفرق الوحيد بين التدقيق و بيرل صنارة صيد.
نقل نفس الشيء بالنسبة ل التدقيق ربط، ولكن الإخراج القياسي للبرنامج النصي الخاص بك هو
ترصدها تاجر البريد ويُفهم على أنه أوامر تصفية mailagent. على
عودة ناجحة، سيتم استدعاء عملية وكيل البريد لتنفيذ تلك العملية بالفعل
الأوامر الموجودة على الرسالة مرة أخرى، هذا مشابه من حيث الروح لروح تشيب سالزنبرج
نقل الحزمة وأعطى اسم هذا الخطاف.
بيرل هذا الخطاف هو نفسه التدقيق ولكن يتم تنفيذه دون تفرع جديد
mailagent، ولديك واجهة Perl لأوامر التصفية الخاصة بـ mailagent.
لا يوجد فرق بين أمر PERL لأنه يتم تنفيذه
الطريقة، عن طريق استدعاء وكيل بريد وإجبار أمر PERL على التنفيذ. هذا هو
مشابه في الروح لروح لاري وول الشهيرة بيرل اللغة وهي المسؤولة عنها
اسم هذا الخطاف :-).
كما ذكرنا سابقًا في هذه الصفحة اليدوية، يتم استدعاء الخطاف من ملف الصفحة الرئيسية دليل
المحدد في الخاص بك ~ / .mailagent (والذي قد يختلف عن دليل منزلك الحقيقي، بقدر ما
تاجر البريد or com.mailhook نشعر بالقلق).
بالنسبة لتلك الخطافات التي يتم تشغيلها أخيرًا بواسطة Perl، فإن مصفوفة @INC الخاصة بها مصفوفة وكيل البريد الخاصة بها
مسار المكتبة الخاصة مُلحق به، لذلك تطلب النظرة الأولى في هذا المكان.
المجلدات
المجلد هو ملف أو دليل يمكن أن يكون هدفًا للتسليم بواسطة وكيل البريد،
وهذا يعني حجة الأوامر المشابهة للحفظ.
مجلد شكل
افتراضيًا، تتم كتابة الرسائل في مجلدات وفقًا لصندوق البريد القياسي بنمط UNIX
التنسيق: يبدأ كل بريد بحرف بادئ من سطر يحمل عنوان المرسل و
تاريخ. ومع ذلك، من خلال تحديد mmdf المعلمة من ~ / .mailagent إلى ON، تاجر البريد
سيكون قادرًا على حفظ الرسائل بتنسيق MMDF: كل رسالة تقع بين سطرين
من أربعة أحرف Ctrl-A (رمز ASCII 1) والبادئة من تتم إزالة الخط.
عند تنشيط وضع MMDF، سيتم فحص كل مجلد لمعرفة ما إذا كان من نمط UNIX أم لا
سيتم حفظ صندوق البريد بنمط MMDF والرسالة وفقًا لذلك. عند الحفظ إلى جديد
المجلد، الافتراضي هو إنشاء صندوق بريد بنمط UNIX، ما لم يكن mmdfbox ترتيب
تم ضبط المتغير على ON، وفي هذه الحالة يسود تنسيق MMDF.
لاحظ أن تنسيق MMDF هو أيضًا المعيار للمجلدات المعبأة MH، لذلك من خلال تمكين
في وضع MMDF، يمكنك فعليًا التوصيل مباشرة إلى تلك المجلدات المعبأة. أمر MH المؤتمر الوطني العراقي
قادر على دمج البريد من أي من النموذجين على أي حال، أي أنه لا يهم ما إذا كان
المجلد بتنسيق UNIX (يُسمى أيضًا نمط UUCP) أو بتنسيق MMDF.
يتم أيضًا دعم المجلدات ذات نمط MH. وهو في الأساس دليل يتم فيه تخزين الرسائل
في الملفات الفردية. للحفظ مباشرة في مجلد MH، ما عليك سوى وضع بادئة لاسم المجلد
باستخدام "+"، تمامًا كما تفعل مع أوامر MH. التسلسلات غير المرئية المحددة في ملفك
ملف تعريف MH ( com.mhprofile المعلمة في ملف ~ / .mailagentالافتراضي هو ~ / .mh_profile) سوف
يتم تحديثها بشكل صحيح، كما com.rcvstore سيكون.
عندما يكون المجلد الهدف دليلاً، يحاول mailagent التسليم بشكل فردي
ملف مرقم. في حالة وجود ملف بادئة (معلمة التكوين msgprefixالافتراضي هو
.msg_prefix)، يتم استخدام السطر الأول لتحديد الاسم الأساسي للرسالة، ثم أ
يتم إلحاق الرقم لإعطاء اسم ملف الرسالة المراد استخدامه. وهذا هو، إذا لم يكن هناك
مثل هذا الملف، سيبدو المجلد مثل ملف MH، بدون أي ملف تسلسل MH.
مجلد ضغط
إذا كان لديك واحدة أو أكثر من الأدوات المساعدة لضغط الملفات المتوفرة على نطاق واسع مثل
ضغط or GZIP في PATH الخاص بك (كما تم إعداده بواسطة ~ / .mailagent)، فقد ترغب في استخدام المجلد
الضغط لتوفير بعض مساحة القرص، خاصة عندما تكون بعيدًا لبعض الوقت ولا تفعل ذلك
تريد أن ترى بريدك يملأ نظام الملفات.
لتحقيق ضغط المجلد، يجب عليك إعداد ملف، المشار إليه بواسطة ضغط
متغير التكوين. يجب أن يسرد هذا الملف أسماء المجلدات، واحد في كل سطر، مع أسطر فارغة
تم تجاهلها والسماح بالتعليقات ذات نمط الصدفة (#). يمكنك استخدام أنماط نمط الصدفة لتحديدها
المجلدات، وستتم محاولة المطابقة على اسم المسار الكامل للمجلد (~
يحدث الاستبدال). إذا لم تقم بتحديد نمط يبدأ بالبادئة "/"
حرف، فستتم محاولة المطابقة على الاسم الأساسي للمجلد (أي الأخير
مكون مسار المجلد). إذا كنت تريد ضغط كافة المجلدات الخاصة بك، فما عليك سوى وضع ملف
واحد "*" داخل هذا الملف.
يستخدم Mailagent ملحق اسم الملف لتحديد نظام الضغط المستخدم لملف
مجلد معين. الملف المشار إليه من قبل com.compspecs متغير التكوين (افتراضي
يتم استخدام $spool/compressors) لتحديد الأوامر التي سيستخدمها وكيل البريد لتنفيذها
عمليات الضغط وفك الضغط والقط لامتداد معين.
ال الضواغط يحتوي الملف على أسطر من النموذج التالي:
بطاقة تمديد compress_prog uncompress_prog cat_prog
حيث:
بطاقة هو الاسم المنطقي لنظام الضغط. هذا هو عادة نفس
اسم البرنامج المستخدم لتوفير الضغط، ولكنه قد يكون مختلفًا
لسبب غير متوقع. يجب أن يكون هذا فريدًا عبر كافة السجلات الموجودة في الملف.
تمديد هو الامتداد الذي يجب التعرف عليه باعتباره ينتمي إلى العلامة المحددة. هذا يجب أن يكون
فريد عبر كافة السجلات في الملف.
compress_prog
هو اسم الأمر الذي سيتم تشغيله لضغط مجلد. يجب على البرنامج
استبدل الملف غير المضغوط بالملف المضغوط ذو الامتداد
تم إلحاقه باسم الملف (مثل ضغط or GZIP).
uncompression_prog
هو اسم الأمر الذي سيتم تشغيله لفك ضغط مجلد. يجب على البرنامج
استبدل الملف المضغوط بالملف غير المضغوط بدون الامتداد
(مثل فك الضغط or Gunzip).
cat_prog هو اسم الأمر لإخراج المحتويات غير المضغوطة لملف مضغوط
مجلد إلى stdout (مثل زكات or com.gzcat).
يتم فصل الحقول عن طريق TABS للسماح باستخدام أحرف المسافة في الأمر
الحقول.
إذا كان الملف المشار إليه بواسطة com.compspecs لا يمكن الوصول إلى متغير التكوين
مهما كان السبب، يتم إدخال الإدخال الافتراضي في mailagent (يعرف كليهما ضغط
و GZIP البرامج):
ضغط .ز ضغط فك الضغط zcat
com.gzip .gz com.gzip com.gunzip بندقية -ج
إذا كنت ترغب في إضافة المزيد من الضواغط، يمكنك نسخ الافتراضي الضواغط ملف من
دليل المكتبة الخاصة لـ mailagent وقم بإعداد الإدخال الصحيح للبديل الخاص بك
ضاغط. ضع في اعتبارك أن الامتداد اللاحق يجب أن يكون فريدًا من بين جميع الامتدادات
البرامج المدرجة، حيث يتم استخدام هذا الامتداد لتحديد نوع الضغط
يتم تنفيذها على المجلد.
إذا تم إنشاء المجلد بدون أي نموذج مضغوط موجود، فسيتم استخدام ضاغط افتراضي
تم تحديده لك، كما هو محدد بواسطة com.comptag متغير التكوين. ويشير ذلك إلى
اسم العلامة ل com.compspecs file، أي الكلمة الأولى في السطر (عادةً ما يكون اسم ملف
برنامج الضغط، ولكن ليس بالضرورة).
عند محاولة التسليم، سيقوم mailagent بالتحقق من اسم المجلد مقابل قائمة المجلدات
الأنماط في الملف المضغوط. إذا كان هناك تطابق، فسيتم وضع علامة على المجلد على أنه مضغوط.
ثم يحاول mailagent إلغاء الضغط إذا كان هناك بالفعل نموذج مضغوط (أي الملف
له امتداد اسم ملف معروف) وفي حالة عدم وجود نموذج غير مضغوط. التسليم هو
ثم انتقل إلى المجلد غير المضغوط. ومع ذلك، لا تتم إعادة الضغط على الفور،
نظرًا لأنه لا يزال من الممكن إرسال الرسائل إلى هذا المجلد في دفعة واحدة.
إذا أصبحت مساحة القرص ضيقة للغاية بحيث أصبح من المستحيل إلغاء ضغط المجلدات الأخرى،
سيقوم mailagent بإعادة ضغط المجلدات التي تم فك ضغطها بالفعل. وإلا فإنه ينتظر
حتى آخر لحظة.
إذا كان هناك مجلد مضغوط لا يمكن فك ضغطه، لسبب ما، فإن mailagent
سوف يقوم بتسليم البريد إلى المجلد العادي. سيتم مواجهة مزيد من التسليم إلى هذا المجلد
مع كل من الإصدار المضغوط والإصدار العادي من المجلد، وسيؤدي ذلك إلى تحذيرك
في ملف السجل، ولكن سيتم التسليم تلقائيًا إلى الملف العادي.
في المجلدات التي تم إنشاؤها حديثًا com.comptag يتم الرجوع إلى متغير التكوين لتحديد
نوع الضغط الذي سيتم استخدامه للمجلد.
MAIL BIFFING
إذا كنت تتلقى البريد وتعالجه على جهازك الخاص، فيمكنك الوصول إليه
البريد المحلي حيث تاجر البريد يمكن أن يحذرك بشأن الرسائل الجديدة ويخبرك عنها
حيث تم حفظها، وطباعة مجموعة فرعية صغيرة من الرأس والأسطر القليلة الأولى
من الجسم.
لاستخدام biffing، كل ما تحتاجه هو إعداد معلمات biff القليلة في ملفك
~ / .mailagent وتأكد بيف تم ضبطه على ON. في الواقع، هذه هي المعلمة الوحيدة لك
تحتاج إلى ضبط للحصول على الحد الأدنى من السلوك الافتراضي. لا تنس تشغيل الصدفة
يأمر "بيف y" على المحطات الطرفية التي تريد تلقي الإشعارات فيها (يمكنك القيام بذلك على
عدة ttys، واحدة لكل شاشة افتراضية على سبيل المثال).
عند استلام البريد وحفظه في مجلد أو النشر في مجموعة أخبار، تاجر البريد يحدد
جميع ttys حيث قمت بتسجيل الدخول، ثم حدد تلك التي تم طلب biffing،
أخيرًا إرسال رسالة وإصدار صوت تنبيه (إذا كان جهازك الطرفي يدعم هذا و
أنت تستخدم التنسيق القياسي--انظر أدناه).
تخصيص التقطيع الناتج
إذا كان التنسيق الافتراضي لا يناسب احتياجاتك، فيمكنك تخصيص رسالة التقطيع
بحرية، وتحديد com.biffmsg المعلمة للإشارة إلى الملف حيث تم تخزين التنسيق.
سيتم إجراء عمليات استبدال وحدات الماكرو القياسية على رسالتك، وهي مجموعة الماكرو التالية
استبدال وإكمال المجموعة القياسية:
%-A مثل كتابة %-H، سطر جديد، %-B
%-B الجزء الأساسي من الرسالة المقسمة، مع إزالة ترميز نقل المحتوى.
إذا كانت الرسالة عبارة عن MIME متعددة الأجزاء، فسيتم عرض الجزء النصي/العادي. لو فقط أ
يتوفر جزء النص/html، ويتم تجريد علامة HTML من أجل التقسيم.
%-H الجزء الرئيسي من الرسالة المقسمة. إذا تم عرض من:، إلى: الموضوع: و فقط
التاريخ: الرؤوس، أو أي شيء قمت بتعيينه biffhead متغير التكوين ل.
يتم عرض كافة الرؤوس كسطر واحد من النص، بغض النظر عن طولها الفعلي.
سيكون هناك ثلاث نقاط زائدة في النهاية للإشارة إلى حدوث الاقتطاع.
بالنسبة لمقالة إخبارية (يتم التصفح بعد POST -b)، لا يتم استخدام الحقلين To: وCc: أبدًا
مبين، حتى لو كان محددا في biffhead.
%-T مثل %-B، ولكن تم تنشيط التشذيب. والغرض من التشذيب هو إزالة أي
الاقتباس الرئيسي في الرسالة، للحصول على الجزء الأكثر أهمية فقط. هذا
يفترض أن حرف الاقتباس هو حرف واحد غير أبجدي رقمي. ال
يمكن أيضًا إزالة خط الإسناد الرئيسي الذي قد يقدم الاقتباس،
ويمكن تعيين الحد الأدنى لطول عرض الأسعار في ملف التكوين.
%B المسار النسبي ضمن %d لمجلد الرسائل، المسار الكامل (%p) إذا لم يتم حفظه
تحت هذا الدليل. اسم مجموعة الأخبار للمقالات الإخبارية.
%D الدليل الذي تم تخزين الرسالة فيه. إذا كان مجلد MH، فهذا هو المجلد
مسار كامل. يتم استبدال الدليل الرئيسي بـ ~. فارغة للمقالات الإخبارية.
%F الاسم الأساسي (مكون المسار الأخير) للرسالة. بالنسبة لرسالة MH، هذا هو
رقم الرسالة. فارغة للمقالات الإخبارية.
%P مسار المجلد. يحتوي على الدلالات الصحيحة لمجلدات MH والدليل، أي
يشير إلى دليل المجلد نفسه. بخلاف ذلك، نفس %p.
%a أحرف التنبيه (^G). وقد تتوسع إلى أكثر من واحدة تحت سيطرة
أمر تصفية BEEP. استخدم %b إذا كنت تريد جرسًا واحدًا فقط.
%b حرف تنبيه (^G). على عكس %a، هذا يتوسع فقط ليعطي صورة واحدة؟ جرس.
%d المسار الكامل حيث يتم تخزين المجلدات مثل المجلد الذي تم حفظه فيه، إذا لم يكن الأمر كذلك
مؤهل (أي مسار MH الخاص بك لمجلدات MH، أو شيء من هذا القبيل ~ / بريد لغيرها
المجلدات). فارغة للمقالات الإخبارية.
%f المجلد الذي تم حفظ البريد فيه، وتم استبدال home بـ ~ للاختصار. مجموعة الأخبار متى
تم نشر المقال للحصول على الأخبار.
%m علامة '+' إذا كان المجلد من فئة MH، وإلا فهي فارغة.
%p اسم المسار الكامل (مثل %f) للرسالة، ولكن بدون أي اختصار ~. ال
اسم مجموعة الأخبار للمقالات الإخبارية.
%t نوع الرسالة: عادة "بريد"، ولكن تم ضبطها على "مقال" للتصفح بعد أ
أمر ما بعد.
يمكنك الحصول على توسيع الماكرو القياسي باستخدام ٪:F على سبيل المثال، منذ %f ماكرو هو
حلت محلها. ال %: يتيح لك النموذج الحصول على تعريف الماكرو القياسي على أي حال، بغض النظر
ماذا، لذلك لا يتعين عليك أن تتذكر ما إذا كان قد تم استبدال ماكرو معين في هذا السياق أم لا
لا. علاوة على ذلك، فهو أكثر أمانًا حيث يمكن إضافة وحدات ماكرو جديدة هنا دون سابق إنذار. لاحظ أن
تبدأ جميع وحدات الماكرو المتعلقة بمحتوى الرسالة %- وبالتالي لا تتعارض
مع معيار واحد.
إليك التنسيق الذي تحتاج إلى استخدامه للحصول على نفس سلوك السلك الثابت الافتراضي
شكل:
%b
وصل %t جديد لـ %u إلى %f:
----
٪-أ
----٪ب
لاحظ أن السلسلة ...أكثر... يظهر في نهاية الجسم عندما لا يكون
مطبوعاً بالكامل على الشاشة، والأسطر المتبقية ليست فارغة أو متشابهة.
زركشة قيادة اقتباس
إنها ممارسة معتادة، عند الرد على رسالة، تضمين مقتطف من الرسالة
الجمل التي يتم الرد عليها، باستخدام حرف غير أبجدي رقمي مثل ">" للبادئة
السطور المقتبسة. شيء مثل:
نقلا عن جون دو:
> هذه مادة مقتبسة.
> سطر آخر من بريد جون.
وهذا جزء من الرد على يوحنا.
خط "الاقتباس..." الرئيسي، يسمى عزو الخط، اختياري ويمكن أن يكون
مفقود أو اتخاذ شكل حر آخر.
ومع ذلك، عند الاستنشاق، قد يُنظر إلى هذا على أنه ضجيج عديم الفائدة، خاصة في الوقت الحاضر حيث يكون الناس
اقتبس بحرية المزيد والمزيد في ردودهم. نظرًا لأن رسالة biff تظهر فقط الجزء العلوي
أسطر الرسالة، قد يكون من المرغوب فيه قطع تلك الأسطر المقتبسة تلقائيًا.
عن طريق %-T ماكرو بتنسيق biff مخصص، يمكنك طلب قطع المسافة البادئة
مادة الاقتباس، والحفاظ على سطر الإسناد أم لا، وحتى استبدال المواد المقتطعة
مع إشعار بأنه تمت إزالة العديد من الأسطر.
كل هذا التخصيص يتم من ~ / .mailagent ملف التكوين باستخدام
com.bifftrim, com.bifftrlen و اقتباس ثنائي المتغيرات.
تحتاج أولاً إلى تشغيل الاقتصاص باستخدام تنسيق biff مخصص باستخدام ملف %-T دقيق.
عن طريق الإعداد com.bifftrlen إلى 3، يمكنك أن تطلب أن تكون عروض الأسعار مكونة من 3 أسطر فقط على الأقل
قلصت. تحول com.bifftrim سيؤدي إيقاف التشغيل إلى إزالة إشعار التشذيب أثناء الدوران
اقتباس ثنائي سيؤدي إيقاف أيضًا إلى إزالة خط الإسناد، عند وجوده.
على سبيل المثال، بافتراض الإعدادات التالية:
بيفتريم : ON
بيفترلين: 2
اقتباس ثنائي: إيقاف
فإن المثال أعلاه سوف ينتج مخرجات biffing التالية (رأس الرسالة
لا يتحمل):
[تم قطع 3 أسطر تبدأ بحرف ">" وسطر الإسناد]
وهذا جزء من الرد على يوحنا.
لأن السطر الفارغ الذي يلي المادة المقتبسة يعتبر جزءًا من
اقتباس. يمكن إيقاف تشغيل الرسالة "[تم قطعها..]" عن طريق الإعداد com.bifftrim إلى من.
تأخذ خوارزمية القطع في الاعتبار السطر الأول من الجسم لمعرفة ما إذا كان يبدأ بـ a
حروف غير رقميه. فإذا كان الأمر كذلك، فكل الأسطر التالية تبدأ بذلك
نفس الحرف، أو تتم إزالة أي سطر فارغ، حتى السطر الأول غير الفارغ الذي يبدأ بـ
شخصية أخرى. بشكل اختياري، يتم تخطي السطر الأول (وهذا السطر فقط) إذا كان
يبدأ الحرف الثاني بحرف غير أبجدي رقمي، ويُؤخذ السطر الأول على أنه موجود
خط الإسناد.
باستخدام مدمج نمط MH التقطيع
ما يسمى نمط MH biffing هي طريقة لتقديم جسم مضغوط حيث توجد جميع الخطوط
يتم ضمها معًا في سلسلة كبيرة سعيدة مع تحويل المسافات المتعاقبة إلى مسافة واحدة
حرف الفضاء. لتمكينه، تحتاج إلى تعيين com.biffmh متغير إلى ON.
نظرًا لأن هذا الضغط يتم إخراجه حرفيًا على tty، فستحدث فواصل الأسطر بشكل عشوائي
هذا قد يجعل القراءة صعبة. يمكنك طلب إعادة التنسيق التلقائي للملف
جسم مضغوط عن طريق الدوران com.biffnice إلى ON وسيتناسب إخراج biff بشكل جيد داخل ملف
طرفية.
لسوء الحظ، ليس من الممكن تخصيص كمية الأعمدة التي ينبغي استخدامها
للتنسيق: بما أنك قد تلجأ إلى أي جهاز tty قمت بتسجيل الدخول إليه، فإن ذلك من شأنه أن يجبرك
تاجر البريد للتحقق من حجم العمود الخاص بـ tty، لكل tty ممكن حيث يمكن أن يذهب الإخراج،
ولا توجد طريقة محمولة موثوقة للقيام بذلك. آسف.
تمتد التصفية أوامر
بمجرد وصولك إلى خبير المستوى، وشريطة أن يكون لديك معرفة عادلة بيرل، كنت
قد يشعر بالحاجة إلى أوامر أكثر تقدمًا والتي لا تعد جزءًا من المجموعة القياسية. هذا
يشرح القسم كيف يمكنك تحقيق ذلك ديناميكيًا، دون الحاجة إلى الغوص عميقًا
داخل كود المصدر.
بمجرد توسيع مجموعة أوامر التصفية، يمكنك استخدام تلك الأوامر داخل
ملف القاعدة كما لو كانت مدمجة. يمكنك أيضًا اختيار إعادة تعريف الأوامر القياسية
إذا كانت لا تناسبك (ومع ذلك، إذا كنت ترغب في القيام بذلك، يجب أن تعرف بالضبط ما تريد
تقوم بذلك، أو قد تبدأ في فقدان بعض رسائل البريد أو الحصول على سلوك غير متوقع - وهذا أيضًا
يلغي الضمان الخاص بك :-).
القدرة على توفير أوامر خارجية دون تعديل كود المصدر الرئيسي بشكل فعلي
أعتقد أن هذه نقطة قوية لصالح وجود برنامج مكتوب باللغة المفسرة
لغة مثل بيرل. وهذا بالطبع بمجرد أن تقتنع نفسك بأنه أمر جيد
شيء لتخصيص وتوسيع برنامج بنفس اللغة المستخدمة للنواة،
وهذا يعني عادة لغة منخفضة المستوى إلى حد ما مع عدد أقل من الخطافات سهلة الاستخدام.
نظرة عامة
لتنفيذ أمر جديد، مثل FOLD، ستحتاج إلى القيام بما يلي:
· اكتب روتينًا فرعيًا لـ Perl لتنفيذ إجراء FOLD ثم ضعه في ملف خارجي
ملف. لنفترض أننا نكتب الروتين الفرعي طية ونقوم بتخزين ذلك في ملف Fold.pl ملف. هذا هو
وبطبيعة الحال، الجزء الصعب، حيث تحتاج إلى معرفة بعض الأشياء الأساسية عنه
وكيل البريد الداخلي.
· اختر المكان الذي تريد تخزينه Fold.pl ملف. ثم تحقق من بناء الجملة مع بيرل -c,
فقط للتأكد...
· تحرير newcmd file (كما هو موضح في ملف التكوين) لتسجيل الأمر الجديد.
ثم تأكد من أن هذا الملف محمي بإحكام. يجب أن تمتلكه، ولا ينبغي أن يكون كذلك
للكتابة من قبل أي فرد آخر غيرك.
· بالإضافة إلى ذلك، قد ترغب في تحديد ما إذا كان FOLD سيعدل الموجود أم لا
حالة التنفيذ وما إذا كان سيتم السماح بها ضمن _SEEN_ الخاص أم لا
الدولة.
· كتابة بعض القواعد باستخدام الأمر FOLD الجديد. هذا ال سهل جزء! لاحظ أن الخاص بك
يمكن أيضًا استخدام الأمر ضمن خطافات Perl كما لو كان أمرًا مضمنًا (this
يعني أن هناك وظيفة واجهة مصممة لك داخل com.mailhook طَرد).
في الأقسام التالية، سنقوم بوصف بناء الجملة newcmd ملف و
سنقدم بعد ذلك بعض المتغيرات الداخلية ذات المستوى المنخفض والتي يمكن استخدامها عند التنفيذ
أوامر جديدة.
جديد أمر قم بتقديم شكل
ال newcmd يتكون الملف من سلسلة من الأسطر، يصف كل سطر أمرًا واحدًا. فارغ
يتم تجاهل الأسطر ويتم تجاهل التعليقات ذات نمط الصدفة التي يقدمها الحرف الحاد (#).
المسموح به.
يتكون كل سطر من 3 حقول رئيسية و2 حقلين اختياريين؛ يتم فصل الحقول بواسطة
مسافات أو علامات تبويب. هنا هيكل عظمي:
ال cmd_name هو اسم الأمر الذي ترغب في إضافته. في مثالنا السابق، سيكون
يمكن طيها. المجال التالي، مسار، يخبر mailagent بمكان الملف الذي يحتوي على الأمر
يقع التنفيذ. لنفترض أننا قمنا بتخزينه ~/mail/cmds/fold.pl. وظيفة الميدان هو
اسم ال بيرل وظيفة تنفيذ FOLD، والتي يمكن العثور عليها في Fold.pl. نحن هنا
اسمه وظيفتنا طية. لاحظ أنه إذا كانت وظيفتك تحمل اسمها داخل ملف newcmd
package، وهو السلوك الافتراضي إذا لم تحدد أيًا منه، فلا داعي لذلك
بادئة اسم الوظيفة مع الحزمة. وإلا، يجب عليك استخدام اسم مؤهل بالكامل.
الحقلان الأخيران اختياريان، وهما قيمتان منطقيتان يمكن تحديدهما بواسطة صحيح or
نعم للتعبير عن الحقيقة، و زائف or لا للتعبير عن الباطل. لو Status_flag تم ضبطه على صحيح،
ثم سيقوم الأمر بتعديل متغير حالة التنفيذ الأخير. لو Seen_flag صحيح،
ثم يمكن استخدام الأمر عندما يكون الفلتر في حالة _SEEN_. القيم الافتراضية هي
على التوالي صحيح و زائف.
لذلك في مثالنا، كنا قد كتبنا:
يطوى ~/mail/cmds/fold.pl أضعاف لا نعم
للسماح بـ FOLD حتى في حالة _SEEN_ وتنفيذه دون تعديل التيار
قيمة حالة الأمر الأخير المتغير.
الكتابة An تطبيق
سيتم تحميل وظيفة Perl الخاصة بك عند الحاجة إليها في الحزمة الخاصة newcmd، بحيث يكون لها
مساحة الاسم الخاصة محمية ولا تتعارض عن طريق الخطأ مع وكيل بريد آخر
الروتين أو المتغيرات. عندما تحتاج إلى استدعاء واجهة Perl لبعض وكيل البريد المشترك
الوظائف، سيتعين عليك أن تتذكر استخدام اسم الروتين المؤهل بالكامل، على سبيل المثال
&mailhook'leave لتنفيذ أمر الإجازة فعليًا.
(عادةً، في خطافات PERL، ليست هناك حاجة لهذه البادئة نظرًا لأن البرنامج النصي Perl هو
محملة في com.mailhook طَرد. عندما تقوم بتوسيع وكيل البريد الخاص بك، يجب أن تكون إضافيًا
ومع ذلك، كن حذرًا، ولا يضر حقًا استخدام هذه البادئة. أنت حر في الاستخدام
بيرل صفقة التوجيه داخل وظيفتك، ومن ثم التبديل إلى com.mailhook صفقة
في جسد الروتين ولكن ترك اسمه في newcmd رزمة.)
نظرًا لأن mailagent سيقوم بتحميل تنفيذ الأمر ديناميكيًا في المرة الأولى
يتم تشغيله، عن طريق تحميل البرنامج النصي Perl المحدد في الذاكرة وتقييمه، أقترح عليك ذلك
ضع كل تنفيذ أمر في ملف منفصل، لتجنب تخزينه بشكل غير ضروري
الكود في الذاكرة.
يتم استدعاء كل أمر باستخدام وسيطة واحدة، وهي سلسلة الأمر الكاملة كما تمت قراءتها من ملف
قواعد التصفية. بالإضافة إلى ذلك، الخاصة ARGV يتم تعيين المصفوفة عن طريق تنفيذ نمط الصدفة
تحليل سطر الأوامر (والذي سيفشل إذا كانت علامات الاقتباس غير متطابقة، ولكن بعد ذلك يمكنك القيام بذلك
التحليل بنفسك منذ حصولك على سطر الأوامر). في نهاية روتينك، أنت
يجب أن يعود حالة الفشل، أي 0 للنجاح و 1 للإشارة إلى الفشل.
تلك هي متطلباتك الوحيدة. أنت حر في أن تفعل ما تريد داخل الروتين.
ومع ذلك، لتسهيل مهمتك، يتم حساب بعض المتغيرات مسبقًا لك، وهي نفس المتغيرات التي تم حسابها مسبقًا
متاحة ضمن خطافات البريد، ويتم تعريفها فقط ضمن ملف newcmd حزمة هذا
وقت. هناك أيضًا بعض المتغيرات الخاصة التي تحتاج إلى معرفتها، ومجموعة من
الإجراءات القياسية التي قد ترغب في الاتصال بها. يرجى تجنب الاتصال بشيء ليس كذلك
موثقة هنا، لأنها قد تتغير دون إشعار مسبق. إذا كنت ترغب في استخدام واحد
روتين ولم يتم توثيقه في هذه الصفحة اليدوية، يرجى إعلامي بذلك.
يتم استدعاء كل أمر من داخل وحدة التقييم بناء، لذلك قد تستخدم بأمان يموت أو اتصَّل بـ
إجراءات المكتبة الخارجية التي تستخدم يموت. إذا كنت تستخدم تطلب، انتبه إلى أن وكيل البريد هو
إعداد خاص INC قم بوضع مسار مكتبتها الخاصة أولاً، لذا يمكنك ذلك
ضع كل ما تبذلونه من تاجر البريدملفات المكتبة ذات الصلة في هذا المكان.
ملصقات خاصة المتغيرات
المتغيرات الخاصة التالية (تم وضع علامة على بعضها للقراءة فقط، مما يعني أنه لا ينبغي عليك ذلك
قم بتعديلها، وفي الواقع لا يمكنك ذلك) متاحة مباشرة داخل newcmd الحزمة، هي
يتم ضبطها مسبقًا بواسطة الفلتر الآلي، وتستخدم للتحكم في عملية التصفية:
$mfile الاسم الأساسي لملف البريد الذي يتم معالجته. هذا المتغير للقراءة فقط.
يتم استخدامه بشكل أساسي في رسائل السجل، كما هو الحال في [$mfile] لوضع علامة على كل سجل، نظرًا لأن a
قد تتعامل عملية وكيل بريد واحد مع رسائل متعددة.
$ever_saved وهذا أمر منطقي، والذي ينبغي أن يكون طقم إلى 1 بمجرد الادخار الناجح
تم الانتهاء من العملية. إذا كان في نهاية التصفية، هذا المتغير
لا يزال 0، فسيتم تنفيذ الإجازة الافتراضية.
$folder_saved قيمة هذا المتغير تحكم $msgpath مجموعة متغيرات الراحة
لهروب PERL. يتم تحديثه كلما تم كتابة رسالة إلى ملف، إلى
عقد مسار الملف المكتوب.
تابع $ هذه هي حالة الاستمرار، وهو متغير ذو أهمية قصوى عندما
التعامل مع تدفق التحكم. أربعة ثوابت من رئيسي يمكن أن تكون الحزمة
تستخدم لتحديد ما إذا كان ينبغي لنا الاستمرار في القاعدة الحالية
($FT_CONT)، التخلي عن القاعدة الحالية ($FT_REJECT)، إعادة تشغيل التصفية من
البدء ($FT_RESTART) أو ببساطة إلغاء المعالجة ($FT_ABORT). المزيد عن
هذا لاحقا.
$lastcmd آخر حالة فشل تم تسجيلها بواسطة الأمر الأخير (من بين الحالات التي تم تسجيلها
تعديل حالة التنفيذ). لا ينبغي عليك تحديث هذا بواسطة
بنفسك إلا إذا كنت تقوم بتنفيذ بعض التغليف لأوامر أخرى،
مثل BACK أو مرة واحدة، نظرًا افتراضيًا $lastcmd سيتم تعيينها على القيمة لك
العودة في نهاية الأمر.
$wmode يؤدي هذا إلى تسجيل الحالة الحالية للمرشح الآلي (وضع العمل)، في ملف
نموذج سلسلة حرفية، يتم تعديله عادةً بواسطة أمر BEGIN أو كجانب
التأثير، كما هو الحال في REJECT على سبيل المثال.
يتم أيضًا تثبيت جميع المتغيرات الخاصة التي تم إعدادها لعمليات هروب PERL داخل ملف newcmd
طَرد. هؤلاء يكونون $تسجيل الدخول, %headerالخ...يمكنك الاطلاع عليها متى شئت.
المتغيرات الأخرى التي قد تحتاج إليها هي معلمات التكوين، الموجودة في ملف
~ / .mailagent ملف الضبط. حسنا، القاعدة بسيطة. قيمة كل معلمة
المعلمة من ملف التكوين يقام في متغير $cf'param. عامل $main'loglvl is
نسخة من $cf'مستوى، نظرًا لأن الكتابة تكون دائمًا أقصر $'loglvl بعد كل مكالمة ل
روتين التسجيل &add_log.
هناك متغير آخر يستحق المعرفة عنه: $main'FILTER، وهو X- المناسب
سطر التصفية الذي يجب إلحاقه به الكل البريد الذي ترسله عبر وكيل البريد، من أجل
تجنب الحلقات. أيضًا عند حفظ رسائل البريد الإلكتروني في مجلد، فمن الحكمة إضافة هذا السطر في حالة أ
تنشأ مشكلة: يمكنك بعد ذلك تحديد الجاني.
قاعدة البيئة
قد يكون للإجراء رغبة مشروعة في تغيير البيئة لنطاق واحد
القاعدة فقط، والعودة إلى القيمة السابقة عند الخروج من القاعدة. أو قد ترغب في ذلك
تغيير القيمة إلى الأبد.
عندما نتحدث عن تغيير البيئة، فإننا نشير إلى تلك التي تم إعدادها عبر
ملف التكوين، الذي تنتهي قيمه في ملف cf طَرد. حسنا، بعض تلك المتغيرات
يتم نسخها في الحياة الفطرية الحزمة قبل بدء تصفية الرسالة (تحت سيطرة
القادم @env'Env مجموعة مصفوفة).
يجب أن تشير جميع القواعد بعد ذلك إلى الإصدار الموجود في ملف الحياة الفطرية الحزمة، وليس في cf حزمة،
لرؤية التعديلات. يتم إجراء التغييرات العالمية من خلال التأثير بشكل مباشر على المتغير في
الحياة الفطرية الحزمة، بينما يتم طلب التغييرات المحلية عن طريق استدعاء &env'local نمط.
على سبيل المثال، cf'umask يتم نسخ القيمة كما com.env'umask لان Umask يقام في @env'Env.
يتم إجراء التغييرات العامة عن طريق تعيين تلك النسخة مباشرةً، بينما قد يتم إجراء تغييرات محلية
مع:
&env'local('umask', 0722);
لإعداد قيمة محلية جديدة. المرة الأولى &env'local يتم استدعاؤه على متغير، قيمته
يتم حفظه في مكان ما، وسيتم استعادته عند الخروج من نطاق القاعدة. ثم الجديد
تتأثر القيمة بالمتغير
المتغيرات التي تتطلب تأثيرًا جانبيًا عند تغيير قيمتها (مثل متغير umask،
(الذي يتطلب استدعاء النظام للسماح للنواة برؤية التغيير) قد يحدده عن طريق الوصول
القادم %env'المواصفات المصفوفة، والمفتاح هو اسم المتغير الذي يتطلب أثرًا جانبيًا، وهو
القيمة التي يتم تفسيرها على أنها جزء من كود Perl يتم تشغيله بمجرد استعادة القيمة الأصلية. ل
على سبيل المثال، نقول في مكان ما (في &env'init):
بيئة الحزمة؛
$Spec{'umask'} = 'umask($umask)';
لتحديث عرض kernel عند مغادرة النطاق. لاحظ أنه يتم تقييم التأثير الجانبي مرة واحدة
لقد استعاد المتغير قيمته الأصلية، وضمن الحياة الفطرية الحزمة.
داخليا ، &analyze_mail المكالمات الروتينية &env'setup قبل البدء بمعالجتها
تهيئة الحياة الفطرية الحزمة، و &env'cleanup في النهاية قبل العودة. قبل الجري
الإجراءات المحددة في مطابقة القاعدة، &apply_rules المكالمات &env'restore لضمان أ
عرض متماسك للبيئة أثناء تشغيل الإجراءات الخاصة بهذه القاعدة المحددة.
تغيير السيطرة التدفق
عندما تريد تغيير تدفق التحكم لإجراء الرفض أو إعادة التشغيل أو الإجهاض، فلديك ذلك
ثلاثة خيارات. إذا كنت ترغب في التحكم في هذا الإجراء عبر أحد الخيارات، بنفس الطريقة القياسية
فريدة من نوعها تفعل (مع -c, -r or -a)، يمكنك الاتصال &main'alter_execution(الخيار، ولاية) إعطاء
له معلمتان: حرف الخيار والحالة التي ترغب في التغيير إليها قبل التغيير
تدفق التحكم.
قد ترغب أيضًا في تغيير ملف $wmode و تابع $ المتغيرات، ولكن بعد ذلك سيكون لديك
للقيام بالتسجيل الخاص بك إذا كنت تريد بعض. أو يمكنك الاتصال بإجراءات منخفضة المستوى
&الرئيسية_ترفض, &الرئيسية'do_restart و &main'do_abort لأداء المقابلة
العملية (مع التسجيل).
تذكر أن حالة _SEEN_ خاصة ويتم التعامل معها مباشرة على مستوى المرشح
يبدأ عامل التصفية في الحالة الأولية. الإجراء الافتراضي هو الاستمرار في التيار
القاعدة، ولهذا السبب لا يوجد روتين لأداء هذه المهمة.
الطريقة المفضلة هي استدعاء com.mailhook وظائف الواجهة، &mailhook'begin,
&البريد هوك'رفض، وما إلى ذلك...، وسيعمل ذلك حتى لو قمت بإعادة تعريف تلك الوظائف
نفسك. علاوة على ذلك، فهذه هي الواجهة الوحيدة التي من المحتمل ألا يتم تغييرها بالجديد
إصدارات.
أسئلة عامة الهدف إجراءات
فيما يلي قائمة بجميع الإجراءات العامة التي قد ترغب في الاتصال بها عند الأداء
بعض المهام ذات المستوى المنخفض. لاحظ أن هذه المعلومات تعتمد على الإصدار. منذ أن قمت بالتوثيق
لهم، سأحاول الاحتفاظ بها في الإصدارات الجديدة، ولكن لا أستطيع أن أضمن أنني لن أضطر إلى ذلك
تغيير طفيف في بعض دلالاتهم. هناك فرصة جيدة أنك لن تضطر إلى ذلك أبدًا
تقلق بشأن ذلك على أي حال.
& تنسيق الرأس (حقل rfc822)
قم بإرجاع حقل RFC822 منسق ليناسب 78 عمودًا، مع الاستمرارات المناسبة
تم تقديمه بثمانية مسافات.
&header'normalize(rfc822-header-name)
قم بتطبيع الحالة في رأس RFC822 وقم بإرجاع اسم الرأس الجديد مع كل اسم أول
حرف كبير.
&header'reset
يعد هذا جزءًا من التحقق من صحة رأس RFC822، والذي يُستخدم بشكل أساسي عند تقسيم ملف
استوعب. يؤدي هذا إلى إعادة تعيين جهاز التعرف الآلي (راجع &header'valid).
&header'صالح (السطر)
تُرجع حالة منطقية، مع الإشارة إلى ما إذا كانت جميع الأسطر مُعطاة حتى الآن لهذه الحالة
وظيفة منذ الماضي &header'reset هي جزء من رأس RFC822 صالح. ال
تتفهم الوظيفة السطر الأول الذي يعد جزءًا من رسائل بريد UNIX. في أي
الوقت، المتغير $header'ربما قد يتم فحصها لمعرفة ما إذا كنا قد وجدنا حتى الآن
حقل رأس بريد أساسي واحد على الأقل.
&main'acs_rqst(ملف)
قم بإجراء قفل .lock على الملف، وإرجاع 0 عند النجاح و-1 عند الفشل.
إذا كان القفل القديم موجودًا، فسيتم إزالته (يتم ضبط الحد الزمني على ساعة واحدة). يستخدم
&main'free_file لتحرير القفل.
&main'add_log(سلسلة)
إضافة سلسلة إلى ملف السجل. المصطلح المعتاد هو الإصلاح اللاحق الذي يستدعي مع
if $'loglvl > قيمنا، حيث قيمنا هو مستوى التسجيل الذي ترغب في الحصول عليه من قبل
انبعاث هذا النوع من السجل ($'loglvl هو نموذج قصير ل $main'loglvl).
&main'free_file(ملف)
قم بإزالة .lock من الملف الذي تم الحصول عليه بواسطة &main'acs_rqst. تقوم بإرجاع 0 إذا كان القفل
تمت إزالته بنجاح، -1 إذا كان قفلًا قديمًا (تم الحصول عليه بواسطة شخص آخر).
&main'header_found(ملف)
قم بمسح رأس الملف وحاول تحديد ما إذا كان هناك رأس بريد في
البداية أم لا. يُرجع صحيحًا إذا تم العثور على رأس.
&main'history_record
قم بتسجيل معرف الرسالة للرسالة الحالية وإرجاع 0 إذا لم تكن الرسالة كذلك
سبق مشاهدته، 1 إذا كان مكررا.
&اسم المضيف الرئيسي
قم بإرجاع قيمة اسم المضيف، بأحرف صغيرة، مع إلحاق اسم المجال المحتمل
إليها. يتم تخزين اسم المضيف مؤقتًا، حيث يجب الحصول على قيمته في البداية بواسطة
شوكة. (أنظر أيضا &اسم المضيف الرئيسي)
&main'internet_info(عنوان البريد الإلكتروني)
تحليل عنوان إنترنت للبريد الإلكتروني وإرجاع مصفوفة مكونة من ثلاثة عناصر تحتوي على
المضيف والمجال وجزء البلد من مضيف الإنترنت. على سبيل المثال، إذا
العنوان هو [البريد الإلكتروني محمي]، سوف يعود (ج، b, a).
&main'login_name(عنوان البريد الإلكتروني)
تحليل عنوان الإنترنت للبريد الإلكتروني وإرجاع اسم تسجيل الدخول.
&main'macros_subst(*السطر)
قم بإجراء استبدال الماكرو في المكان (تم تمرير الخط كنوع عالمي) باستخدام
المعلومات الموجودة حاليًا في %الرئيسية مجموعة مصفوفة. يفعل ليست pass *_ ك
المعلمة، منذ داخليا وحدات الماكرو_subst يستخدم متغير محلي يحمل هذا الاسم
لإجراء البدائل وسينتهي بك الأمر بنسخة غير معدلة. لو
تريد حقا أن تمر *_، فيجب عليك استخدام القيمة التي تم إرجاعها من
وحدات الماكرو_subst وهو النص البديل، ولكن هذا أقل كفاءة من
مع تعديله في مكانه.
&main'makedir(اسم المسار، الوضع)
إنشاء الدليل، وإنشاء جميع الدلائل الوسيطة اللازمة لإنشائها
اسم المسار دليل صالح. ليس له أي تأثير إذا كان الدليل موجودًا بالفعل. ال
معلمة الوضع اختيارية، ويتم استخدام 0700 (الرقم الثماني) إذا لم يتم تحديدها.
&اسم المضيف الرئيسي
إرجاع اسم المضيف للجهاز الحالي، دون أي اسم مجال. ال
يتم تخزين اسم المضيف مؤقتًا، حيث يجب الحصول على قيمته في البداية عن طريق التفرع.
&main'run_command(أمر التصفية)
قم بتنفيذ أمر التصفية الفردي المحدد وإرجاع حالة الاستمرار،
والتي ينبغي أن تتأثر عادة إلى تابع $ عامل. سوف تحتاج هذا
الروتينية عند محاولة تنفيذ الأوامر التي تتضمن أوامر أخرى، مثل
مرة واحدة أو حدد.
&main's_in_period(period)
إرجاع عدد الثواني في الفترة المحددة. انظر القسم تحديد A
فترة للحصول على سلاسل فترة صالحة.
&main'shell_command(برنامج, إدخال، تعليق)
قم بتشغيل أمر shell وأرجع حالة الفشل (0 لـ OK). معلمة الإدخال
قد يكون أحد الثوابت التالية (المحددة في رئيسي الحزمة): NO_INPUT $
لإغلاق الإدخال القياسي، $BODY_INPUT لتوجيه نص الرسالة الحالية،
$MAIL_INPUT لتوجيه البريد بالكامل كما هو، $MAIL_INPUT_BINARY لتوجيه البريد بالكامل
البريد بعد إزالة أي ترميز لنقل المحتوى و$HEADER_INPUT إلى
توجيه رأس الرسالة. قد تكون معلمة التعليقات واحدة من $FEEDBACK أو
$NO_FEEDBACK اعتمادًا على ما إذا كنت ترغب في استخدام الإخراج القياسي أم لا
تغيير الجزء المقابل من الرسالة. إذا لم تكن هناك حاجة إلى تعليقات، فإن
يتم إرسال إخراج الأمر بالبريد مرة أخرى إلى المستخدم. $FEEDBACK_ENCODING هو
يتم التعامل معه مثل $FEEDBACK ولكنه سيطلب من وكيل البريد أن ينظر إلى أفضل هيئة مناسبة
الترميز عندما يكون الإدخال هو الرسالة بأكملها.
&main'parse_address(rfc822-address)
تحليل عنوان البريد الإلكتروني RFC822 وإرجاع مصفوفة مكونة من عنصرين تحتوي على الملف
عنوان الإنترنت وجزء التعليق من هذا العنوان.
&main'xeqte(إجراءات التصفية)
قم بتنفيذ سلسلة من الإجراءات مفصولة بـ "؛" الشخصية، الدعوة الأمر Run
لأداء المهمة في الواقع. إرجاع حالة الاستمرارية. لاحظ أن
$FT_ABORT سوف أبدا يتم إرجاعها، نظرًا لأن وكيل البريد يتوقف عادةً بعد ذلك
نفذ مجموعة واحدة من الإجراءات، واستمر فقط في حالة ظهور إعادة تشغيل أو رفض.
ما يفعله ABORT هو تخطي الأوامر المتبقية على السطر والخروج كما لو كان
تم تشغيل كافة الأوامر. بامكانك أن تقول xeqte هو ما يعادل وحدة التقييم
تعمل في لغة Perl، لأنها تفسر نصًا صغيرًا للتصفية وتعيد التحكم
للمتصل بمجرد الانتهاء، و ABORT هو أمر Perl يموت.
يمكنك أيضًا استخدام الوظائف الثلاث من خارجي الحزمة التي تتعامل مع المستمر
المتغيرات (موثقة بالفعل في القسم الذي يتناول المتغيرات) وكذلك المستخدم-
إجراءات الماكرو المحددة.
مثال
إن كتابة الأوامر الخاصة بك ليس بالأمر السهل، لأنه يتطلب بعض المعرفة الأساسية المتعلقة بها
وكيل البريد الداخلي. ومع ذلك، بمجرد أن تكون على دراية بذلك، ينبغي أن يكون نسبيًا
صريح.
هنا مثال صغير. نريد أن نكتب أمرًا لاسترجاع رسالة بريدية إلى
المرسل الأصلي، كما يفعل sendmail، مع بعض النص الرئيسي لشرح ما حدث.
سيكون للأمر بناء الجملة التالي:
إرسال مرة أخرى سبب
ونود أن يقوم هذا الأمر بتعديل الحالة الحالية، وإرجاع الفشل إذا كان
لا يمكن إرجاع البريد مرة أخرى. نظرًا لأن هذا الأمر يرسل شيئًا ما في الواقع، فإننا لا نفعل ذلك
تريد أن يتم تنفيذها في حالة _SEEN_. هنا هو التنفيذ الخاص بي (لم يتم اختباره):
إرسال فرعي {
local($cmd_line) = @_;
local($reason) = join(' ', @ARGV[1..$#ARGV]);
ما لم (فتح (MAILER، "|/ usr / lib / sendmail -odq -t")) {
&'add_log("خطأ لا يمكن تشغيل sendmail لإرسال رسالة")
إذا كان $'loglvl;
1 العودة؛
}
طباعة البريد <<EOF؛
من: وكيل البريد
إلى: $header{'Sender'}
الموضوع: البريد المعاد: فشل وكيل البريد
$main'FILTER
--- نسخة من الجلسة
$سبب
--- متابعة الرسالة غير المرسلة
$رأس{'الكل'}
EOF
إغلاق البريد؛
$ever_saved = 1; # لا أريده في صندوق البريد
$؟ == 0 ؟ 0 : 1; #حالة الفشل
}
على افتراض أن هذا الأمر قد تم وضعه ~/mail/cmds/sendback.pl، السطر الذي يصفه في
newcmd سيكون الملف:
إرسال مرة أخرى ~/mail/cmds/sendback.pl إعادة الإرسال نعم لا
الآن يمكن استخدام هذا الأمر بحرية في أي قاعدة، وسيتم تسجيله كمعرفة من قبل المستخدم
الأمر من قبل مرسل الأمر. ومن قال أنه ليس من السهل القيام به؟ :-)
لاحظ استخدام المتغير $ever_saved لوضع علامة على البريد كمحفوظ بمجرد حفظه
ارتد. في الواقع، إذا كان إجراء SENDBACK هو الإجراء الوحيد الذي سيتم تشغيله، فإننا لا نفعل ذلك
تريد أن يترك وكيل البريد البريد في صندوق البريد لأنه لم يتم حفظه مطلقًا (هذا
السلوك الافتراضي هو إجراء احترازي فقط - أفضل أمانًا من آسف).
الخاتمة
إذا تخيلت على طول الطريق بعض الأوامر المفيدة التي يمكن جعلها جزءًا من المعيار
مجموعة الأوامر، يرجى إرسالها لي بالبريد الإلكتروني وسأفكر في دمجها. في المستقبل، أنا
ترغب أيضًا في توفير مكتبة قياسية من نصوص Perl لتنفيذ بعض الأشياء الغريبة
الأوامر التي قد تكون مطلوبة في حالات خاصة.
لاحظ أنه يمكنك أيضًا استخدام المعلومات المقدمة هنا داخل البرامج النصية للهروب من Perl.
عن طريق تطلب المشغل، فمن السهل الحصول على تنفيذ الأمر الجديد في جهازك
البرنامج النصي وتنفيذ نفس المهمة. قد تحتاج إلى إعداد @ARGV بنفسك إذا كنت
الاعتماد على هذه الميزة في تنفيذ الأمر الخاص بك.
يمكن أيضًا عرض ملحق الأمر كطريقة لإعادة استخدام كود Perl آخر، وهو mailagent
توفير إطار ثابت وموثوق والبرنامج الخارجي الذي يقدم الخدمة. واحد
سيكون الامتداد الفوري هو التعامل مع القائمة البريدية، باستخدام هذه الآلية للتفاعل معها
بعض برامج إدارة القائمة البريدية المكتوبة بلغة بيرل.
عام MAIL الخادم
أحد الأشياء الرائعة في mailagent هو أنه يوفر لك الأدوات الأساسية لتنفيذ برنامج
خادم البريد العام. في الواقع، من خلال أمر SERVER، يمكنك معالجة رسالة بريدية،
استخراج ثم تنفيذ بعض الأوامر المحددة مسبقا. على سبيل المثال، يمكنك تنفيذ
خادم أرشيف، أو مدير قائمة بريدية، الخ...
القيد الرئيسي حاليًا هو أنه يتم قبول الأوامر أو الأوامر البسيطة فقط
أخذ بعض المعلومات الإضافية كما معيار إدخال أو ما يعادلها. ليس هناك فكرة عن الأوضاع،
مع مجموعات أوامر منفصلة لكل وضع أو رؤية محدودة لمساحة الاسم، على الأقل لـ
الآن، ليس من السهل (وإن كان ذلك ممكنًا) تنفيذ خادم ftpmail، على سبيل المثال،
لأن هذا يتضمن مفهوم الوضع.
نظرة عامة
من أجل تنفيذ أمر خادم البريد (قل إرسال ملف، والتي من شأنها أن ترسل تعسفيا
من نظام الملفات في رسالة بريد منفصلة)، يتعين عليك القيام بما يلي:
· فكر في الأمر من وجهة نظر أمنية. وهنا الأمر الذي نريده
يعد التنفيذ أمرًا يحتمل أن يكون خطيرًا لأنه يمكن أن يتيح الوصول إلى أي ملف على الملف
آلة تشغيل الفرد تاجر البريد لديه حق الوصول إلى. لذلك نريد تقييد ذلك
الأمر لعدد محدود من الأشخاص الموثوق بهم، الذين سيتم منحهم قوة لتشغيل
هذا الأمر. المزيد عن هذا لاحقا.
· اختر ما إذا كنت تريد تنفيذ الأمر في لغة بيرل أو في برمجة أخرى
لغة. إذا قمت بذلك الأخير، فسيُعرف الأمر الخاص بك باسم a قذيفة أمر (أي أ
أمر قابل للتشغيل مباشرة من الصدفة)، بينما في الحالة السابقة، لديك
اختيار جعلها تظهر ك قذيفة الأمر، أو تم توصيله إلى تاجر البريد in
وفي هذه الحالة تُعرف باسم أ بيرل يأمر. في هذه الحالة الأخيرة، سيكون الأمر الخاص بك
يتم تحميله ديناميكيًا في mailagent مع كل المزايا التي يقدمها لك. نحن هنا
سنقوم بكتابة أمرنا كبرنامج نصي شل.
· كتابة الأمر نفسه. هذا هو الجزء الأصعب في هذا المخطط. لاحقا،
سنرى تنفيذًا مباشرًا لـ إرسال أمر.
· تحرير com.comserver الملف (المحدد في ملف ~ / .mailagent) لتسجيل الأمر الجديد.
ثم تأكد من أن هذا الملف محمي بإحكام. يجب أن تملكه، وتكون الوحيد
يسمح بتعديله.
· بالإضافة إلى ذلك، قد ترغب في إخفاء بعض الوسائط الموجودة في نص الجلسة
(المزيد حول هذا لاحقًا)، اسمح للأمر بأخذ تدفق البيانات كما هو معيار إدخال,
قم بتعيين مسار للأمر، وما إلى ذلك... كل هذه المعلمات تحدث في ملفك
com.comserver ملف.
· ابدأ باستخدام الأمر... وهو بالطبع أفضل جزء في هذا المخطط!
في الأقسام التالية، سوف نتعرف على بناء الجملة com.comserver ملف، ماذا القوى
هي، كيفية إنشاء نص الجلسة، وما هي بيئة الأوامر، وما إلى ذلك...
مدمج أوامر نظرة عامة
يحتوي خادم البريد على مجموعة محدودة من الأوامر المضمنة التي تتعامل مع مصادقة المستخدم
وإعدادات بيئة الأوامر. مصادقة المستخدم تعتمد على كلمة المرور وليست كذلك
قوية للغاية حيث يتم تحديد كلمات المرور بشكل واضح داخل رسالة البريد نفسها،
والتي يمكن اعتراضها بسهولة.
يحافظ الخادم على فكرة القوى. قد يكون لدى مستخدم واحد أكثر من قوة واحدة في أ
الوقت، كل قوة تمنح فقط وصولاً محدودًا إلى بعض المناطق الحساسة. هناك عدد قليل من القوى
مثبتة في الخادم، ولكن يجوز للمستخدم إنشاء خوادم جديدة عند الضرورة. تلك القوى
مفروض بالبرمجيات، مما يعني أن الأمر يجب أن يتحقق بنفسه مما إذا كان لديه ما يلزم
القوة (القوى) لأداء العمل بشكل صحيح.
الصلاحيات محمية بكلمة مرور وملف تخليص. الحصول على كلمة مرور جيدة ليس كذلك
بما فيه الكفاية، يجب أن تتم تصفيتك من أجل (ab) استخدامه. ملف التخليص عبارة عن قائمة إلكترونية
أنماط عنوان البريد، باستخدام نظام الأحرف الأولية لـ Shell، حيث يتم مسح شخص ما إذا و
فقط إذا كان عنوان بريده الإلكتروني مطابقًا لواحد على الأقل من الأنماط الموجودة في ملف التخليص.
كلما زاد استخدامك للأحرف الأولية، كلما أصبح نظام التصفية هذا أضعف
كن حذرا.
عادةً ما يتم إرسال أوامرك والمخرجات الناتجة عن تنفيذها إليك عبر البريد
كنسخة من الجلسة. لأسباب أمنية، يتم إخفاء كلمات المرور من سطر الأوامر.
وبالمثل، فإن الفشل في الحصول على السلطة لن يشير إلى ما إذا كنت تفتقر إلى التفويض أم لا
ما إذا كانت كلمة المرور الخاصة بك سيئة.
مستخدم مع نظام يُسمح للسلطة بإنشاء صلاحيات جديدة، وحذف صلاحيات أخرى، والتغيير
كلمات مرور الطاقة، وقائمة، وإزالة أو تغيير تراخيص الطاقة. وهذا أمر مهم إلى حد ما
السلطة التي ينبغي احتجازها من قبل عدد صغير من المستخدمين بتصريح صارم للغاية (رقم
الأحرف الوصفية في العنوان، إن أمكن). كلمة المرور الجيدة يجب أن تحمي ذلك أيضًا
قوة.
ومع ذلك، مستخدم مع نظام ولا يجوز الحصول على قوة أخرى مباشرة بدونها
تحديد كلمة المرور الخاصة به والسماح له بذلك من خلال ملف التخليص المرتبط به. لكن
سيكون من الممكن تحقيق ذلك بشكل غير مباشر عن طريق إزالة السلطة وإنشاء سلطة جديدة
واحد يحمل نفس الاسم. من أجل السيطرة على الناس مع نظام السلطة وأيضا ل
في بعض المواقف الصعبة، هناك قوة أخرى تشبه الإله: جذر قوة.
مستخدم مع جذر يمكن للقوة أن تفعل أي شيء تقريبًا، لأنها تمنح ذلك على الفور
فرد الكل الصلاحيات المتوفرة على السيرفر (لكن أمن). القيد الوحيد هو
أن جذر لا يمكن إزالة جذر القوة وحدها. يحتاج المرء إلى تحديد أمن كلمه السر
(قوة أخرى صلبة) من أجل المضي قدمًا. وغني عن القول، فقط صورة واحدة؟ ينبغي للفرد
امتلك كلاهما جذر و أمن التخليص، ويجب أن يعرف فرد واحد فقط أمن
كلمة المرور ويتم إدراجها في ملف التخليص. ال نظام القوة لا يمكن أن تضر أي من هؤلاء
قوتين. في نهاية المطاف، يمكن أن يكون لدى أكثر من مستخدم واحد جذر السلطة، ولكن لا تمنح
ذلك بخفة...
الحصول على جذر القوة ضرورية عندما نظام لقد افسدت مع تكوين النظام
بطريقة ميؤوس منها، أو عندما يتعين إصدار تسلسل ذري طويل من الأوامر: جذر is
لا تخضع للحد الأقصى لعدد الأوامر التي يمكن إصدارها في رسالة واحدة.
في حال كنت تعتقد هذا تاجر البريد الميزة خطيرة على حسابك، فلا تقم بإنشاء
جذر و أمن الصلاحيات، ولا تكتب أي أوامر حساسة.
مدمج أوامر تعريف
الآن دعونا نلقي نظرة على تلك الأوامر المضمنة. كلمات المرور للأوامر الحساسة ستكون
مخفية في نص الجلسة. تقبل بعض الأوامر الإدخال عن طريق قراءة البريد
رسالة تصل إلى EOF علامة، وهي سلسلة EOF بسيطة على خط في حد ذاته (مشابه
مع قذيفة هنا وثائق).
addauth قوة كلمه السر
إضافة مستخدمين إلى ملف التخليص لـ قوة. إذا تم إعطاء كلمة مرور الطاقة، لا
هناك حاجة إلى قوة خاصة، وإلا فإن نظام القوة مطلوبة. ل جذر or
أمن القوى، والقوة المقابلة مطلوبة، أو كلمه السر يجب أن تكون
محدد. يقرأ الأمر الإدخال القياسي حتى علامة EOF للحصول على
مستخدمون جدد.
الموافقة على كلمه السر أمر
يسجل كلمة المرور في بيئة الأوامر، ثم ينفذ الأمر. لو
الطاقة مطلوبة ولم يتم الحصول عليها بعد، سيبحث الأمر عن كلمة المرور
في البيئة وحاول الحصول على القوة ذات الصلة باستخدام كلمة المرور هذه. لذلك،
سيتم تنفيذ الأمر المعتمد (بكلمة مرور مناسبة) بشفافية دون الحاجة إلى
متاعب طلب السلطة وإصدار الأمر ثم إطلاق سراح
قوة. الأمر متروك للأمر لتنفيذ الموافقة على اختبار كلمة المرور من خلال النظر
في الموافقة على متغير في بيئة الأوامر (انظر أدناه). منذ التخليص
لا يتم تنفيذ الشيكات (مثل تلك التي يتم إجراؤها عند طلب الطاقة)، لا
يجب أن يتعامل الأمر الحساس مع ملف الموافقة على بناء.
com.delpower قوة كلمه السر [حماية]
حذف الطاقة من النظام وقائمة التخليص المرتبطة بها. ال نظام
السلطة مطلوبة لحذف معظم الصلاحيات باستثناء جذر و أمن. أمن
لا يجوز حذف السلطة إلا من تلقاء نفسها و جذر لا يجوز حذف الطاقة إلا عندما
القادم أمن تم تحديد كلمة المرور أيضًا.
com.getauth قوة كلمه السر
احصل على ملف التخليص الحالي لقوة معينة. لا توجد قوة خاصة مطلوبة إذا
تم إعطاء كلمة المرور أو أن الطاقة محتجزة بالفعل. خلاف ذلك، قوة النظام
هناك حاجة لجميع القوى ولكن جذر or أمن حيث تكون القوة المقابلة
إلزامية.
قوة جديدة قوة كلمه السر [اسم مستعار]
إضافة قوة جديدة للنظام. ثم يقرأ الأمر إدخال البريد القياسي
حتى علامة EOF للحصول على قائمة تخليص الطاقة. ال نظام القوة هي
المطلوبة لإنشاء قوة جديدة، ما لم يكن جذر or أمن: أمن قوة
مطلوب لإنشاء جذر و جذر القوة مطلوبة للإنشاء أمن.
باسود قوة قديم جديد
تغيير كلمة مرور الطاقة. لا يهم إذا كنت تحمل بالفعل المقابلة
السلطة، يجب عليك إعطاء كلمة المرور القديمة الصحيحة. أنظر أيضاً كلمه السر أمر.
كلمه السر قوة جديد
تغيير كلمة مرور الطاقة. القوة المقابلة مطلوبة، أو عليك الحصول عليها
القادم نظام قوة. لتغيير ال جذر or أمن كلمات المرور، تحتاج إلى
القوة المقابلة.
قوة الاسم كلمه السر
اطلب قوة جديدة. بالطبع، جذر لا يحتاج إلى طلب أي شيء آخر
قوة ولكن أمن، أقل إعطاء أي كلمة مرور. لا يتم احترام هذا الأمر عند
الخادم ليس في الوضع الموثوق، دون علم المستخدم: تظهر رسالة الخطأ في
لا يختلف ملف النص عن الملف الذي تم الحصول عليه بكلمة مرور غير صالحة.
القوى REGEXP
قم بإدراج جميع القوى المطابقة للتعبير العادي لـ Perl، بالإضافة إلى صلاحياتها
ملف التخليص الخاص. ال نظام الطاقة مطلوبة للحصول على القائمة. ال
جذر or أمن الطاقة مطلوبة للوصول إلى جذر or أمن
المعلومات، على التوالي. إذا لم يتم تقديم أي حجج، يتم تقديم جميع الصلاحيات
المدرجة.
الافراج عن قوة
تخلص من بعض القوة.
com.remauth قوة كلمه السر
إزالة المستخدمين من ملف التخليص، والحصول على القائمة من خلال قراءة البريد القياسي
الإدخال حتى علامة EOF. لا يتطلب هذا الأمر أي قوة خاصة إذا
يتم إعطاء كلمة المرور الصحيحة أو إذا كانت الطاقة محتجزة بالفعل. خلاف ذلك،
القادم نظام هناك حاجة إلى القوة. ل جذر و أمن التخليص، المقابلة
هناك حاجة إلى الطاقة كذلك.
طقم متغير قيمنا
اضبط المتغير على القيمة المقابلة. مفيد لتغيير المتغيرات الداخلية
مثل قيمة علامة EOF، أو تغيير بعض بيئة الأوامر. يجوز للمستخدم
تحديد المتغيرات الخاصة به لأوامره. ل علم-نوع المتغير، قيمة
on, نعم or صحيح يضبط المتغير على 1، أي سلسلة أخرى تحددها 0 (خاطئة).
تستخدم في حد ذاتها كما طقم، قائمة بجميع المتغيرات المحددة مع
يتم إرجاع القيم الخاصة بكل منها.
com.setauth قوة كلمه السر
استبدل ملف تخليص الطاقة بملف تم الحصول عليه من إدخال البريد القياسي حتى
علامة EOF. ال نظام هناك حاجة إلى الطاقة ما لم تحدد كلمة المرور الصحيحة
أو السلطة هي بالفعل لك. كل عادة، جذر or أمن الموافقات يمكن أن تكون فقط
تغيرت عندما يتم احتجاز السلطة.
المستخدم [بريد إلكتروني [يأمر]]
قم بتنفيذ الأمر بافتراض هوية البريد الإلكتروني المحددة. يتم فقدان القوى في حين
تنفيذ الأمر. قد يتم التحقق من هوية البريد الإلكتروني عن طريق الأمر نفسه،
مما قد يفرض المزيد من القيود على التنفيذ، مثل الحصول على المستخدم
صلاحيات محددة. لاحظ أن هذا الأمر يقوم فقط بتعديل البيئة العامة، و
أن الأمر متروك ل أمر التنفيذ للاستفادة من تلك المعلومات. لو
لم يتم تحديد أي أمر، ويتم افتراض الهوية الجديدة حتى يتم تغييرها بآخر
المستخدم يتم تحرير الأمر وجميع الصلاحيات التي يمتلكها المستخدم حاليًا. إذا لا
بريد الإلكتروني يتم إعطاء العنوان، ويتم استعادة معرف المستخدم الأصلي.
أمر البيئة
هناك ستة أنواع من الأوامر والمتغيرات التي يمكن تحديدها في وضع الخادم. اثنان من
معهم، النهاية و مساعدة الأنواع خاصة ويتم التعامل معها بشكل منفصل. نوعين فار و علم الرجوع
للمتغيرات والنوعين الأخيرين بيرل و قذيفة الرجوع إلى الأوامر.
عندما يطلق وكيل البريد أمر خادم، فإنه يقوم بإعداد بيئة لذلك الأمر: if
إنها بيرل-type، ثم يتم تعيين مجموعة من متغيرات Perl قبل تحميل الملف
يأمر؛ إذا كان أ قذيفةأمر -type، تتم تهيئة بعض متغيرات البيئة و
تم إعداد واصف الملف رقم 3 للإشارة مباشرةً إلى نسخة جلسة وكيل البريد.
A قذيفةأمر -type متشعب، بينما a بيرليتم تحميل الأمر -type مباشرة تاجر البريد
في حدود cmdenv طَرد. يعمل هذا كثيرًا مثل أمر تصفية PERL، فقط
تختلف الحزمة المستهدفة ويتم تعيين مجموعة متميزة من المتغيرات مسبقًا.
تقوم بعض الأوامر بجمع بيانات إضافية حتى علامة نهاية الملف (افتراضيًا السلسلة
EOF على سطر بمفرده) ويتم تغذية تلك البيانات لأوامر الصدفة عبر ستدين وإلى بيرل
الأوامر عبر @متعادل متغير تم إعداده في حزمة البيئة المسماة cmdenv (بحيث
يتم تحميل الأمر وتشغيله).
إذا قمت بتحديد المتغيرات الخاصة بك (types فار or علم)، يمكنك استخدام المدمج طقم أمر
لتعديل قيمهم لاحظ أنه لا يمكن توفير قيمة افتراضية عند تحديد الخاص بك
عامل. يجب تعيين قيمة افتراضية مناسبة ضمن الأوامر التي تستخدمها، مع
ميزة إمكانية استخدام قيم افتراضية مختلفة بواسطة أوامر مختلفة.
ما يلي بيئة يتم تعريف المتغيرات. معظمها للقراءة فقط، ما لم يتم إخطارك بذلك
خلاف ذلك، وفي هذه الحالة المدمج طقم يمكن استخدام الأمر عليهم.
الموافقة على كلمة مرور الموافقة لـ الموافقة على الأوامر، فارغة إن لم تكن ضمن المدمج الموافقة على
بناء.
المصادقة تم تعيين علامة على "صحيح" عند العثور على مظروف صالح في رسالة البريد. متى
هذه العلامة خاطئة، ولا يمكن وضع الخادم في الوضع الموثوق.
كمد سطر الأوامر كما هو مكتوب في الرسالة.
جمع تم ضبط العلامة الداخلية على "صحيح" أثناء جمع المدخلات من مستند هنا. إنها
يتم إعادة التعيين عادةً إلى خطأ قبل استدعاء الأمر.
تصحيح صحيح عند تنشيط وضع التصحيح (قد يتم ضبطه).
معاق قائمة مفصولة بفواصل للأوامر المعطلة، بدون مسافة بينها. هذا
تتم التهيئة عند استدعاء الأمر SERVER و -d يستخدم الخيار.
الفولكلوري علامة نهاية الملف الحالية لأوامر المستند هنا. بشكل افتراضي تم تعيينه على
"EOF" (قد يتم تغييره).
أخطاء عدد الأخطاء حتى الآن
jobnum رقم الوظيفة المعينة لوكيل البريد الحالي.
سجل ما تم تسجيله في النص، مع احتمال إخفاء بعض الحجج.
الاسم اسم الأمر.
الحزم وضع التعبئة لإرسال الملفات (قد يتم ضبطه).
مسار عنوان الوجهة لإرسال الملف أو الإخطار (قد يتم تعيينه).
القوى قائمة النقطتين (:) المفصولة بالصلاحيات التي يتمتع بها المستخدم حاليًا بنجاح
طلبت وحصلت.
طلبات عدد الطلبات التي تمت معالجتها حتى الآن.
تتبع صحيح عندما تريد أوامر shell أن يتم تتبعها في النص (قد يتم تعيينها).
افضل صحيح عندما يكون الخادم في وضع الثقة، حيث يمكن اكتساب الصلاحيات. تم تفعيل هذا
عن طريق -t خيار الأمر SERVER، بشرط وجود مظروف بريد صالح
وجدت.
رقم تعريف الوحدة عنوان مرسل الرسالة، حيث سيتم إرسال النص. بواسطة
الامتداد، معرف المستخدم الحقيقي للخادم، وهو أساس القوة
آلية التخليص.
المستخدم معرف المستخدم الفعال، هو في الأصل نفس معرف المستخدم، ولكن يمكن تغييره عبر
القادم المستخدم أمر مدمج.
جلسة النص الكامل
يتم إرسال نسخة الجلسة بالبريد تلقائيًا إلى المستخدم الذي طلب خادمًا
وصول. يوضح هذا النص الأوامر التي نفذها المستخدم وحالتها: OK or فشل.
بين هذين السطرين، يُظهر النص أي مخرجات تم إجراؤها بشكل صريح بواسطة الأمر to
النص. عادةً، يمكن استخدام النص لإعادة توجيه رسائل الخطأ مرة أخرى إلى
المستخدم، ولكن حتى الأوامر التي يتم تنفيذها بشكل صحيح قد ترغب في إصدار رسالة صريحة،
ذكر ما تم القيام به للتو.
يمكن لأمر Perl الوصول إلى النص عبر ملف مراسل رقمي مقبض الملف، المحدد في cmdenv
الحزمة، بينما يمكن لأمر الصدفة الوصول إليها عبر واصف الملف رقم 3.
لاحظ أنه يتم إرسال نص الجلسة بالبريد إلى مرسل للرسالة، أي من
خط رأس المغلف يقول ذلك. بقدر ما يتعلق الأمر بالخادم، فإن عنوان البريد الإلكتروني هذا هو
يُستخدم كمعرف المستخدم، تمامًا مثل اسم تسجيل الدخول العادي الذي يمكن اعتباره معرف المستخدم. ل
الأوامر الحساسة، والمصادقة بناءً على تلك المعلومات ضعيفة حقًا. أكثر
يتم توفير المصادقة "الآمنة" من خلال صلاحيات الخادم، والتي تعتمد على كلمة المرور.
لسوء الحظ، يجب إرسال كلمة المرور الواضحة في الرسالة نفسها، ويمكن أن يتم ذلك
تنصت.
تسجيل جديد أوامر و المتغيرات
يتم تعريف أوامر الخادم والمتغيرات في ملف com.comserver الملف المحدد في الخاص بك
~ / .mailagent. تنسيق الملف هو جدول يحتوي على عناصر في صف مفصولة
أحرف علامات التبويب. يحدد كل سطر أمرًا أو متغيرًا واحدًا. قد يكون أي مجال غير ذي صلة
تم إدخاله كحرف واحد "-" (ناقص). يسمح التنسيق بالتعليقات على نمط الصدفة (#).
يحتوي كل صف على الحقول التالية:
الاسم نوع إخفاء اجمع بيانات مسار احتفل على
حيث:
الاسم هو اسم الأمر أو المتغير كما يتعرف عليه الخادم.
نوع هي واحدة من بيرل, قذيفة, فار, علم, مساعدة or النهاية.
إخفاء يشير إلى الوسائط الموجودة في الأمر التي سيتم إخفاؤها (اسم الأمر
كونها الوسيطة صفر) في نص الجلسة. استخدم "-" إذا لم تكن هناك وسائط
بحاجة إلى أن تكون مخفية. عادةً ما يتم استخدام هذا لإخفاء كلمات المرور الواضحة
الأوامر. إذا كان لا بد من إخفاء أكثر من وسيطة واحدة، فسيتم عرض قائمة
يمكن تحديد الأرقام المفصولة بـ "،" (فاصلة) بـ لا المساحات ما بين
هم. على سبيل المثال، قد يؤدي "2,4،2" إلى إخفاء الوسيطتين 4 وXNUMX في النص.
اجمع بيانات عبارة عن علامة (حدد إما "y" أو "n"، ولكن يمكنك استخدام كلمات كاملة
"نعم" أو "لا") للإشارة إلى ما إذا كان الأمر يجمع بيانات إضافية في أ
هنا وثيقة حتى علامة EOF. وبدلاً من ذلك، يمكنك تحديد "-" في
مكان "ن".
مسار يحدد مسار الأمر (يُسمح باستبدال الاسم). ان لم
ذات صلة (على سبيل المثال عند تحديد متغير) أو عندما تريد تركه
فارغ، استخدم "-". إذا تم تحديد مسار فارغ لـ a بيرل or قذيفة أمر،
ومن المتوقع أن يتم العثور على تنفيذ هذا الأمر في سيرفير,
على النحو المحدد في ~ / .mailagent. إذا كان اسم الأمر كمد على سبيل المثال، ثم
من المتوقع وجود أمر بيرل في ملف اسمه كمد of cmd.pl، بينما
من المتوقع العثور على أوامر shell في ملف كمد of كمد.ش ملف. لاحظ أن
يتم تعطيل الأمر إذا تعذر تحديد موقعه في الوقت الذي يتم فيه com.comserver
يتم تحليل الملف.
احتفل على هي أي معلمة إضافية مطلوبة للأمر. على عكس المجالات الأخرى، هذا
ينبغي تركها فارغة إذا لم تكن هناك حاجة إليها. أي شيء يصل إلى نهاية السطر هو
أمسك بهذا المجال. يجب أن تحدد أوامر Perl اسم Perl
وظيفة للاتصال بتنفيذ الأمر؛ إذا لم يتم تحديد أي اسم
يتم استدعاء الأمر نفسه. قد تستخدم أوامر Shell هذا الحقل لتزويدها
خيارات إضافية، والتي سيتم إدراجها مباشرة بعد اسم الأمر و
قبل أية وسائط أخرى يقدمها المستخدم. وينبغي للآخرين أن يتركوا هذا الأمر وشأنه.
ملصقات خاصة أمر الأنواع
يوجد حاليًا نوعان خاصان من الأوامر.
أبسطها هو النهاية يكتب. يُستخدم هذا لتحديد الأوامر التي قد تؤدي إلى إنهاء الخادم
يعالج. بشكل افتراضي، تستمر المعالجة حتى يتم الوصول إلى نهاية الملف أو
تم العثور على محدد التوقيع '--'. على سبيل المثال، قد ترغب في تعريف الأمر استقال
واعطائها النهاية يكتب. بمجرد وصول الخادم إلى هذا الأمر، يتم إحباطه
معالجة ويتجاهل ما تبقى من الرسالة.
ال مساعدة عادةً ما يتم إرفاق النوع بـ مساعدة الأوامر والمطبوعات تساعد على أساس الأمر،
تعليمات لكل أمر يتم تخزينه ضمن helpdir المتغير (المحدد في ملفك
~ / .mailagent) في ملف يحمل نفس اسم الأمر نفسه. على سبيل المثال، على افتراض
أمر أطلق النار، من المتوقع أن يكون ملف المساعدة الخاص به موجودًا helpdir/shoot. إذا لم يتم العثور على ملف
هناك، يبحث mailagent في مكتبته العامة (/usr/share/mailagent) عن ملف تعليمات.
يتم توفير التعليمات فقط عندما يكون ملف التعليمات موجودًا وليس بحجم صفري.
خلق القادم جذر الطاقة
من أجل تمهيد الخادم، تحتاج إلى إنشاء قوة الجذر. جميع القوى الأخرى
ويمكن بعد ذلك إنشاؤها باستخدام واجهة الخادم، مما يضمن الاتساق ويسجل بياناتك
أجراءات. إذا كنت لا تخطط لاستخدام القوى على الإطلاق، فيمكنك تخطي هذا القسم.
أولا، تحتاج إلى اختيار كلمة مرور جيدة لل جذر قوة. شخص مع جذر قوة
يمكنه فعل أي شيء تقريبًا بالخادم، لذا كن حذرًا. لنفترض أنك اخترت جذر-
pass ككلمة مرور.
تعديل باسود (المحددة في الخاص بك ~ / .mailagent) وأضف السطر التالي:
الجذر::
أي أدخل كلمة المرور بشكل واضح بين ''. لن يبقى على هذا الشكل لفترة طويلة،
ولكن هذه هي أسهل طريقة لتمهيده. حماية باسود ملف بإحكام (للقراءة والكتابة
الأذونات لك فقط). ثم قم بإنشاء powerdir/root الملف وحمايته بنفس الطريقة و
أضف عنوان بريدك الإلكتروني إليه، على سطر بمفرده. الذي - التي يجب يكون العنوان الذي سوف
تظهر في بدءًا من: خط رسائلك. نظرًا لأن ملفات التخليص تدعم نمط الصدفة
الأنماط التي يمكنك استخدامها تسجيل الدخول@*domain.top للسماح برسائل البريد من تسجيل الدخول الخاص بك من أي جهاز في
نطاقك.
لقد شارفت على الانتهاء. الآن ببساطة قم بإصدار الأمر التالي:
وكيل البريد -i -e "الخادم -t"
وتغذية مدخلاتها القياسية مع:
من لك بريد الإلكتروني العنوان
بدءًا من: لك بريد الإلكتروني العنوان
تمرير جذر الطاقة
كلمة مرور الجذر الجذر
^D
لاحظ أن أول من الخط إلزامي هنا، لأنه هو المظروف الذي
تعتمد المصادقة. وبما أننا نقوم بتغذية وكيل البريد برسالة مصنوعة يدويًا، فإننا
يجب توفير مظروف صالح وإلا فلن يتحول الخادم إلى الوضع الموثوق...
سيكون التأثير الجانبي لإعادة إنشاء كلمة المرور الخاصة بك هو تشفيرها في ملف باسود ملف،
بحيث لا يستطيع أي شخص ينظر إلى هذا الملف تخمين ملفك جذر كلمة المرور، ونأمل.
بمجرد أن يكون لديك صالحة جذر الطاقة المثبتة، يمكنك إنشاء نظام القوة باستخدام
قوة جديدة. ويمكن بعد ذلك إنشاء المزيد من الصلاحيات وحذفها باستخدام نظام الطاقة فقط.
يجب عليك أيضًا إنشاء أمن power وإعطائها كلمة مرور مختلفة عن جذر
كلمة المرور. هذا مطلوب حقًا فقط إذا كنت ترغب في إدارة الخادم عن بعد. لو
إذا كان لديك وصول محلي وفسدت الأشياء، فمن الممكن دائمًا تغيير الجذر
كلمة المرور يدويًا عن طريق تكرار تسلسل التمهيد هذا.
لاحظ أنه يتم إجراء عمليات التحقق من التخليص باستخدام عنوان مغلف الرسالة، وهو أ
يصعب تزويرها قليلاً من حقول الرأس العادية مثل المرسل:. يتم استخراج المظروف
من خلال النظر إلى سطر الرأس الأول، والذي يبدو في أنظمة Unix كما يلي:
من عنوان المغلف تاريخ إرسال
ويتم إدراجه بواسطة وكيل نقل البريد (MTA). إذا كنت تستخدم ارسل بريد مثل MTA،
عندها فقط افضل أعلن المستخدمون في Sendmail.cf الملف قادر على إنشاء ملف "وهمي"
عنوان المغلف، وهي ميزة يستخدمها عادةً مرسلي القائمة البريدية، منذ ذلك العنوان
ثم يتم استخدامه كهدف للارتداد في حالة عدم إمكانية تسليم البريد. إذا كان ذلك أولا
سطر الرأس غائب، ويتم حساب المرسل باستخدام المرسل: الحقل إذا كان موجودا، ثم
بدءًا من: المجال، ولكن المصادقة تم تعيين المتغير على خطأ ولن يتحول الخادم إليه
الوضع الموثوق؛ بمعنى آخر، لن يكون من الممكن الحصول على صلاحيات في تلك الجلسة.
علاوة على ذلك، نظرًا لأنه يتم إرسال نص الجلسة إلى نفس عنوان المغلف المستخدم
للتحقق من الأهلية للحصول على الطاقة، لا يمكن استخدام ميزة الخادم من أجل ذلك
استرجاع المعلومات السرية الموجودة في الموقع حيث تاجر البريد يتم تشغيله منذ
سيتم إرسال المعلومات إلى أحد المستخدمين الذين حصلوا على هذه السلطة. انها
مسؤولية أنت، المستخدم، للتأكد من أن هذا لا يمكن أن يحدث أو يمكنك الدخول فيه
مشاكل قانونية.
وأخيرًا، يجب حماية الأوامر الحساسة بقوة مناسبة، كما يجب توخي الحذر الشديد
يجب أن يتم كتابة تنفيذ الأمر لضمان عدم إمكانية حدوث الأمن
تم التحايل عليه. لكن لا، لا يُعتقد أن ميزة وكيل البريد هذه تشكل خطورة على
النظام أو الموقع الذي يتم استخدامه عليه، حيث يمكن للمستخدم المحدد تنفيذ واحد بشكل تافه عبر
نص شل ذو خمسة أسطر. إذا كان الأمن هو حقا مشكلة، .إلى الأمام الملفات باستخدام الأنابيب
يجب حظر الميزة والوصول إليها كرون ممنوع لتجنب البريد التلقائي
المعالجة (نظرًا لأنه سيكون من الممكن استدعاء cron لـ a تاجر البريد عملية -أو أي
برنامج آخر لهذه المسألة-لمعالجة البريد الوارد بطريقة قابلة للمقارنة).
مثال
فيما يلي مثال يوضح الخطوات المتبعة في إنشاء ملف قذيفة الأمر الذي من شأنه
خذ برنامجًا نصيًا عن طريق جمع الأسطر حتى علامة EOF وإطعامه بقشرة حقيقية لـ
تنفيذ. حيث أن السماح بهذه الميزة دون أي ضمانات سيكون بمثابة أمان حقيقي
الحفرة، ونحن نحمي ذلك من خلال طلب السلطة قذيفة قبل السماح بالتنفيذ.
هنا هو تنفيذي ل قذيفة الأمر (متوفر في توزيع mailagent
مع متنوع/شل):
#!/ بن / ش
# تنفيذ الأوامر من stdin، كما يرسلها خادم mailagent.
# واصف الملف رقم 3 هو قناة لنص الجلسة.
# تأكد من أن لدينا قوة الصدفة.
# لا تسمح حتى لقوة الجذر بتجاوز ذلك لأسباب أمنية.
الحالة ":$powers:" في
*:صدَفَة:*) ؛؛
*)
صدى "تم رفض الإذن." >&3
خروج 1
;;
ESAC
# ربما تم تعريف الصدفة... وإلا فاستخدمها / بن / ش
حالة "$shell" في
'') قذيفة ='/ بن / ش';;
ESAC
# عادةً، يتم تضمين مخرجات أمر الصدفة في النص فقط
# حالة الخطأ أو عندما يطلب المستخدم التتبع. ولكن هنا، نحن بحاجة إلى ذلك
# شاهد ما حدث، لذلك تتم إعادة توجيه كل شيء إلى نص الجلسة.
exec $Shell -x >&3 2>&3
لاحظ كيف يمكننا الوصول إلى $ القوى و $شل متغيرات البيئة. هذا الأخير هو
المعرفة من قبل المستخدم للسماح بالإعداد الديناميكي للقذيفة.
على افتراض أننا قمنا بتخزين هذا الأمر تحت servdir/shell.sh (لا تنس إضافة التنفيذ
بت في الملف...)، إليك كيفية تعريفه ومتغيره في ملف com.comserver ملف.
قذيفة قذيفة - ذ -
قذيفة فار - - -
يوضح هذا المثال أن هناك مساحة اسم منفصلة للمتغيرات والأوامر.
علاوة على ذلك، فإن الأمر يحمل نفس اسم نوعه - لا تدع ذلك يربكك :-).
الآن، بافتراض أنك قمت بالفعل بإنشاء ملف نظام السلطة وحمايتها بكلمة مرور
(لنفرض تمرير النظام لغرض هذا المثال)، تحتاج إلى إنشاء الصدفة
قوة. على الرغم من أنه يمكنك القيام بذلك يدويًا (كما هو الحال عندما تصنع ملف جذر القوة)، إنها
من الأفضل استخدام واجهة SERVER لأنها تضمن الاتساق.
من أجل إنشاء قذيفة الطاقة المطلوبة لاستخدام المنشأة حديثًا قذيفة الأمر ، أنت
تحتاج إلى إضافة القاعدة التالية إلى ملف القاعدة الخاص بك:
الموضوع: الخادم {حفظ الخادم؛ الخادم -t };
والذي سيحفظ كل بريد الخادم في مجلد مخصص ويعالجها. لاحظ ال -t
الخيار، الذي يسمح بالوضع الموثوق، والذي يمكن من خلاله اكتساب الصلاحيات. الآن أرسل لنفسك
البريد التالي:
الموضوع: الخادم
نظام الطاقة sys-pass
newpower قذيفة قذيفة تمرير
[البريد الإلكتروني محمي]
EOF
الذي يطلب نظام القوة (اللازمة لإنشاء معظم الصلاحيات)، ثم تقوم بإنشاء ملف
قوة جديدة قذيفة، التنازل تمرير قذيفة ككلمة المرور والمقاصة [البريد الإلكتروني محمي] لذلك.
لاحظ تعبئة المستند هنا لأمر newpower، حتى علامة EOF. بالطبع،
تحتاج إلى استبدال العنوان بعنوانك الحقيقي.
سوف تتلقى نسخة من الجلسة على هذا المنوال:
---- نسخة جلسة Mailagent لـ [البريد الإلكتروني محمي] ----
----> نظام الطاقة ********
حسنا.
====> نيوباور شل ********
حسنا.
====> --
نهاية المعالجة (.التوقيع)
---- نسخة نهاية جلسة mailagent ----
لاحظ كلمات المرور المخفية، والتغيير الفوري بمجرد انتهاء طاقة النظام
ممنوح. نظرًا لأن مرسل البريد الخاص بي يقوم تلقائيًا بإلحاق التوقيع، فإن المعالجة تتوقف عليه.
الآن دعونا نستخدم هذا الأمر الجديد... أرسل لنفسك البريد التالي:
الموضوع: الخادم
تعيين شل /bin/ksh
تعيين eof END
قذيفة
لس -l / الخ / باسود
END
قذيفة قذيفة السلطة
قذيفة
لس -l / الخ / باسود
END
إذا كان كل شيء على ما يرام، فيجب أن تتلقى نسخة تبدو كما يلي:
---- نسخة جلسة Mailagent لـ [البريد الإلكتروني محمي] ----
----> قم بتعيين shell /bin/ksh
حسنا.
----> تعيين نهاية النهاية
حسنا.
----> قذيفة
طلب الاذن مرفوض.
أعاد الأمر حالة غير صفرية (1).
فشل.
----> غلاف الطاقة ********
حسنا.
====> قذيفة
+ ليرة سورية -ل / الخ / باسود
-rw-r--r-- 1 نظام الجذر 691 01 أكتوبر 14:24 / الخ / باسود
حسنا.
====> --
نهاية المعالجة (.التوقيع)
---- نسخة نهاية جلسة mailagent ----
الدعوة الأولى لل قذيفة فشل الأمر لأننا نفتقر إلى قذيفة قوة. السلسلة
"تم رفض الإذن." يتم ردده بواسطة الأمر نفسه في واصف الملف رقم 3 ويقوم بذلك
إلى النص.
الخاتمة
يمكن استخدام خادم البريد العام المطبق في mailagent لتنفيذ قائمة بريدية
مدير، خادم تصويت، خادم أرشيف، إلخ... لسوء الحظ، لا يحدث ذلك حاليًا
لدينا مفهوم الدولة، مع مجموعة أوامر مخصصة لكل دولة، لذلك فهو ليس كذلك
من الممكن تنفيذ خادم أرشيف ذكي.
إذا قمت بتنفيذ أوامر خادم بسيطة جديدة وتشعر أنها عامة بما يكفي لتكون كذلك
ساهمت، من فضلك أرسلها لي وسأقوم بدمجها بكل سرور.
أمثلة
فيما يلي بعض الأمثلة على ملفات القاعدة. أولاً، إذا لم تقم بتحديد ملف القاعدة أو إذا كان كذلك
فارغة، تنطبق القاعدة المضمنة التالية:
الكل: /^Subject: [Cc]ommand/ { LEAVE; عملية }؛
يتم ترك كل بريد في صندوق البريد. علاوة على ذلك، أرسل بريدًا يحتوي على "الموضوع: الأمر" في أي مكان في ملف
تتم معالجة الرسالة.
ملف القاعدة التالي هو الملف الذي أستخدمه حاليًا:
عنوان البريد = ~/mail;
الكل: /^Subject: [Cc]ommand/ { SAVE cmds; عملية }؛
إلى: /^[البريد الإلكتروني محمي]/ { POST -l mail.gue };
الظاهر-إلى: الكبش،
مجموعات الأخبار: mail.gue { BOUNCE [البريد الإلكتروني محمي] };
الظاهر-إلى: الكبش،
مجموعات الأخبار: mail.gue {DELETE}؛
من: الجذر، إلى: الجذر { BEGIN ROOT؛ يرفض }؛
/^ إخراج التشغيل اليومي/ { WRITE ~/var/log/york/daily.٪د }؛
/^ إخراج التشغيل الأسبوعي/ { WRITE ~/var/log/york/weekly };
/^إخراج التشغيل الشهري/ {WRITE ~/var/log/york/monthly };
من: ذاكرة الوصول العشوائي {بدء تشغيل ذاكرة الوصول العشوائي؛ يرفض }؛
إلى: ذاكرة الوصول العشوائي {مغادرة}؛
X-Mailer: /mailagent/ { LEAVE };
{حذف}؛
تم تعيين دليل المجلد على ~/mail. يتم حفظ جميع رسائل الأوامر في المجلد
~/البريد/cmds ومعالجتها. أنها لا تظهر في صندوق البريد الخاص بي. رسائل موجهة إلى غوي
القائمة البريدية (مجموعة مستخدمي إيفل الفرنسية، وبالتحديد Groupe des Utilisateurs Eiffel) هي
نشرت على مجموعة الأخبار المحلية mail.gue ولا تظهر في صندوق البريد الخاص بي أيضًا. أي متابعة-
يتم إرسال ما تم إعداده في هذه المجموعة إلي عبر البريد عارض أخبار أفاست (وليس مباشرة إلى القائمة البريدية،
لأن هذه الرسائل ستعود إلي مرة أخرى ويتم إرسالها إلى مجموعة الأخبار، والتي بدورها
سيتم إرسالهم بالبريد إلى القائمة، وما إلى ذلك، وما إلى ذلك). ومن هنا القاعدة التالية
الذي يلتقط تلك المتابعات ويرسلها إلى القائمة البريدية. تلك الرسائل سوف
عد بالفعل، ولكن قاعدة _SEEN_ ستحذفها ببساطة.
على جهازي، رسائل البريد الإلكتروني ل جذر يتم إحالتها لي. ومع ذلك، كل يوم، كرون الخفي
يبدأ بعض العمليات للقيام ببعض عمليات التنظيف الإداري (تدوير ملفات السجل، وما إلى ذلك...)، و
إرسال النتائج مرة أخرى. تتم إعادة توجيههم إلى مجلدات محددة باستخدام أمر WRITE،
للتأكد من أنهم لا يكبرون بلا حدود. لاحظ استبدال الماكرو لليومية
الإخراج (يوم الاثنين، يتم تخزين الإخراج في يوميا.1 على سبيل المثال).
تمنع المجموعة التالية من القواعد نظام البريد من إرسال رسائل البريد الإلكتروني عندما أكون في
توسيع الاسم المستعار للمجموعة. هذا ال ارسل بريد الخيار الذي قمت بتعطيله على جهازي. الرعاية هي
ومع ذلك، تم اتخاذها للحفاظ على رسائل البريد القادمة من وكيل البريد والتي أتلقاها ككربون أعمى
نسخ.
مذكرة قانونية
من أجل الحد من الحمل الزائد على النظام، فقط صورة واحدة؟ يُسمح بعملية وكيل البريد
لتشغيل الأوامر. إذا وصل بعض البريد الجديد أثناء تشغيل وكيل بريد آخر، فهذا
يتم وضع البريد في قائمة الانتظار وستتم معالجته لاحقًا بواسطة رئيسي وكيل البريد.
لنفس السبب، يتم وضع الرسائل المرسلة بواسطة mailagent في قائمة الانتظار ارسل بريد، لتجنب
تكلفة نقل البريد أثناء معالجة الأوامر.
الأمن
أولا، اسمحوا لي أن أناقش ما أمن يعني هنا. نعم هو كذلك ليست يعني سلامة النظام ضد
هجمات الدخلاء. إذا كان النظام الخاص بك يسمح بذلك .إلى الأمام السنانير و/أو كرون الوظائف التي سيتم تعيينها من قبل
للمستخدمين العاديين، فإن نظامك غير آمن على الإطلاق. فترة. لذلك نحن لا نزعج
الأمان على مستوى النظام، بل على مستوى حسابك الخاص حيث يتم توفير كل أنواع الأمان
يتم الاحتفاظ بالبيانات الثمينة.
لتجنب أي تدخل ضار عبر أحصنة طروادة، تم استخدام برنامج C تصفية سوف يرفض تشغيل إذا
ملف التكوين ~ / .mailagent أو أن ملف القاعدة المحدد قابل للكتابة عالميًا أم لا
المملوكة للمستخدم. يتم فرض هذه الاختبارات حتى لو تصفية لا يعمل سيتويد،
لأنها تهدد أمان حسابك. ال تاجر البريد سوف يؤدي أيضا
بعض تلك الشيكات، في حالة عدم الاحتجاج بها عبر C تصفية.
في الواقع، إذا كان شخص ما يمكن أن يكتب في الخاص بك ~ / .mailagent الملف، فيمكنه بسهولة تغيير ملفك
القواعد معلمة التكوين للإشارة إلى ملف قاعدة مزيف آخر ثم إرسال ملف
mail، والذي سيؤدي إلى تشغيل mailagent، الذي يعمل مثلك. عبر الأمر RUN، هذه الإمكانية
يمكن للمتطفل تشغيل أي أمر، باستخدام الامتيازات الخاصة بك، ويمكنه تعيين حصان طروادة له
الاطلاع في وقت لاحق. وبتطبيق نفس المنطق، يجب أيضًا حماية ملف القاعدة بإحكام.
وليس من المستغرب أن تنطبق نفس القواعد عليك newcmd الملف الذي يستخدم لوصف
أوامر التصفية الموسعة وإلا فإنه سيسمح لشخص ما بإعادة تعريف أ
أمر قياسي شائع الاستخدام مثل LEAVE وسيكون قادرًا لاحقًا على تحمل هويتك.
الإصدارات بعد 3.0 PL44 تأتي مع نسخة محسنة (من وجهة نظر أمنية) C تصفية
لن يؤدي ذلك إلى إجراء الفحوصات المذكورة أعلاه فحسب، بل سيضمن أيضًا أن بيرل
قابل للتنفيذ و تاجر البريد البرنامج النصي الذي هو على وشك تنفيذه ليس محميًا بشكل فضفاض (متى
com.execsafe قيد التشغيل أو عند التشغيل بامتيازات المستخدم المتميز). علاوة على ذلك، إذا تصفية is
اقامة في الخاص بك .إلى الأمام كما هو موضح في صفحة الدليل هذه، سيكون قادرًا على التحقق من نفسه
السلامة وسوف يحذرك بشدة إذا كان من الممكن العبث به، الأمر الذي قد يهزم الجميع
التفتيش الأمني.
تم أيضًا توسيع Mailagent بحيث يتم تنفيذ كافة البرامج عبر RUN والأصدقاء، وكذلك
يتم فحص خطافات البريد الإلكتروني بحثًا عن عيوب الحماية الواضحة قبل تشغيلها فعليًا
البرامج النصية (بدءًا بالرمز السحري #!) والبرامج النصية لـ Perl التي تتبع الرمز السحري "exec Perl
إذا تم فحص تعويذة $under_shell" خصيصًا لمزيد من الأمان ذات الصلة
مترجم. يتم إجراء هذه الفحوصات بشكل منهجي (متى com.execsafe قيد التشغيل أو متى
يعمل بامتيازات المستخدم المتميز) حتى لو كان تأمين لم يتم ضبط المعلمة على ON. أيضًا،
جميع الملفات على وشك أن تكون إكسيك ()يتم فحص ed باستخدام نفس طريقة الفحص الموسعة المستخدمة عندما
تأمين قيد التشغيل (يتم تخطي اختبارات الملكية ولكن عند التحقق من ذلك إكسيك ()- نيس أ
الملف).
استخدم mailagent عبر الإنترنت باستخدام خدمات onworks.net