| FDM.CONF(5) | File Formats Manual | FDM.CONF(5) |
نام (NAME)
fdm.conf —
فایل
پیکربندی
fdm
توضیحات (DESCRIPTION)
این صفحه
راهنما
فایل
پیکربندی
fdm(1) را
شرح میدهد.
این فایل
حسابها
برای
دریافت
ایمیل،
تعدادی
عملیات
قابل
انجام، و
قوانین
پیونددهندهٔ
یک عبارت
منظم (regexp) به یک
عملیات را
تعریف
میکند. این
فایل
یکبار از
بالا به
پایین
تجزیه
میشود،
بنابراین
تعاریف
حسابها و
عملیاتها
باید پیش از
ارجاع به
آنها در یک
قانون، در
فایل ظاهر
شوند.
قوانین از
ابتدا تا
انتها
ارزیابی
میشوند و
(مگر در
حالتی که با
کلیدواژهٔ
continue
بازنویسی
شود) فرآیند
ارزیابی در
اولین
تطابق
متوقف
میگردد.
این فایل دارای قالب زیر است:
خطوط خالی و خطوطی که با نویسهٔ ‘#’ آغاز میشوند نادیده گرفته خواهند شد.
عبارات منظم و رشتهها باید درون گیومهٔ دوگانه (double quotes) قرار گیرند. نویسههای خاص در عبارات منظم و رشتهها (از جمله گذرواژهها) باید اسکیپ (escape) شوند. توجه داشته باشید که این موضوع در عبارات منظم ممکن است بهمعنای دابل-اسکیپ (double-escaping) باشد.
دستورات مجاز در بخشهای زیر پوشش داده شدهاند.
گزینهها (OPTIONS)
گزینهها
با استفاده
از دستور
set
پیکربندی
میشوند.
این دستور
میتواند
با
گزینههای
زیر دنبال
شود، یک
گزینه در هر
دستور:
maximum-sizesize- برای تنظیم
حداکثر
اندازهٔ یک
ایمیل
استفاده
میشود.
ایمیلهای
بزرگتر از
این حد
نادیده
گرفته (دور
ریخته) شده
و در صورت
لزوم، از
سرور حذف
نمیشوند.
اندازه ممکن است بهصورت یک عدد ساده بر حسب بایت یا با پسوند ‘
K’ برای کیلوبایت، ‘M’ برای مگابایت یا ‘G’ برای گیگابایت مشخص شود. مقدار پیشفرض ۳۲ مگابایت و حداکثر آن یک گیگابایت است. delete-oversized- اگر این
گزینه مشخص
شود،
fdm(1)
تلاش
میکند
پیامهایی
را که از
maximum-sizeفراتر میروند حذف کند و ادامه دهد. اگر مشخص نشود، پیامهای با اندازهٔ بیشازحد یک خطای مهلک تلقی شده و موجب توقف اضطراری (abort) fdm(1) میشوند.توجه داشته باشید که fdm(1) ممکن است تعدادی پیام در صف داشته باشد (تا سقف تنظیم
queue-high ،که در صورت بازنویسی برای هر حساب دو برابر میشود)، بنابراین این تنظیم و گزینهٔqueue-highباید با در نظر گرفتن فضای موجود در پوشهٔ موقت و پیامدهای ناشی از توقف fdm(1) بهدلیل پر شدن فضا، تعیین شوند. queue-highnumber- حداکثر
تعداد
پیامهایی
را که
fdm(1)
میتواند
بهطور
همزمان
نگه دارد
تنظیم
میکند.
fdm(1)
همزمان با
دریافت
پیام بعدی،
تلاش
میکند
پیامهای
قبلی موجود
در صف را
پردازش کند.
بهمحض
رسیدن به
این حد،
پیامهای
بیشتری
دریافت
نخواهد شد
تا زمانی که
تعداد
پیامهای
نگهداریشده
به مقدار
queue-lowکاهش یابد. queue-lownumber- طولی از صف
پیام است که
پس از رسیدن
به حد
queue-high ،باید به آن کاهش یابد تا فرآیند دریافت پیامها مجدداً از سر گرفته شود. ignore-errors- در صورت
تنظیم، اگر
یک تحویل
پیام با
شکست مواجه
شود،
fdm.confبهجای توقف اضطراری به پردازش ایمیل ادامه خواهد داد. allow-multiple- اگر این گزینه مشخص شود، fdm(1) تلاشی برای ایجاد فایل قفل نمیکند و به چندین نمونه اجازه میدهد بهطور همزمان اجرا شوند.
lock-filepath- یک فایل قفل جایگزین تنظیم میکند. مقدار پیشفرض برای کاربران غیرریشه ~/.fdm.lock و برای کاربر ریشه /var/db/fdm.lock است.
lock-timeouttime- مدتزمانی
را که
fdm.confپیش از انصراف برای دستیابی به فایل قفل تلاش میکند، تعیین میکند. lock-wait- در صورت
وجود،
fdm.confبهجای خروج فوری با خطا، بهمدتlock-timeoutمنتظرlock-fileخواهد ماند. command-useruser- کاربری را
مشخص
میکند که
برای اجرای
عملیاتهای
execوpipeاستفاده میشود. بهطور پیشفرض این کاربر همان کاربری است که fdm را فراخوانی کرده است. default-useruser- کاربر
پیشفرضی
را تعیین
میکند که
پیش از
تحویل
ایمیل باید
به آن تغییر
هویت داده
شود، در
صورتی که
fdm(1) با
کاربر ریشه
در حال اجرا
باشد و
کاربر
جایگزینی
در دستور
اقدام یا
قانون مشخص
نشده باشد.
این گزینه
ممکن است با
سوییچ
-uدر خط فرمان بازنویسی شود. اگر با کاربر ریشه اجرا شود، تعیین یک کاربر پیشفرض الزامی است. lookup-orderlocation ...- ترتیبی را
که جستجوی
کاربر از چپ
به راست در
آن انجام
میشود
مشخص
میکند.
انواع ممکن
عبارتند از
passwdبرای استفاده از فایل passwd(5) ، یاcourierبرای استفاده از Courier authlib (در صورتی که پشتیبانی آن کامپایل شده باشد). lock-typestype ...- انواع
قفلهای
مورد
استفاده
برای قفل
کردن mbox را
مشخص
میکند.
انواع ممکن
عبارتند از
fcntl ،flockوdotlock. انواعflockوfcntlمانعةالجمع هستند. مقدار پیشفرضflockاست. proxyurl- به fdm(1) دستور میدهد تمام اتصالها را از طریق url پروکسی کند. در حال حاضر پروکسیهای HTTP و SOCKS5 پشتیبانی میشوند (نشانیهای اینترنتی بهشکل http://host[:port] یا socks://[user:pass@]host[:port]). برای HTTP هیچگونه احراز هویتی پشتیبانی نمیشود.
unmatched-maildrop|keep- این گزینه
کنترل
میکند که
fdm(1) با
ایمیلهایی
که به
انتهای
مجموعه
قوانین
میرسند
(ایمیلهایی
که با هیچ
قانونی
تطابق
ندارند یا
فقط با
قوانینی
دارای
کلیدواژهٔ
continueتطابق دارند) چه کند.dropباعث دور ریختن چنین ایمیلهایی میشود، وkeepتلاش میکند ایمیل را روی سرور باقی بگذارد. رفتار پیشفرض، نگهداشتن ایمیل و ثبت یک هشدار در لاگ مبنی بر رسیدن آن به انتهای مجموعه قوانین است. purge-aftercount- گزینهٔ
purge-afterباعث میشود fdm(1) پس از دریافت count ایمیل، تلاش کند ایمیلهای حذفشده را از روی سرور پاکسازی (purge) کند (در صورت پشتیبانی). این قابلیت در اتصالهای ناپایدار مفید است تا در صورت قطعی اتصال، تعداد ایمیلهای دریافتی مجدد محدود شود، اما توجه داشته باشید که میتواند منجر به کاهش چشمگیر سرعت شود. no-received- در صورت وجود این گزینه، fdm(1) سرآیند ‘Received’ را در هر ایمیل درج نخواهد کرد.
no-create- در صورت تنظیم این گزینه، fdm(1) تلاشی برای ایجاد maildirها و mboxها یا بخشهای مفقود مسیر آنها نخواهد کرد.
file-umaskuser| umask- مشخصکنندهٔ
umask(2)
مورد
استفاده
هنگام
ایجاد
فایلها
است.
userبهمعنای استفاده از umask تنظیمشده هنگام راهاندازی fdm(1) است، یا umask میتواند بهصورت یک عدد هشتهشتی (octal) سهرقمی مشخص شود. مقدار پیشفرض 077 است. file-groupuser| group- امکان
تعیین
مالکیت
گروهی
پیشفرض
فایلها و
دایرکتوریهای
ایجادشده
توسط
fdm(1) را
فراهم
میکند.
group
میتواند
رشتهٔ نام
گروه یا
شناسهٔ
عددی gid باشد.
اگر
userاستفاده شود یا این گزینه در فایل پیکربندی نیامده باشد، fdm(1) تلاشی برای تنظیم گروه فایلها و دایرکتوریهای جدید نمیکند. timeouttime- حداکثر زمان انتظار برای ارسال داده توسط سرور پیش از بستن اتصال را کنترل میکند. مقدار پیشفرض ۹۰۰ ثانیه است.
verify-certificates- به fdm(1) دستور میدهد گواهیهای SSL را برای تمام اتصالهای SSL اعتبارسنجی کند.
فراخوانی فایلها (INCLUDING FILES)
فایلهای
پیکربندی
بیشتر ممکن
است با
استفاده از
دستور include
فراخوانی
شوند:
includepath
فایل مورد نظر برای فراخوانی، ابتدا بهعنوان یک مسیر مطلق و سپس بهصورت نسبی نسبت به دایرکتوری حاوی فایل پیکربندی اصلی جستجو میشود.
ماکروها (MACROS)
ماکروها ممکن است با استفاده از نحو زیر تعریف شوند:
ماکروها با پیشوند $ برای مشخص کردن مقدار رشتهای و % برای مشخص کردن مقدار عددی مشخص میشوند. پس از تعریف، یک ماکرو ممکن است در هر جایی که انتظار یک رشته یا عدد میرود استفاده شود. ماکروها ممکن است با احاطه کردن نام آنها (پس از $ یا %) با {} در رشتهها جاسازی شوند، مانند:
کلیدواژههای
ifdef ، ifndef
و endif ممکن
است برای
تجزیهٔ
شرطی بخشی
از فایل
پیکربندی،
بسته به
اینکه
ماکروی
دادهشده
وجود دارد
یا ندارد،
استفاده
شوند.
بلوکهای
ifdef و ifndef
میتوانند
تودرتو
باشند.
دستورات پوسته (SHELL COMMANDS)
نتیجهٔ یک دستور پوسته ممکن است با قرار دادن آن در $() یا %() در هر نقطهای که انتظار یک رشته یا عدد میرود استفاده شود. اگر از اولی استفاده شود، نتیجهٔ دستور بهصورت رشته استفاده میشود؛ اگر از دومی استفاده شود، به یک عدد صحیح تبدیل میگردد. دستورات پوسته هنگام تجزیه شدن فایل پیکربندی اجرا میشوند.
حسابها (ACCOUNTS)
دستور
account برای
دستور دادن
به fdm(1)
جهت دریافت
ایمیل از یک
حساب
استفاده
میشود. نحو
آن بهصورت
زیر است:
accountname [users] [disabled] type [args] [keep]
آرگومان name رشتهای است که نامی را برای حساب مشخص میکند. آرگومان اختیاری users دارای شکل زیر است:
دو گزینهٔ
اول کاربر
یا فهرستی
از
کاربرانی
را مشخص
میکنند که
ایمیل باید
هنگام
اجرای یک
اقدام
بهنام
آنها
تحویل داده
شود. اگر
کاربری
مشخص نشود،
کاربر
پیشفرض
(تنظیمشده
با set
default-user)
استفاده
خواهد شد.
کاربران
مشخصشده
بهعنوان
بخشی از
تعریف حساب
ممکن است با
آرگومانهای
مشابه در
تعاریف
عملیات یا
در قوانین
تطابق
بازنویسی
شوند. اگر
fdm(1)
بهعنوان
کاربر
غیرریشه
اجرا شود،
همچنان هر
عملیات را
یکبار
برای هر
کاربر اجرا
خواهد کرد،
اما قادر به
تغییر هویت
به آن کاربر
نخواهد
بود،
بنابراین
عملیات
چندین بار
با کاربر
فعلی اجرا
خواهد شد.
کلیدواژهٔ
disabled به
fdm(1)
دستور
میدهد این
حساب را
نادیده
بگیرد مگر
اینکه
صریحاً با
گزینهٔ -a
در خط فرمان
فعال شده
باشد. اگر
کلیدواژهٔ
keep مشخص
شود، تمام
ایمیلهای
جمعآوریشده
از این حساب
نگهداری
میشوند
(حذف
نمیشوند)
حتی اگر با
اقدام drop
تطابق
داشته
باشند.
انواع حسابهای پشتیبانیشده و آرگومانهای آنها عبارتند از:
stdin- این نوع
حساب،
ایمیل را از
stdinمیخواند، در صورتی که به یک لوله (pipe) متصل باشد. این ممکن است برای تحویل ایمیل از sendmail(8) استفاده شود؛ برای جزئیات به fdm(1) مراجعه کنید. pop3serverhost [portport] [useruser] [passpass] [only] [no-apop] [no-uidl] [starttls] [insecure]pop3sserverhost [portport] [userpass] [only] [no-apop] [no-verify] [no-uidl] [insecure]- این
گزارهها
یک حساب POP3 یا
POP3S را تعریف
میکنند.
عنصر userpass
شکل زیر را
دارد:
- [
useruser] [passpass]
آرگومانهای host ، user و pass باید رشته باشند. اگر نام کاربری یا گذرواژه ارائه نشود، fdm(1) تلاش میکند آن را در فایل ~/.netrc جستجو کند (برای جزئیات قالب فایل به ftp(1) مراجعه کنید). گزینهٔ درگاه (port) ممکن است رشتهای باشد که در پایگاه دادهٔ services(5) جستجو شود، یا یک عدد باشد. اگر حذف شود، درگاه پیشفرض (۱۱۰ برای POP3، ۹۹۵ برای POP3S) استفاده میشود.
گزینهٔ only بهشکل زیر است:
- [
new-only|old-only]cachepath
گزینهٔ
new-onlyتنها ایمیلهایی را دریافت میکند که قبلاً دریافت نشدهاند، وold-onlyعکس آن است: تنها ایمیلهایی را دریافت میکند که قبلاً دریافت شدهاند. فایل کش برای ذخیرهٔ وضعیت صندوق پستی POP3 استفاده میشود. فلگno-apopدستور میدهد که fdm(1) از دستور APOP در POP3 برای احراز هویت استفاده نکند، و کلیدواژهٔno-verifyبه fdm(1) دستور میدهد اعتبارسنجی گواهی SSL را برای این حساب نادیده بگیرد. کلیدواژهٔno-uidlباعث میشود fdm(1) از دستور UIDL برای واکشی ایمیلها استفاده نکند. این امر عمدتاً برای سرورهای POP3 ناسازگار یا معیوب کاربرد دارد.گزینهٔ
starttlsتلاش میکند پس از اتصال از STARTTLS استفاده کند.گزینهٔ
insecureاجازهٔ استفاده از پروتکلهای ناامن را میدهد که در حال حاضر شامل SSLv2، SSLv3 و TLS1.0 است. - [
pop3pipecommand [userpass] [only] [no-apop]- این نوع
حساب از
پروتکل POP3 که
از طریق
command لوله (pipe)
شده است
استفاده
میکند،
مانند
ssh(1). اگر
دستور
هرگونه
خروجی در
stderrتولید کند، در لاگ ثبت میشود. برای POP3 روی پایپ، ارائهٔ نام کاربری و گذرواژه اختیاری نیست و نمیتواند از ~/.netrc خوانده شود. imapserverhost [portport] [userpass] [foldername] [only] [no-cram-md5] [no-plain] [no-login] [starttls] [insecure] [oauthbearer] [xoauth2]imapserverhost [portport] [userpass] [folders]{name ...}[only]imapsserverhost [portport] [userpass] [folders] [only] [no-verify] [no-cram-md5] [no-plain] [no-login] [insecure] [oauthbearer] [xoauth2]- این
گزارهها
یک حساب IMAP یا
IMAPS را تعریف
میکنند.
پارامترها
همانند
حساب POP3 یا POP3S
هستند،
بهجز
گزینهٔ
اضافی folders
که نام پوشه
یا
پوشههای
مورد
استفاده را
تنظیم
میکند
(حالت
پیشفرض
دریافت از inbox
است). این
گزینه شکل
زیر را
دارد:
درگاههای پیشفرض مورد استفاده، ۱۴۳ برای IMAP و ۹۹۳ برای IMAPS هستند. برای IMAP، مورد only صرفاً شامل یکی از کلیدواژههای
new-onlyیاold-onlyاست – نیازی به فایل کش نیست.گزینههای
no-cram-md5 ،no-plainوno-loginروش احراز هویت دادهشده را غیرفعال میکنند. رفتار پیشفرض استفاده از CRAM-MD5 در صورت در دسترس بودن، سپس PLAIN، و در غیر این صورت LOGIN است.گزینهٔ
starttlsتلاش میکند پس از اتصال از STARTTLS استفاده کند.گزینهٔ
insecureاجازهٔ استفاده از پروتکلهای ناامن را میدهد که در حال حاضر شامل SSLv2، SSLv3 و TLS1.0 است.گزینهٔ
oauthbearerتلاش میکند از توکن حامل OAuth 2.0 بهعنوان روش احراز هویت استفاده کند. imappipecommand [userpass] [folders] [only]- همانند
pop3pipe ،این نوع حساب از پروتکل IMAP که از طریق command لوله شده است استفاده میکند. اگر user و pass اختیاری IMAP ارائه شوند، در صورت نیاز استفاده خواهند شد، اما اگر یکی از آنها ارائه شود، ارائهٔ هر دو الزامی است – استفاده از ~/.netrc مجاز نیست.ایمیلهای دریافتشده با استفاده از پروتکل IMAP با یک برچسب پوشه حاوی نام پوشهٔ مبدأ علامتگذاری میشوند.
maildirpathmaildirs{path ...}- این انواع
حساب به
fdm(1)
دستور
میدهند
ایمیلها
را از maildir یا
maildirهای
مشخصشده
واکشی کند.
این قابلیت
به fdm(1)
اجازه
میدهد
برای فیلتر
کردن
ایمیل،
دریافت از
یک maildir و حذف
(دور ریختن)
ایمیلهای
ناخواسته،
یا تحویل
ایمیل به یک
maildir دیگر یا به
یک mbox
استفاده
شود.
ایمیل دریافتشده از یک maildir با یک برچسب maildir حاوی نام پایهٔ (basename) فایل ایمیل علامتگذاری میشود.
mboxpathmboxes{path ...}- این
گزینهها
مشابه
maildirوmaildirsهستند، اما باعث میشوند fdm(1) ایمیلها را از یک mbox یا مجموعهای از mboxها واکشی کند.ایمیل دریافتشده از یک mbox با یک برچسب mbox حاوی نام پایهٔ فایل mbox علامتگذاری میشود.
nntpserverhost [portport] [userpass]groupgroupcachecachenntpserverhost [portport] [userpass]groups{group ...}cachecachenntpsserverhost [portport] [userpass]groupgroupcachecachenntpsserverhost [portport] [userpass]groups{group ...}cachecache- یک حساب NNTP.
مقالهها
از گروه یا
گروههای
مشخصشده
واکشی و
تحویل داده
میشوند.
شاخص و message-id
آخرین
مقالهٔ
واکشیشده
در هر گروه
در فایل کش
مشخصشده
ذخیره
میشود.
هنگامی که
fdm(1)
مجدداً
اجرا شود،
دریافت
مقالهها
از مقالهٔ
کششده
آغاز
میگردد.
توجه داشته
باشید که
گزینهٔ
keepبرای حسابهای NNTP کاملاً نادیده گرفته میشود – تمام ایمیلها نگهداری میشوند و کش همیشه بهروزرسانی میشود.
برچسبگذاری (TAGGING)
هنگامی که
ایمیل توسط
fdm(1)
پردازش
میشود، با
تعدادی جفت
نام/مقدار
برچسبگذاری
میگردد.
برخی
برچسبها
بهطور
خودکار
افزوده
میشوند، و
ایمیل
همچنین
میتواند
صریحاً
توسط کاربر
با استفاده
از اقدام
tag
برچسبگذاری
شود.
برچسبها
ممکن است در
بیشتر
رشتهها به
روشی مشابه
ماکروها
درج شوند،
با این
تفاوت که
برچسبها
در زمان
اجرا
پردازش
میشوند نه
هنگام
تجزیهٔ
فایل
پیکربندی.
مقدار یک
برچسب با
احاطه کردن
نام آن در %[]
درج
میشود،
برای
نمونه:
- abc%[account]def
- %[hour]:%[minute]:%[second]
برچسبهای پیشفرض همچنین دارای یک نماد تکحرفی هستند. قرار دادن یک برچسب ناموجود در یک رشته معادل قرار دادن برچسبی با مقدار خالی است، بنابراین "abc%[nonexistent]def" به "abcdef" تبدیل خواهد شد.
برچسبهایی که بهطور خودکار اضافه میشوند عبارتند از:
- account (%a)
- نام حسابی که ایمیل از آن واکشی شده است.
- home (%h)
- دایرکتوری خانگی کاربر تحویلگیرنده.
- uid (%n)
- شناسهٔ کاربری (uid) کاربر تحویلگیرنده.
- action (%t)
- نام آخرین اقدام اجراشده برای این ایمیل.
- user (%u)
- نام کاربری کاربر تحویلگیرنده.
- hour (%H)
- ساعت جاری (۰۰–۲۳).
- minute (%M)
- دقیقهٔ جاری (۰۰–۵۹).
- second (%S)
- ثانیهٔ جاری (۰۰–۵۹).
- day (%d)
- روز جاری ماه (۰۱–۳۱).
- month (%m)
- ماه جاری (۰۱–۱۲).
- year (%y)
- سال جاری.
- year2
- سال جاری بهصورت دورقمی.
- dayofweek (%W)
- روز جاری هفته (۰–۶، یکشنبه ۰ است).
- dayofyear (%Y)
- روز جاری سال (۰۰۱–۳۶۶).
- quarter (%Q)
- فصل/سهماههٔ جاری (۱–۴).
- rfc822date
- تاریخ جاری در قالب RFC822.
- mail_hour
- ساعت برگرفته از سرآیند تاریخ ایمیل، در صورت وجود و معتبر بودن؛ در غیر این صورت زمان جاری.
- mail_minute
- دقیقه برگرفته از سرآیند تاریخ ایمیل.
- mail_second
- ثانیه برگرفته از سرآیند تاریخ ایمیل.
- mail_day
- روز برگرفته از سرآیند تاریخ ایمیل.
- mail_month
- ماه برگرفته از سرآیند تاریخ ایمیل.
- mail_year
- سال برگرفته از سرآیند تاریخ ایمیل.
- mail_year2
- همان مقدار بهصورت دورقمی.
- mail_dayofweek
- روز هفته برگرفته از سرآیند تاریخ ایمیل.
- mail_dayofyear
- روز سال برگرفته از سرآیند تاریخ ایمیل.
- mail_quarter
- فصل/سهماهه (۱–۴) برگرفته از سرآیند تاریخ ایمیل.
- mail_rfc822date
- تاریخ ایمیل در قالب RFC822.
- lines
- تعداد کل خطوط موجود در پیام.
- body_lines
- تعداد خطوط موجود در بدنهٔ پیام.
- header_lines
- تعداد خطوط موجود در سرآیند پیام.
- message_id
- شناسهٔ پیام (message id) برگرفته از سرآیند ایمیل (در صورت وجود).
- hostname
- نام میزبان محلی.
علاوه بر این، نماد اختصاری %% با یک % واقعی جایگزین میشود، و %0 تا %9 با نتیجهٔ عبارات پرانتزی در آخرین عبارت منظم جایگزین میشوند.
حافظههای موقت (CACHES)
fdm(1)
میتواند
یک فایل کش
با
مجموعهای
از
رشتههای
تعریفشده
توسط کاربر
را
نگهداری
کند. برای
استفاده از
کشها،
fdm(1)
باید همراه
با
فعالسازی
آنها
کامپایل
شده باشد.
کشها با
کلیدواژهٔ
cache تعریف
میشوند:
cachepath [expireage]
آرگومان
path محل
فایل کش است.
اگر
کلیدواژهٔ
expire مشخص
شود، موارد
موجود در کش
پس از رسیدن
به سن
تعیینشده
حذف
میشوند.
age
میتواند
بهسادگی
بر حسب
ثانیه داده
شود، یا با
یکی از
اصلاحکنندهها
دنبال شود:
seconds ، hours ،
minutes ، days ،
months یا years.
کشها
باید پیش از
استفاده
تعریف شوند.
موارد با
استفاده از
اقدام
add-to-cache به
کشها
افزوده
میشوند،
با اقدام
remove-from-cache حذف
میشوند، و
با شرط in-cache
مورد جستجو
قرار
میگیرند؛
برای
اطلاعات
بیشتر
دربارهٔ
این موارد
به بخشهای
زیر مراجعه
کنید.
عملیاتها (ACTIONS)
دستور
action برای
تعریف
اقدامات
استفاده
میشود. این
موارد ممکن
است با نام
در قوانین
(به زیر
مراجعه
کنید) برای
انجام
عملیاتی
روی یک
ایمیل مشخص
شوند. نحو آن
بهصورت
زیر است:
آرگومان name رشتهای است که نامی را برای اقدام تعریف میکند. آرگومان users دارای همان شکلی است که برای تعریف حساب ذکر شد. تنظیم کاربر یک اقدام ممکن است در قانون منطبق بازنویسی شود.
مقادیر ممکن برای action در زیر فهرست شدهاند. اگر چندین اقدام مشخص شود، آنها یکبار و به ترتیبی که مشخص شدهاند، برای هر کاربر اجرا میشوند.
drop- دور انداختن ایمیل.
keep- نگهداشتن ایمیل، آن را از حساب حذف نکنید.
tagstring [valuevalue]- این گزینه
ایمیل را با
string و در
صورت تمایل
با value
برچسبگذاری
میکند، که
میتواند
با استفاده
از شرایط
taggedیاstringمورد تطابق قرار گیرد. maildirpath- ذخیرهٔ
ایمیل در maildir
مشخصشده
توسط path.
اگر maildir یا هر
بخشی از
مسیر آن
وجود
نداشته
باشد،
ایجاد
میشود،
مگر اینکه
گزینهٔ
no-createتنظیم شده باشد.ایمیل تحویلدادهشده به یک maildir با برچسب mail_file حاوی مسیر کامل فایل ایمیل علامتگذاری میشود.
mboxpath [compress]- افزودن
ایمیل به
انتهای mbox در
path. اگر
compressمشخص شود، fdm(1) پسوند ‘.gz’ را به path میافزاید و تلاش میکند ایمیل را با فشردهسازی gzip(1) بنویسد. اگر mbox یا هر بخشی از مسیر آن وجود نداشته باشد، ایجاد میشود، مگر اینکه گزینهٔno-createتنظیم شده باشد.ایمیل تحویلدادهشده به یک mbox با برچسب mbox_file حاوی مسیر mbox علامتگذاری میشود.
execcommand- اجرای command.
pipecommand- ارسال
ایمیل از
طریق لوله
به command.
دستورات
execوpipeبهعنوان کاربر دستور اجرا میشوند. writepath- نوشتن ایمیل در path.
appendpath- الحاق ایمیل به انتهای path.
smtpserverhost [portport] [fromfrom] [toto]- اتصال به یک سرور SMTP و تلاش برای تحویل ایمیل به آن. اگر from یا to مشخص شوند، در دستورات MAIL FROM یا RCPT TO به سرور ارسال میگردند. در غیر این صورت، نامهای کاربر و میزبان جاری استفاده میشوند.
lmtpserverpath | host [portport] [fromfrom] [toto]- اتصال به یک
سرور LMTP و
تلاش برای
ذخیرهٔ
ایمیل در
آنجا. اگر
قرار است از
یک سوکت
یونیکس
استفاده
شود، path
باید مسیر
مطلق فایل
سوکت باشد.
درگاه پیشفرض port ۲۴ است. اگر from یا to مشخص شوند، در دستورات MAIL FROM یا RCPT TO به سرور فرستاده میشوند. در غیر این صورت، نامهای کاربر و میزبان جاری استفاده میشوند.
rewritecommand- ارسال کل
ایمیل از
طریق لوله
به command
برای تولید
یک ایمیل
جدید و
استفاده از
آن ایمیل
برای
اقدامات یا
قوانین پس
از آن. یک
نمونه از
اقدام
rewriteعبارت است از:action "cat" pipe "cat" action "rewrite" rewrite "sed 's/bob/fred/g'" # این قانون پیام را بازنویسی خواهد کرد match all action "rewrite" continue # این قانون پیام بازنویسیشده را ارسال خواهد کرد match all action "cat"
add-headernamevaluevalue- افزودن سرآیند name با محتوای value.
remove-headernameremove-headers{name ...}- حذف تمام نمونههای سرآیندهای منطبق با الگوی fnmatch(3) در name.
stdout- نوشتن
ایمیل در
stdout. add-to-cachepathkeykey- این اقدام رشتهٔ key را به کش مشخصشده توسط path میافزاید. اگر key از قبل در کش وجود داشته باشد، جایگزین میشود.
remove-from-cachepathkeykey- رشتهٔ key را از کش path حذف میکند، در صورتی که کلید منطبقی وجود داشته باشد.
actionname- این گزینه اقدام نامگذاریشدهٔ دیگری را فراخوانی میکند. حداکثر پنج اقدام میتوانند بهصورت زنجیرهای فراخوانی شوند.
قوانین (RULES)
قوانین با
استفاده از
کلیدواژهٔ
match مشخص
میشوند.
شکل
پایهای آن
بهصورت
زیر است:
matchcondition [and|orcondition ...] [users] actions [continue]
آرگومان condition میتواند یکی از موارد زیر باشد:
all- با تمام ایمیلها تطابق مییابد.
matched- تنها با
ایمیلهایی
تطابق
مییابد که
با قانون
قبلی
مطابقت
داشته و با
continueبه بعد منتقل شدهاند. unmatched- نقطهٔ
مقابل
matched: تنها با ایمیلهایی تطابق دارد که با هیچیک از قوانین پیشین همخوانی نداشتهاند. accountname |accounts{name ...}- تنها با
ایمیلهایی
که از حساب
یا
حسابهای
نامبرده
دریافت
شدهاند
مطابقت
دارد.
نامهای
حساب ممکن
است شامل
نویسههای
عام (glob wildcards)
پوسته
باشند تا
همانند
گزینههای
خط فرمان
-aو-xبا چندین حساب مطابقت یابند. taggedstring- با ایمیلهای برچسبگذاریشده با string تطابق دارد.
- [
case] regexp [inheaders|in body] - عبارت
منظمی را
مشخص
میکند که
هر ایمیل
باید با آن
تطابق یابد.
تطابقهای
عبارت منظم
ممکن است با
تعیین
in headersیاin bodyبه سرآیندها یا بدنهٔ پیام محدود شوند. کلیدواژهٔcaseتطابق عبارت منظم را به بزرگ و کوچک بودن حروف حساس میکند؛ حالت پیشفرض تطابق غیرحساس به حروف بزرگ و کوچک است. execcommand [useruser]returns(return code, stdout regexp)pipecommand [useruser]returns(return code, [case] stdout regexp)- این دو شرط
یک command را
اجرا کرده و
مقدار
بازگشتی و
خروجی آن را
آزمایش
میکنند.
آرگومان
return code کد
بازگشتی
عددی مورد
انتظار است
و stdout regexp
عبارت
منظمی است
که در برابر
خروجی
دستور در
stdoutآزموده میشود. هر یک از این دو آرگومان ممکن است حذف شوند؛ اگر هر دو مشخص شوند، هر دو باید برای برقراری شرط صادق باشند. نسخهٔpipeهنگام اجرای دستور، ایمیل را از طریق لوله بهstdinآن ارسال میکند. اگر کاربری مشخص شده باشد، fdm(1) پیش از اجرای دستور به آن کاربر تغییر هویت خواهد داد، در غیر این صورت کاربر فعلی (یا کاربر ریشه اگر با ریشه اجرا شده باشد) استفاده میشود. size<numbersize>number- مقایسهٔ اندازهٔ ایمیل با number.
stringstringto[case] regexp- تطابق string در برابر regexp.
age<timeage>time- شرط
ageسرآیند تاریخ ایمیل را برای تعیین سن آن بررسی میکند، و در صورتی که ایمیل قدیمیتر (>) یا جدیدتر (<) از زمان مشخصشده باشد تطابق مییابد. زمان ممکن است بهصورت یک عدد ساده بر حسب ثانیه داده شود، یا با یکی از واژههای seconds ، hours ، minutes ، days ، months یا years دنبال شود تا زمان را در واحدهای مختلف مشخص کند. in-cachepathkeykey- این شرط در صورتی که رشتهٔ key در کش موجود در path باشد، نتیجهٔ درست (true) میدهد.
attachmentcount<numberattachmentcount>numberattachmentcount==numberattachmentcount!=number- این شرایط در صورتی تطابق دارند که ایمیل دارای تعداد پیوستهایی کمتر از، بیشتر از، مساوی یا نامساوی با number باشد.
attachmenttotal-size<sizeattachmenttotal-size>size- در صورتی که اندازهٔ کل تمام پیوستها کوچکتر یا بزرگتر از size باشد مطابقت دارد.
attachmentany-size<sizeattachmentany-size>size- تکتک پیوستهای یک ایمیل را با size مقایسه میکند و اگر هر یک از آنها کوچکتر یا بزرگتر باشند مطابقت دارد.
attachmentany-typestringattachmentany-namestring- اگر نوع MIME یا نام فایل هر یک از پیوستهای یک ایمیل با string مطابقت داشته باشد، ارزش درستی مییابد. نویسههای عام fnmatch(3) ممکن است استفاده شوند.
شرایط
متعدد ممکن
است با
استفاده از
کلیدواژههای
and یا or
به یکدیگر
زنجیر شوند.
شرایط از چپ
به راست
آزمایش
میشوند. هر
شرطی ممکن
است با
کلیدواژهٔ
not
پیشوندگذاری
شود تا
معکوس
گردد.
آرگومان
اختیاری
users در شکل
نخست دارای
همان نحو
تعریف action
است. فهرست
کاربران یک
قانون، هر
کاربری را
که
بهعنوان
بخشی از
اقدامات
داده شده
باشد
بازنویسی
میکند.
فهرست actions اقداماتی را مشخص میکند که هنگام تطابق قانون با یک ایمیل باید انجام شوند. این فهرست یا بهشکلی مشابه است:
یا ممکن است تعدادی اقدام درونخطی (اقدامات لامبدا) را مشخص کند:
در حالت اخیر، action از همان شکلی که در بخش ACTIONS شرح داده شد پیروی میکند. اقدامات از نخستین تا آخرین به ترتیبی که در تعریف قانون مشخص شدهاند انجام میشوند.
اگر
کلیدواژهٔ
continue حاضر
باشد، با
تطابق این
قانون
ارزیابی
متوقف
نخواهد شد.
در عوض،
fdm(1) پس
از انجام هر
اقدامی
برای این
قانون، به
تطابق
قوانین
بعدی ادامه
خواهد داد.
قوانین تودرتو (NESTED RULES)
قوانین ممکن است با مشخص کردن قوانین بیشتر در میان آکولادها تودرتو شوند:
قوانین
درونی تا
زمانی که
قانون
بیرونی
تطابق
نیابد
ارزیابی
نخواهند شد.
قوانین
میتوانند
بهصورت
چندگانه
تودرتو
شوند. توجه
داشته
باشید که
قانون
بیرونی
برای اهداف
شرایط matched
و unmatched
بهعنوان
یک تطابق
بهشمار
نمیآید.
فایلها (FILES)
- ~/.fdm.conf
- فایل
پیکربندی
پیشفرض
fdm.conf - /etc/fdm.conf
- فایل پیکربندی پیشفرض سرتاسری سیستم
- ~/.fdm.lock
- فایل قفل پیشفرض
- /var/db/fdm.lock
- فایل قفل برای کاربر ریشه (root)
همچنین ببینید (SEE ALSO)
نویسندگان (AUTHORS)
Nicholas Marriott <nicholas.marriott@gmail.com>
| August 21, 2006 | Linux 6.12.107+deb13-amd64 |