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-size size برای تنظیم حداکثر اندازهٔ یک ایمیل استفاده می‌شود. ایمیل‌های بزرگ‌تر از این حد نادیده گرفته (دور ریخته) شده و در صورت لزوم، از سرور حذف نمی‌شوند. اندازه ممکن است به‌صورت یک عدد ساده بر حسب بایت یا با پسوند ‘K’ برای کیلوبایت، ‘M’ برای مگابایت یا ‘G’ برای گیگابایت مشخص شود. مقدار پیش‌فرض ۳۲ مگابایت و حداکثر آن یک گیگابایت است. delete-oversized اگر این گزینه مشخص شود، fdm(1) تلاش می‌کند پیام‌هایی را که از maximum-size فراتر می‌روند حذف کند و ادامه دهد. اگر مشخص نشود، پیام‌های با اندازهٔ بیش‌از‌حد یک خطای مهلک تلقی شده و موجب توقف اضطراری (abort) fdm(1) می‌شوند. توجه داشته باشید که fdm(1) ممکن است تعدادی پیام در صف داشته باشد (تا سقف تنظیم queue-high ، که در صورت بازنویسی برای هر حساب دو برابر می‌شود)، بنابراین این تنظیم و گزینهٔ queue-high باید با در نظر گرفتن فضای موجود در پوشهٔ موقت و پیامدهای ناشی از توقف fdm(1) به‌دلیل پر شدن فضا، تعیین شوند. queue-high number حداکثر تعداد پیام‌هایی را که fdm(1) می‌تواند به‌طور هم‌زمان نگه دارد تنظیم می‌کند. fdm(1) هم‌زمان با دریافت پیام بعدی، تلاش می‌کند پیام‌های قبلی موجود در صف را پردازش کند. به‌محض رسیدن به این حد، پیام‌های بیشتری دریافت نخواهد شد تا زمانی که تعداد پیام‌های نگه‌داری‌شده به مقدار queue-low کاهش یابد. queue-low number طولی از صف پیام است که پس از رسیدن به حد queue-high ، باید به آن کاهش یابد تا فرآیند دریافت پیام‌ها مجدداً از سر گرفته شود. ignore-errors در صورت تنظیم، اگر یک تحویل پیام با شکست مواجه شود، fdm.conf به‌جای توقف اضطراری به پردازش ایمیل ادامه خواهد داد. allow-multiple اگر این گزینه مشخص شود، fdm(1) تلاشی برای ایجاد فایل قفل نمی‌کند و به چندین نمونه اجازه می‌دهد به‌طور هم‌زمان اجرا شوند. lock-file path یک فایل قفل جایگزین تنظیم می‌کند. مقدار پیش‌فرض برای کاربران غیرریشه ~/.fdm.lock و برای کاربر ریشه /var/db/fdm.lock است. lock-timeout time مدت‌زمانی را که fdm.conf پیش از انصراف برای دستیابی به فایل قفل تلاش می‌کند، تعیین می‌کند. lock-wait در صورت وجود، fdm.conf به‌جای خروج فوری با خطا، به‌مدت lock-timeout منتظر lock-file خواهد ماند. command-user user کاربری را مشخص می‌کند که برای اجرای عملیات‌های exec و pipe استفاده می‌شود. به‌طور پیش‌فرض این کاربر همان کاربری است که fdm را فراخوانی کرده است. default-user user کاربر پیش‌فرضی را تعیین می‌کند که پیش از تحویل ایمیل باید به آن تغییر هویت داده شود، در صورتی که fdm(1) با کاربر ریشه در حال اجرا باشد و کاربر جایگزینی در دستور اقدام یا قانون مشخص نشده باشد. این گزینه ممکن است با سوییچ -u در خط فرمان بازنویسی شود. اگر با کاربر ریشه اجرا شود، تعیین یک کاربر پیش‌فرض الزامی است. lookup-order location ... ترتیبی را که جستجوی کاربر از چپ به راست در آن انجام می‌شود مشخص می‌کند. انواع ممکن عبارتند از passwd برای استفاده از فایل passwd(5) ، یا courier برای استفاده از Courier authlib (در صورتی که پشتیبانی آن کامپایل شده باشد). lock-types type ... انواع قفل‌های مورد استفاده برای قفل کردن mbox را مشخص می‌کند. انواع ممکن عبارتند از fcntl ، flock و dotlock. انواع flock و fcntl مانعة‌الجمع هستند. مقدار پیش‌فرض flock است. proxy url به fdm(1) دستور می‌دهد تمام اتصال‌ها را از طریق url پروکسی کند. در حال حاضر پروکسی‌های HTTP و SOCKS5 پشتیبانی می‌شوند (نشانی‌های اینترنتی به‌شکل http://host[:port] یا socks://[user:pass@]host[:port]). برای HTTP هیچ‌گونه احراز هویتی پشتیبانی نمی‌شود. unmatched-mail drop | keep این گزینه کنترل می‌کند که fdm(1) با ایمیل‌هایی که به انتهای مجموعه قوانین می‌رسند (ایمیل‌هایی که با هیچ قانونی تطابق ندارند یا فقط با قوانینی دارای کلیدواژهٔ continue تطابق دارند) چه کند. drop باعث دور ریختن چنین ایمیل‌هایی می‌شود، و keep تلاش می‌کند ایمیل را روی سرور باقی بگذارد. رفتار پیش‌فرض، نگه‌داشتن ایمیل و ثبت یک هشدار در لاگ مبنی بر رسیدن آن به انتهای مجموعه قوانین است. purge-after count گزینهٔ purge-after باعث می‌شود fdm(1) پس از دریافت count ایمیل، تلاش کند ایمیل‌های حذف‌شده را از روی سرور پاکسازی (purge) کند (در صورت پشتیبانی). این قابلیت در اتصال‌های ناپایدار مفید است تا در صورت قطعی اتصال، تعداد ایمیل‌های دریافتی مجدد محدود شود، اما توجه داشته باشید که می‌تواند منجر به کاهش چشمگیر سرعت شود. no-received در صورت وجود این گزینه، fdm(1) سرآیند ‘Received’ را در هر ایمیل درج نخواهد کرد. no-create در صورت تنظیم این گزینه، fdm(1) تلاشی برای ایجاد maildirها و mboxها یا بخش‌های مفقود مسیر آن‌ها نخواهد کرد. file-umask user | umask مشخص‌کنندهٔ umask(2) مورد استفاده هنگام ایجاد فایل‌ها است. user به‌معنای استفاده از umask تنظیم‌شده هنگام راه‌اندازی fdm(1) است، یا umask می‌تواند به‌صورت یک عدد هشت‌هشتی (octal) سه‌رقمی مشخص شود. مقدار پیش‌فرض 077 است. file-group user | group امکان تعیین مالکیت گروهی پیش‌فرض فایل‌ها و دایرکتوری‌های ایجادشده توسط fdm(1) را فراهم می‌کند. group می‌تواند رشتهٔ نام گروه یا شناسهٔ عددی gid باشد. اگر user استفاده شود یا این گزینه در فایل پیکربندی نیامده باشد، fdm(1) تلاشی برای تنظیم گروه فایل‌ها و دایرکتوری‌های جدید نمی‌کند. timeout time حداکثر زمان انتظار برای ارسال داده توسط سرور پیش از بستن اتصال را کنترل می‌کند. مقدار پیش‌فرض ۹۰۰ ثانیه است. verify-certificates به fdm(1) دستور می‌دهد گواهی‌های SSL را برای تمام اتصال‌های SSL اعتبارسنجی کند. فراخوانی فایل‌ها (INCLUDING FILES) فایل‌های پیکربندی بیشتر ممکن است با استفاده از دستور include فراخوانی شوند: include path فایل مورد نظر برای فراخوانی، ابتدا به‌عنوان یک مسیر مطلق و سپس به‌صورت نسبی نسبت به دایرکتوری حاوی فایل پیکربندی اصلی جستجو می‌شود. ماکروها (MACROS) ماکروها ممکن است با استفاده از نحو زیر تعریف شوند: $name = string %name = number ماکروها با پیشوند $ برای مشخص کردن مقدار رشته‌ای و % برای مشخص کردن مقدار عددی مشخص می‌شوند. پس از تعریف، یک ماکرو ممکن است در هر جایی که انتظار یک رشته یا عدد می‌رود استفاده شود. ماکروها ممکن است با احاطه کردن نام آن‌ها (پس از $ یا %) با {} در رشته‌ها جاسازی شوند، مانند: "abc ${mymacro} %{anothermacro} def" کلیدواژه‌های ifdef ، ifndef و endif ممکن است برای تجزیهٔ شرطی بخشی از فایل پیکربندی، بسته به اینکه ماکروی داده‌شده وجود دارد یا ندارد، استفاده شوند. بلوک‌های ifdef و ifndef می‌توانند تودرتو باشند. دستورات پوسته (SHELL COMMANDS) نتیجهٔ یک دستور پوسته ممکن است با قرار دادن آن در $() یا %() در هر نقطه‌ای که انتظار یک رشته یا عدد می‌رود استفاده شود. اگر از اولی استفاده شود، نتیجهٔ دستور به‌صورت رشته استفاده می‌شود؛ اگر از دومی استفاده شود، به یک عدد صحیح تبدیل می‌گردد. دستورات پوسته هنگام تجزیه شدن فایل پیکربندی اجرا می‌شوند. حساب‌ها (ACCOUNTS) دستور account برای دستور دادن به fdm(1) جهت دریافت ایمیل از یک حساب استفاده می‌شود. نحو آن به‌صورت زیر است: account name [users] [disabled] type [args] [keep] آرگومان name رشته‌ای است که نامی را برای حساب مشخص می‌کند. آرگومان اختیاری users دارای شکل زیر است: user user | users { user ... } دو گزینهٔ اول کاربر یا فهرستی از کاربرانی را مشخص می‌کنند که ایمیل باید هنگام اجرای یک اقدام به‌نام آن‌ها تحویل داده شود. اگر کاربری مشخص نشود، کاربر پیش‌فرض (تنظیم‌شده با set default-user) استفاده خواهد شد. کاربران مشخص‌شده به‌عنوان بخشی از تعریف حساب ممکن است با آرگومان‌های مشابه در تعاریف عملیات یا در قوانین تطابق بازنویسی شوند. اگر fdm(1) به‌عنوان کاربر غیرریشه اجرا شود، همچنان هر عملیات را یک‌بار برای هر کاربر اجرا خواهد کرد، اما قادر به تغییر هویت به آن کاربر نخواهد بود، بنابراین عملیات چندین بار با کاربر فعلی اجرا خواهد شد. کلیدواژهٔ disabled به fdm(1) دستور می‌دهد این حساب را نادیده بگیرد مگر اینکه صریحاً با گزینهٔ -a در خط فرمان فعال شده باشد. اگر کلیدواژهٔ keep مشخص شود، تمام ایمیل‌های جمع‌آوری‌شده از این حساب نگه‌داری می‌شوند (حذف نمی‌شوند) حتی اگر با اقدام drop تطابق داشته باشند. انواع حساب‌های پشتیبانی‌شده و آرگومان‌های آن‌ها عبارتند از: stdin این نوع حساب، ایمیل را از stdin می‌خواند، در صورتی که به یک لوله (pipe) متصل باشد. این ممکن است برای تحویل ایمیل از sendmail(8) استفاده شود؛ برای جزئیات به fdm(1) مراجعه کنید. pop3 server host [port port] [user user] [pass pass] [only] [no-apop] [no-uidl] [starttls] [insecure] pop3s server host [port port] [userpass] [only] [no-apop] [no-verify] [no-uidl] [insecure] این گزاره‌ها یک حساب POP3 یا POP3S را تعریف می‌کنند. عنصر userpass شکل زیر را دارد: [user user] [pass pass] آرگومان‌های host ، user و pass باید رشته باشند. اگر نام کاربری یا گذرواژه ارائه نشود، fdm(1) تلاش می‌کند آن را در فایل ~/.netrc جستجو کند (برای جزئیات قالب فایل به ftp(1) مراجعه کنید). گزینهٔ درگاه (port) ممکن است رشته‌ای باشد که در پایگاه دادهٔ services(5) جستجو شود، یا یک عدد باشد. اگر حذف شود، درگاه پیش‌فرض (۱۱۰ برای POP3، ۹۹۵ برای POP3S) استفاده می‌شود. گزینهٔ only به‌شکل زیر است: [new-only | old-only] cache path گزینهٔ 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 است. pop3 pipe command [userpass] [only] [no-apop] این نوع حساب از پروتکل POP3 که از طریق command لوله (pipe) شده است استفاده می‌کند، مانند ssh(1). اگر دستور هرگونه خروجی در stderr تولید کند، در لاگ ثبت می‌شود. برای POP3 روی پایپ، ارائهٔ نام کاربری و گذرواژه اختیاری نیست و نمی‌تواند از ~/.netrc خوانده شود. imap server host [port port] [userpass] [folder name] [only] [no-cram-md5] [no-plain] [no-login] [starttls] [insecure] [oauthbearer] [xoauth2] imap server host [port port] [userpass] [folders] { name ... } [only] imaps server host [port port] [userpass] [folders] [only] [no-verify] [no-cram-md5] [no-plain] [no-login] [insecure] [oauthbearer] [xoauth2] این گزاره‌ها یک حساب IMAP یا IMAPS را تعریف می‌کنند. پارامترها همانند حساب POP3 یا POP3S هستند، به‌جز گزینهٔ اضافی folders که نام پوشه یا پوشه‌های مورد استفاده را تنظیم می‌کند (حالت پیش‌فرض دریافت از inbox است). این گزینه شکل زیر را دارد: folder name | folders { name ... } درگاه‌های پیش‌فرض مورد استفاده، ۱۴۳ برای 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 به‌عنوان روش احراز هویت استفاده کند. imap pipe command [userpass] [folders] [only] همانند pop3 pipe ، این نوع حساب از پروتکل IMAP که از طریق command لوله شده است استفاده می‌کند. اگر user و pass اختیاری IMAP ارائه شوند، در صورت نیاز استفاده خواهند شد، اما اگر یکی از آن‌ها ارائه شود، ارائهٔ هر دو الزامی است – استفاده از ~/.netrc مجاز نیست. ایمیل‌های دریافت‌شده با استفاده از پروتکل IMAP با یک برچسب پوشه حاوی نام پوشهٔ مبدأ علامت‌گذاری می‌شوند. maildir path maildirs { path ... } این انواع حساب به fdm(1) دستور می‌دهند ایمیل‌ها را از maildir یا maildirهای مشخص‌شده واکشی کند. این قابلیت به fdm(1) اجازه می‌دهد برای فیلتر کردن ایمیل، دریافت از یک maildir و حذف (دور ریختن) ایمیل‌های ناخواسته، یا تحویل ایمیل به یک maildir دیگر یا به یک mbox استفاده شود. ایمیل دریافت‌شده از یک maildir با یک برچسب maildir حاوی نام پایهٔ (basename) فایل ایمیل علامت‌گذاری می‌شود. mbox path mboxes { path ... } این گزینه‌ها مشابه maildir و maildirs هستند، اما باعث می‌شوند fdm(1) ایمیل‌ها را از یک mbox یا مجموعه‌ای از mboxها واکشی کند. ایمیل دریافت‌شده از یک mbox با یک برچسب mbox حاوی نام پایهٔ فایل mbox علامت‌گذاری می‌شود. nntp server host [port port] [userpass] group group cache cache nntp server host [port port] [userpass] groups { group ... } cache cache nntps server host [port port] [userpass] group group cache cache nntps server host [port port] [userpass] groups { group ... } cache cache یک حساب 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 تعریف می‌شوند: cache path [expire age] آرگومان path محل فایل کش است. اگر کلیدواژهٔ expire مشخص شود، موارد موجود در کش پس از رسیدن به سن تعیین‌شده حذف می‌شوند. age می‌تواند به‌سادگی بر حسب ثانیه داده شود، یا با یکی از اصلاح‌کننده‌ها دنبال شود: seconds ، hours ، minutes ، days ، months یا years. کش‌ها باید پیش از استفاده تعریف شوند. موارد با استفاده از اقدام add-to-cache به کش‌ها افزوده می‌شوند، با اقدام remove-from-cache حذف می‌شوند، و با شرط in-cache مورد جستجو قرار می‌گیرند؛ برای اطلاعات بیشتر دربارهٔ این موارد به بخش‌های زیر مراجعه کنید. عملیات‌ها (ACTIONS) دستور action برای تعریف اقدامات استفاده می‌شود. این موارد ممکن است با نام در قوانین (به زیر مراجعه کنید) برای انجام عملیاتی روی یک ایمیل مشخص شوند. نحو آن به‌صورت زیر است: action name [users] action action name [users] { action ... } آرگومان name رشته‌ای است که نامی را برای اقدام تعریف می‌کند. آرگومان users دارای همان شکلی است که برای تعریف حساب ذکر شد. تنظیم کاربر یک اقدام ممکن است در قانون منطبق بازنویسی شود. مقادیر ممکن برای action در زیر فهرست شده‌اند. اگر چندین اقدام مشخص شود، آن‌ها یک‌بار و به ترتیبی که مشخص شده‌اند، برای هر کاربر اجرا می‌شوند. drop دور انداختن ایمیل. keep نگه‌داشتن ایمیل، آن را از حساب حذف نکنید. tag string [value value] این گزینه ایمیل را با string و در صورت تمایل با value برچسب‌گذاری می‌کند، که می‌تواند با استفاده از شرایط tagged یا string مورد تطابق قرار گیرد. maildir path ذخیرهٔ ایمیل در maildir مشخص‌شده توسط path. اگر maildir یا هر بخشی از مسیر آن وجود نداشته باشد، ایجاد می‌شود، مگر اینکه گزینهٔ no-create تنظیم شده باشد. ایمیل تحویل‌داده‌شده به یک maildir با برچسب mail_file حاوی مسیر کامل فایل ایمیل علامت‌گذاری می‌شود. mbox path [compress] افزودن ایمیل به انتهای mbox در path. اگر compress مشخص شود، fdm(1) پسوند ‘.gz’ را به path می‌افزاید و تلاش می‌کند ایمیل را با فشرده‌سازی gzip(1) بنویسد. اگر mbox یا هر بخشی از مسیر آن وجود نداشته باشد، ایجاد می‌شود، مگر اینکه گزینهٔ no-create تنظیم شده باشد. ایمیل تحویل‌داده‌شده به یک mbox با برچسب mbox_file حاوی مسیر mbox علامت‌گذاری می‌شود. exec command اجرای command. pipe command ارسال ایمیل از طریق لوله به command. دستورات exec و pipe به‌عنوان کاربر دستور اجرا می‌شوند. write path نوشتن ایمیل در path. append path الحاق ایمیل به انتهای path. smtp server host [port port] [from from] [to to] اتصال به یک سرور SMTP و تلاش برای تحویل ایمیل به آن. اگر from یا to مشخص شوند، در دستورات MAIL FROM یا RCPT TO به سرور ارسال می‌گردند. در غیر این صورت، نام‌های کاربر و میزبان جاری استفاده می‌شوند. lmtp server path | host [port port] [from from] [to to] اتصال به یک سرور LMTP و تلاش برای ذخیرهٔ ایمیل در آنجا. اگر قرار است از یک سوکت یونیکس استفاده شود، path باید مسیر مطلق فایل سوکت باشد. درگاه پیش‌فرض port ۲۴ است. اگر from یا to مشخص شوند، در دستورات MAIL FROM یا RCPT TO به سرور فرستاده می‌شوند. در غیر این صورت، نام‌های کاربر و میزبان جاری استفاده می‌شوند. rewrite command ارسال کل ایمیل از طریق لوله به command برای تولید یک ایمیل جدید و استفاده از آن ایمیل برای اقدامات یا قوانین پس از آن. یک نمونه از اقدام rewrite عبارت است از: action "cat" pipe "cat" action "rewrite" rewrite "sed 's/bob/fred/g'" # این قانون پیام را بازنویسی خواهد کرد match all action "rewrite" continue # این قانون پیام بازنویسی‌شده را ارسال خواهد کرد match all action "cat" add-header name value value افزودن سرآیند name با محتوای value. remove-header name remove-headers { name ... } حذف تمام نمونه‌های سرآیندهای منطبق با الگوی fnmatch(3) در name. stdout نوشتن ایمیل در stdout. add-to-cache path key key این اقدام رشتهٔ key را به کش مشخص‌شده توسط path می‌افزاید. اگر key از قبل در کش وجود داشته باشد، جایگزین می‌شود. remove-from-cache path key key رشتهٔ key را از کش path حذف می‌کند، در صورتی که کلید منطبقی وجود داشته باشد. action name این گزینه اقدام نام‌گذاری‌شدهٔ دیگری را فراخوانی می‌کند. حداکثر پنج اقدام می‌توانند به‌صورت زنجیره‌ای فراخوانی شوند. قوانین (RULES) قوانین با استفاده از کلیدواژهٔ match مشخص می‌شوند. شکل پایه‌ای آن به‌صورت زیر است: match condition [and | or condition ...] [users] actions [continue] آرگومان condition می‌تواند یکی از موارد زیر باشد: all با تمام ایمیل‌ها تطابق می‌یابد. matched تنها با ایمیل‌هایی تطابق می‌یابد که با قانون قبلی مطابقت داشته و با continue به بعد منتقل شده‌اند. unmatched نقطهٔ مقابل matched: تنها با ایمیل‌هایی تطابق دارد که با هیچ‌یک از قوانین پیشین همخوانی نداشته‌اند. account name | accounts { name ... } تنها با ایمیل‌هایی که از حساب یا حساب‌های نام‌برده دریافت شده‌اند مطابقت دارد. نام‌های حساب ممکن است شامل نویسه‌های عام (glob wildcards) پوسته باشند تا همانند گزینه‌های خط فرمان -a و -x با چندین حساب مطابقت یابند. tagged string با ایمیل‌های برچسب‌گذاری‌شده با string تطابق دارد. [case] regexp [in headers | in body] عبارت منظمی را مشخص می‌کند که هر ایمیل باید با آن تطابق یابد. تطابق‌های عبارت منظم ممکن است با تعیین in headers یا in body به سرآیندها یا بدنهٔ پیام محدود شوند. کلیدواژهٔ case تطابق عبارت منظم را به بزرگ و کوچک بودن حروف حساس می‌کند؛ حالت پیش‌فرض تطابق غیرحساس به حروف بزرگ و کوچک است. exec command [user user] returns (return code, stdout regexp) pipe command [user user] returns (return code, [case] stdout regexp) این دو شرط یک command را اجرا کرده و مقدار بازگشتی و خروجی آن را آزمایش می‌کنند. آرگومان return code کد بازگشتی عددی مورد انتظار است و stdout regexp عبارت منظمی است که در برابر خروجی دستور در stdout آزموده می‌شود. هر یک از این دو آرگومان ممکن است حذف شوند؛ اگر هر دو مشخص شوند، هر دو باید برای برقراری شرط صادق باشند. نسخهٔ pipe هنگام اجرای دستور، ایمیل را از طریق لوله به stdin آن ارسال می‌کند. اگر کاربری مشخص شده باشد، fdm(1) پیش از اجرای دستور به آن کاربر تغییر هویت خواهد داد، در غیر این صورت کاربر فعلی (یا کاربر ریشه اگر با ریشه اجرا شده باشد) استفاده می‌شود. size < number size > number مقایسهٔ اندازهٔ ایمیل با number. string string to [case] regexp تطابق string در برابر regexp. age < time age > time شرط age سرآیند تاریخ ایمیل را برای تعیین سن آن بررسی می‌کند، و در صورتی که ایمیل قدیمی‌تر (>) یا جدیدتر (<) از زمان مشخص‌شده باشد تطابق می‌یابد. زمان ممکن است به‌صورت یک عدد ساده بر حسب ثانیه داده شود، یا با یکی از واژه‌های seconds ، hours ، minutes ، days ، months یا years دنبال شود تا زمان را در واحدهای مختلف مشخص کند. in-cache path key key این شرط در صورتی که رشتهٔ key در کش موجود در path باشد، نتیجهٔ درست (true) می‌دهد. attachment count < number attachment count > number attachment count == number attachment count != number این شرایط در صورتی تطابق دارند که ایمیل دارای تعداد پیوست‌هایی کمتر از، بیشتر از، مساوی یا نامساوی با number باشد. attachment total-size < size attachment total-size > size در صورتی که اندازهٔ کل تمام پیوست‌ها کوچک‌تر یا بزرگ‌تر از size باشد مطابقت دارد. attachment any-size < size attachment any-size > size تک‌تک پیوست‌های یک ایمیل را با size مقایسه می‌کند و اگر هر یک از آن‌ها کوچک‌تر یا بزرگ‌تر باشند مطابقت دارد. attachment any-type string attachment any-name string اگر نوع MIME یا نام فایل هر یک از پیوست‌های یک ایمیل با string مطابقت داشته باشد، ارزش درستی می‌یابد. نویسه‌های عام fnmatch(3) ممکن است استفاده شوند. شرایط متعدد ممکن است با استفاده از کلیدواژه‌های and یا or به یکدیگر زنجیر شوند. شرایط از چپ به راست آزمایش می‌شوند. هر شرطی ممکن است با کلیدواژهٔ not پیشوندگذاری شود تا معکوس گردد. آرگومان اختیاری users در شکل نخست دارای همان نحو تعریف action است. فهرست کاربران یک قانون، هر کاربری را که به‌عنوان بخشی از اقدامات داده شده باشد بازنویسی می‌کند. فهرست actions اقداماتی را مشخص می‌کند که هنگام تطابق قانون با یک ایمیل باید انجام شوند. این فهرست یا به‌شکلی مشابه است: action name | actions { name ... } یا ممکن است تعدادی اقدام درون‌خطی (اقدامات لامبدا) را مشخص کند: action action action { action ... } در حالت اخیر، action از همان شکلی که در بخش ACTIONS شرح داده شد پیروی می‌کند. اقدامات از نخستین تا آخرین به ترتیبی که در تعریف قانون مشخص شده‌اند انجام می‌شوند. اگر کلیدواژهٔ continue حاضر باشد، با تطابق این قانون ارزیابی متوقف نخواهد شد. در عوض، fdm(1) پس از انجام هر اقدامی برای این قانون، به تطابق قوانین بعدی ادامه خواهد داد. قوانین تودرتو (NESTED RULES) قوانین ممکن است با مشخص کردن قوانین بیشتر در میان آکولادها تودرتو شوند: match condition [and | or condition ...] { match ... } قوانین درونی تا زمانی که قانون بیرونی تطابق نیابد ارزیابی نخواهند شد. قوانین می‌توانند به‌صورت چندگانه تودرتو شوند. توجه داشته باشید که قانون بیرونی برای اهداف شرایط matched و unmatched به‌عنوان یک تطابق به‌شمار نمی‌آید. فایل‌ها (FILES) ~/.fdm.conf فایل پیکربندی پیش‌فرض fdm.conf /etc/fdm.conf فایل پیکربندی پیش‌فرض سرتاسری سیستم ~/.fdm.lock فایل قفل پیش‌فرض /var/db/fdm.lock فایل قفل برای کاربر ریشه (root) همچنین ببینید (SEE ALSO) fdm(1), re_format(7) نویسندگان (AUTHORS) Nicholas Marriott Linux 6.12.107+deb13-amd64 August 21, 2006 Linux 6.12.107+deb13-amd64