FDM.CONF(5) File Formats Manual FDM.CONF(5)

fdm.conf — فایل پیکربندی fdm

این صفحه راهنما فایل پیکربندی fdm(1) را شرح می‌دهد. این فایل حساب‌ها برای دریافت ایمیل، تعدادی عملیات قابل انجام، و قوانین پیونددهندهٔ یک عبارت منظم (regexp) به یک عملیات را تعریف می‌کند. این فایل یک‌بار از بالا به پایین تجزیه می‌شود، بنابراین تعاریف حساب‌ها و عملیات‌ها باید پیش از ارجاع به آن‌ها در یک قانون، در فایل ظاهر شوند. قوانین از ابتدا تا انتها ارزیابی می‌شوند و (مگر در حالتی که با کلیدواژهٔ continue بازنویسی شود) فرآیند ارزیابی در اولین تطابق متوقف می‌گردد.

این فایل دارای قالب زیر است:

خطوط خالی و خطوطی که با نویسهٔ ‘#’ آغاز می‌شوند نادیده گرفته خواهند شد.

عبارات منظم و رشته‌ها باید درون گیومهٔ دوگانه (double quotes) قرار گیرند. نویسه‌های خاص در عبارات منظم و رشته‌ها (از جمله گذرواژه‌ها) باید اسکیپ (escape) شوند. توجه داشته باشید که این موضوع در عبارات منظم ممکن است به‌معنای دابل-اسکیپ (double-escaping) باشد.

دستورات مجاز در بخش‌های زیر پوشش داده شده‌اند.

گزینه‌ها با استفاده از دستور set پیکربندی می‌شوند. این دستور می‌تواند با گزینه‌های زیر دنبال شود، یک گزینه در هر دستور:

size
برای تنظیم حداکثر اندازهٔ یک ایمیل استفاده می‌شود. ایمیل‌های بزرگ‌تر از این حد نادیده گرفته (دور ریخته) شده و در صورت لزوم، از سرور حذف نمی‌شوند.

اندازه ممکن است به‌صورت یک عدد ساده بر حسب بایت یا با پسوند ‘K’ برای کیلوبایت، ‘M’ برای مگابایت یا ‘G’ برای گیگابایت مشخص شود. مقدار پیش‌فرض ۳۲ مگابایت و حداکثر آن یک گیگابایت است.

اگر این گزینه مشخص شود، fdm(1) تلاش می‌کند پیام‌هایی را که از maximum-size فراتر می‌روند حذف کند و ادامه دهد. اگر مشخص نشود، پیام‌های با اندازهٔ بیش‌از‌حد یک خطای مهلک تلقی شده و موجب توقف اضطراری (abort) fdm(1) می‌شوند.

توجه داشته باشید که fdm(1) ممکن است تعدادی پیام در صف داشته باشد (تا سقف تنظیم queue-high ، که در صورت بازنویسی برای هر حساب دو برابر می‌شود)، بنابراین این تنظیم و گزینهٔ queue-high باید با در نظر گرفتن فضای موجود در پوشهٔ موقت و پیامدهای ناشی از توقف fdm(1) به‌دلیل پر شدن فضا، تعیین شوند.

number
حداکثر تعداد پیام‌هایی را که fdm(1) می‌تواند به‌طور هم‌زمان نگه دارد تنظیم می‌کند. fdm(1) هم‌زمان با دریافت پیام بعدی، تلاش می‌کند پیام‌های قبلی موجود در صف را پردازش کند. به‌محض رسیدن به این حد، پیام‌های بیشتری دریافت نخواهد شد تا زمانی که تعداد پیام‌های نگه‌داری‌شده به مقدار queue-low کاهش یابد.
number
طولی از صف پیام است که پس از رسیدن به حد queue-high ، باید به آن کاهش یابد تا فرآیند دریافت پیام‌ها مجدداً از سر گرفته شود.
در صورت تنظیم، اگر یک تحویل پیام با شکست مواجه شود، fdm.conf به‌جای توقف اضطراری به پردازش ایمیل ادامه خواهد داد.
اگر این گزینه مشخص شود، fdm(1) تلاشی برای ایجاد فایل قفل نمی‌کند و به چندین نمونه اجازه می‌دهد به‌طور هم‌زمان اجرا شوند.
path
یک فایل قفل جایگزین تنظیم می‌کند. مقدار پیش‌فرض برای کاربران غیرریشه ~/.fdm.lock و برای کاربر ریشه /var/db/fdm.lock است.
time
مدت‌زمانی را که fdm.conf پیش از انصراف برای دستیابی به فایل قفل تلاش می‌کند، تعیین می‌کند.
در صورت وجود، fdm.conf به‌جای خروج فوری با خطا، به‌مدت lock-timeout منتظر lock-file خواهد ماند.
user
کاربری را مشخص می‌کند که برای اجرای عملیات‌های exec و pipe استفاده می‌شود. به‌طور پیش‌فرض این کاربر همان کاربری است که fdm را فراخوانی کرده است.
user
کاربر پیش‌فرضی را تعیین می‌کند که پیش از تحویل ایمیل باید به آن تغییر هویت داده شود، در صورتی که fdm(1) با کاربر ریشه در حال اجرا باشد و کاربر جایگزینی در دستور اقدام یا قانون مشخص نشده باشد. این گزینه ممکن است با سوییچ -u در خط فرمان بازنویسی شود. اگر با کاربر ریشه اجرا شود، تعیین یک کاربر پیش‌فرض الزامی است.
location ...
ترتیبی را که جستجوی کاربر از چپ به راست در آن انجام می‌شود مشخص می‌کند. انواع ممکن عبارتند از passwd برای استفاده از فایل passwd(5) ، یا courier برای استفاده از Courier authlib (در صورتی که پشتیبانی آن کامپایل شده باشد).
type ...
انواع قفل‌های مورد استفاده برای قفل کردن mbox را مشخص می‌کند. انواع ممکن عبارتند از fcntl ، flock و dotlock. انواع flock و fcntl مانعة‌الجمع هستند. مقدار پیش‌فرض flock است.
url
به fdm(1) دستور می‌دهد تمام اتصال‌ها را از طریق url پروکسی کند. در حال حاضر پروکسی‌های HTTP و SOCKS5 پشتیبانی می‌شوند (نشانی‌های اینترنتی به‌شکل http://host[:port] یا socks://[user:pass@]host[:port]). برای HTTP هیچ‌گونه احراز هویتی پشتیبانی نمی‌شود.
drop |
این گزینه کنترل می‌کند که fdm(1) با ایمیل‌هایی که به انتهای مجموعه قوانین می‌رسند (ایمیل‌هایی که با هیچ قانونی تطابق ندارند یا فقط با قوانینی دارای کلیدواژهٔ continue تطابق دارند) چه کند. drop باعث دور ریختن چنین ایمیل‌هایی می‌شود، و keep تلاش می‌کند ایمیل را روی سرور باقی بگذارد. رفتار پیش‌فرض، نگه‌داشتن ایمیل و ثبت یک هشدار در لاگ مبنی بر رسیدن آن به انتهای مجموعه قوانین است.
count
گزینهٔ purge-after باعث می‌شود fdm(1) پس از دریافت count ایمیل، تلاش کند ایمیل‌های حذف‌شده را از روی سرور پاکسازی (purge) کند (در صورت پشتیبانی). این قابلیت در اتصال‌های ناپایدار مفید است تا در صورت قطعی اتصال، تعداد ایمیل‌های دریافتی مجدد محدود شود، اما توجه داشته باشید که می‌تواند منجر به کاهش چشمگیر سرعت شود.
در صورت وجود این گزینه، fdm(1) سرآیند ‘Received’ را در هر ایمیل درج نخواهد کرد.
در صورت تنظیم این گزینه، fdm(1) تلاشی برای ایجاد maildirها و mboxها یا بخش‌های مفقود مسیر آن‌ها نخواهد کرد.
user | umask
مشخص‌کنندهٔ umask(2) مورد استفاده هنگام ایجاد فایل‌ها است. user به‌معنای استفاده از umask تنظیم‌شده هنگام راه‌اندازی fdm(1) است، یا umask می‌تواند به‌صورت یک عدد هشت‌هشتی (octal) سه‌رقمی مشخص شود. مقدار پیش‌فرض 077 است.
user | group
امکان تعیین مالکیت گروهی پیش‌فرض فایل‌ها و دایرکتوری‌های ایجادشده توسط fdm(1) را فراهم می‌کند. group می‌تواند رشتهٔ نام گروه یا شناسهٔ عددی gid باشد. اگر user استفاده شود یا این گزینه در فایل پیکربندی نیامده باشد، fdm(1) تلاشی برای تنظیم گروه فایل‌ها و دایرکتوری‌های جدید نمی‌کند.
time
حداکثر زمان انتظار برای ارسال داده توسط سرور پیش از بستن اتصال را کنترل می‌کند. مقدار پیش‌فرض ۹۰۰ ثانیه است.
به fdm(1) دستور می‌دهد گواهی‌های SSL را برای تمام اتصال‌های SSL اعتبارسنجی کند.

فایل‌های پیکربندی بیشتر ممکن است با استفاده از دستور include فراخوانی شوند:

path
 

فایل مورد نظر برای فراخوانی، ابتدا به‌عنوان یک مسیر مطلق و سپس به‌صورت نسبی نسبت به دایرکتوری حاوی فایل پیکربندی اصلی جستجو می‌شود.

ماکروها ممکن است با استفاده از نحو زیر تعریف شوند:

  • name = string
  • name = number

ماکروها با پیشوند $ برای مشخص کردن مقدار رشته‌ای و % برای مشخص کردن مقدار عددی مشخص می‌شوند. پس از تعریف، یک ماکرو ممکن است در هر جایی که انتظار یک رشته یا عدد می‌رود استفاده شود. ماکروها ممکن است با احاطه کردن نام آن‌ها (پس از $ یا %) با {} در رشته‌ها جاسازی شوند، مانند:

"abc ${mymacro} %{anothermacro} def"

کلیدواژه‌های ifdef ، ifndef و endif ممکن است برای تجزیهٔ شرطی بخشی از فایل پیکربندی، بسته به اینکه ماکروی داده‌شده وجود دارد یا ندارد، استفاده شوند. بلوک‌های ifdef و ifndef می‌توانند تودرتو باشند.

نتیجهٔ یک دستور پوسته ممکن است با قرار دادن آن در $() یا %() در هر نقطه‌ای که انتظار یک رشته یا عدد می‌رود استفاده شود. اگر از اولی استفاده شود، نتیجهٔ دستور به‌صورت رشته استفاده می‌شود؛ اگر از دومی استفاده شود، به یک عدد صحیح تبدیل می‌گردد. دستورات پوسته هنگام تجزیه شدن فایل پیکربندی اجرا می‌شوند.

دستور account برای دستور دادن به fdm(1) جهت دریافت ایمیل از یک حساب استفاده می‌شود. نحو آن به‌صورت زیر است:

name [users] [disabled] type [args] [keep]
 

آرگومان name رشته‌ای است که نامی را برای حساب مشخص می‌کند. آرگومان اختیاری users دارای شکل زیر است:

user | { user ... }
 

دو گزینهٔ اول کاربر یا فهرستی از کاربرانی را مشخص می‌کنند که ایمیل باید هنگام اجرای یک اقدام به‌نام آن‌ها تحویل داده شود. اگر کاربری مشخص نشود، کاربر پیش‌فرض (تنظیم‌شده با set default-user) استفاده خواهد شد. کاربران مشخص‌شده به‌عنوان بخشی از تعریف حساب ممکن است با آرگومان‌های مشابه در تعاریف عملیات یا در قوانین تطابق بازنویسی شوند. اگر fdm(1) به‌عنوان کاربر غیرریشه اجرا شود، همچنان هر عملیات را یک‌بار برای هر کاربر اجرا خواهد کرد، اما قادر به تغییر هویت به آن کاربر نخواهد بود، بنابراین عملیات چندین بار با کاربر فعلی اجرا خواهد شد.

کلیدواژهٔ disabled به fdm(1) دستور می‌دهد این حساب را نادیده بگیرد مگر اینکه صریحاً با گزینهٔ -a در خط فرمان فعال شده باشد. اگر کلیدواژهٔ keep مشخص شود، تمام ایمیل‌های جمع‌آوری‌شده از این حساب نگه‌داری می‌شوند (حذف نمی‌شوند) حتی اگر با اقدام drop تطابق داشته باشند.

انواع حساب‌های پشتیبانی‌شده و آرگومان‌های آن‌ها عبارتند از:

این نوع حساب، ایمیل را از stdin می‌خواند، در صورتی که به یک لوله (pipe) متصل باشد. این ممکن است برای تحویل ایمیل از sendmail(8) استفاده شود؛ برای جزئیات به fdm(1) مراجعه کنید.
server host [port port] [user user] [pass pass] [only] [no-apop] [no-uidl] [starttls] [insecure]
 
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 است.

pipe command [userpass] [only] [no-apop]
این نوع حساب از پروتکل POP3 که از طریق command لوله (pipe) شده است استفاده می‌کند، مانند ssh(1). اگر دستور هرگونه خروجی در stderr تولید کند، در لاگ ثبت می‌شود. برای POP3 روی پایپ، ارائهٔ نام کاربری و گذرواژه اختیاری نیست و نمی‌تواند از ~/.netrc خوانده شود.
server host [port port] [userpass] [folder name] [only] [no-cram-md5] [no-plain] [no-login] [starttls] [insecure] [oauthbearer] [xoauth2]
 
server host [port port] [userpass] [folders] { name ... } [only]
 
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 است). این گزینه شکل زیر را دارد:
name | { 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 به‌عنوان روش احراز هویت استفاده کند.

pipe command [userpass] [folders] [only]
همانند pop3 pipe ، این نوع حساب از پروتکل IMAP که از طریق command لوله شده است استفاده می‌کند. اگر user و pass اختیاری IMAP ارائه شوند، در صورت نیاز استفاده خواهند شد، اما اگر یکی از آن‌ها ارائه شود، ارائهٔ هر دو الزامی است – استفاده از ~/.netrc مجاز نیست.

ایمیل‌های دریافت‌شده با استفاده از پروتکل IMAP با یک برچسب پوشه حاوی نام پوشهٔ مبدأ علامت‌گذاری می‌شوند.

path
 
{ path ... }
این انواع حساب به fdm(1) دستور می‌دهند ایمیل‌ها را از maildir یا maildirهای مشخص‌شده واکشی کند. این قابلیت به fdm(1) اجازه می‌دهد برای فیلتر کردن ایمیل، دریافت از یک maildir و حذف (دور ریختن) ایمیل‌های ناخواسته، یا تحویل ایمیل به یک maildir دیگر یا به یک mbox استفاده شود.

ایمیل دریافت‌شده از یک maildir با یک برچسب maildir حاوی نام پایهٔ (basename) فایل ایمیل علامت‌گذاری می‌شود.

path
 
{ path ... }
این گزینه‌ها مشابه maildir و maildirs هستند، اما باعث می‌شوند fdm(1) ایمیل‌ها را از یک mbox یا مجموعه‌ای از mboxها واکشی کند.

ایمیل دریافت‌شده از یک mbox با یک برچسب mbox حاوی نام پایهٔ فایل mbox علامت‌گذاری می‌شود.

server host [port port] [userpass] group group cache cache
 
server host [port port] [userpass] groups { group ... } cache cache
 
server host [port port] [userpass] group group cache cache
 
server host [port port] [userpass] groups { group ... } cache cache
یک حساب NNTP. مقاله‌ها از گروه یا گروه‌های مشخص‌شده واکشی و تحویل داده می‌شوند. شاخص و message-id آخرین مقالهٔ واکشی‌شده در هر گروه در فایل کش مشخص‌شده ذخیره می‌شود. هنگامی که fdm(1) مجدداً اجرا شود، دریافت مقاله‌ها از مقالهٔ کش‌شده آغاز می‌گردد. توجه داشته باشید که گزینهٔ keep برای حساب‌های NNTP کاملاً نادیده گرفته می‌شود – تمام ایمیل‌ها نگه‌داری می‌شوند و کش همیشه به‌روزرسانی می‌شود.

هنگامی که ایمیل توسط 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 با نتیجهٔ عبارات پرانتزی در آخرین عبارت منظم جایگزین می‌شوند.

fdm(1) می‌تواند یک فایل کش با مجموعه‌ای از رشته‌های تعریف‌شده توسط کاربر را نگه‌داری کند. برای استفاده از کش‌ها، fdm(1) باید همراه با فعال‌سازی آن‌ها کامپایل شده باشد. کش‌ها با کلیدواژهٔ cache تعریف می‌شوند:

path [expire age]
 

آرگومان path محل فایل کش است. اگر کلیدواژهٔ expire مشخص شود، موارد موجود در کش پس از رسیدن به سن تعیین‌شده حذف می‌شوند. age می‌تواند به‌سادگی بر حسب ثانیه داده شود، یا با یکی از اصلاح‌کننده‌ها دنبال شود: seconds ، hours ، minutes ، days ، months یا years.

کش‌ها باید پیش از استفاده تعریف شوند. موارد با استفاده از اقدام add-to-cache به کش‌ها افزوده می‌شوند، با اقدام remove-from-cache حذف می‌شوند، و با شرط in-cache مورد جستجو قرار می‌گیرند؛ برای اطلاعات بیشتر دربارهٔ این موارد به بخش‌های زیر مراجعه کنید.

دستور action برای تعریف اقدامات استفاده می‌شود. این موارد ممکن است با نام در قوانین (به زیر مراجعه کنید) برای انجام عملیاتی روی یک ایمیل مشخص شوند. نحو آن به‌صورت زیر است:

name [users] action
 
name [users] { action ... }
 

آرگومان name رشته‌ای است که نامی را برای اقدام تعریف می‌کند. آرگومان users دارای همان شکلی است که برای تعریف حساب ذکر شد. تنظیم کاربر یک اقدام ممکن است در قانون منطبق بازنویسی شود.

مقادیر ممکن برای action در زیر فهرست شده‌اند. اگر چندین اقدام مشخص شود، آن‌ها یک‌بار و به ترتیبی که مشخص شده‌اند، برای هر کاربر اجرا می‌شوند.

دور انداختن ایمیل.
نگه‌داشتن ایمیل، آن را از حساب حذف نکنید.
string [value value]
این گزینه ایمیل را با string و در صورت تمایل با value برچسب‌گذاری می‌کند، که می‌تواند با استفاده از شرایط tagged یا string مورد تطابق قرار گیرد.
path
ذخیرهٔ ایمیل در maildir مشخص‌شده توسط path. اگر maildir یا هر بخشی از مسیر آن وجود نداشته باشد، ایجاد می‌شود، مگر اینکه گزینهٔ no-create تنظیم شده باشد.

ایمیل تحویل‌داده‌شده به یک maildir با برچسب mail_file حاوی مسیر کامل فایل ایمیل علامت‌گذاری می‌شود.

path [compress]
افزودن ایمیل به انتهای mbox در path. اگر compress مشخص شود، fdm(1) پسوند ‘.gz’ را به path می‌افزاید و تلاش می‌کند ایمیل را با فشرده‌سازی gzip(1) بنویسد. اگر mbox یا هر بخشی از مسیر آن وجود نداشته باشد، ایجاد می‌شود، مگر اینکه گزینهٔ no-create تنظیم شده باشد.

ایمیل تحویل‌داده‌شده به یک mbox با برچسب mbox_file حاوی مسیر mbox علامت‌گذاری می‌شود.

command
اجرای command.
command
ارسال ایمیل از طریق لوله به command. دستورات exec و pipe به‌عنوان کاربر دستور اجرا می‌شوند.
path
نوشتن ایمیل در path.
path
الحاق ایمیل به انتهای path.
server host [port port] [from from] [to to]
اتصال به یک سرور SMTP و تلاش برای تحویل ایمیل به آن. اگر from یا to مشخص شوند، در دستورات MAIL FROM یا RCPT TO به سرور ارسال می‌گردند. در غیر این صورت، نام‌های کاربر و میزبان جاری استفاده می‌شوند.
server path | host [port port] [from from] [to to]
اتصال به یک سرور LMTP و تلاش برای ذخیرهٔ ایمیل در آنجا. اگر قرار است از یک سوکت یونیکس استفاده شود، path باید مسیر مطلق فایل سوکت باشد.

درگاه پیش‌فرض port ۲۴ است. اگر from یا to مشخص شوند، در دستورات MAIL FROM یا RCPT TO به سرور فرستاده می‌شوند. در غیر این صورت، نام‌های کاربر و میزبان جاری استفاده می‌شوند.

command
ارسال کل ایمیل از طریق لوله به command برای تولید یک ایمیل جدید و استفاده از آن ایمیل برای اقدامات یا قوانین پس از آن. یک نمونه از اقدام rewrite عبارت است از:
action "cat" pipe "cat"
action "rewrite" rewrite "sed 's/bob/fred/g'"
# این قانون پیام را بازنویسی خواهد کرد
match all action "rewrite" continue
# این قانون پیام بازنویسی‌شده را ارسال خواهد کرد
match all action "cat"
name value value
افزودن سرآیند name با محتوای value.
name
 
{ name ... }
حذف تمام نمونه‌های سرآیندهای منطبق با الگوی fnmatch(3) در name.
نوشتن ایمیل در stdout.
path key key
این اقدام رشتهٔ key را به کش مشخص‌شده توسط path می‌افزاید. اگر key از قبل در کش وجود داشته باشد، جایگزین می‌شود.
path key key
رشتهٔ key را از کش path حذف می‌کند، در صورتی که کلید منطبقی وجود داشته باشد.
name
این گزینه اقدام نام‌گذاری‌شدهٔ دیگری را فراخوانی می‌کند. حداکثر پنج اقدام می‌توانند به‌صورت زنجیره‌ای فراخوانی شوند.

قوانین با استفاده از کلیدواژهٔ match مشخص می‌شوند. شکل پایه‌ای آن به‌صورت زیر است:

condition [and | or condition ...] [users] actions [continue]
 

آرگومان condition می‌تواند یکی از موارد زیر باشد:

با تمام ایمیل‌ها تطابق می‌یابد.
تنها با ایمیل‌هایی تطابق می‌یابد که با قانون قبلی مطابقت داشته و با continue به بعد منتقل شده‌اند.
نقطهٔ مقابل matched: تنها با ایمیل‌هایی تطابق دارد که با هیچ‌یک از قوانین پیشین همخوانی نداشته‌اند.
name | { name ... }
تنها با ایمیل‌هایی که از حساب یا حساب‌های نام‌برده دریافت شده‌اند مطابقت دارد. نام‌های حساب ممکن است شامل نویسه‌های عام (glob wildcards) پوسته باشند تا همانند گزینه‌های خط فرمان -a و -x با چندین حساب مطابقت یابند.
string
با ایمیل‌های برچسب‌گذاری‌شده با string تطابق دارد.
[case] regexp [in headers | in body]
عبارت منظمی را مشخص می‌کند که هر ایمیل باید با آن تطابق یابد. تطابق‌های عبارت منظم ممکن است با تعیین in headers یا in body به سرآیندها یا بدنهٔ پیام محدود شوند. کلیدواژهٔ case تطابق عبارت منظم را به بزرگ و کوچک بودن حروف حساس می‌کند؛ حالت پیش‌فرض تطابق غیرحساس به حروف بزرگ و کوچک است.
command [user user] returns (return code, stdout regexp)
 
command [user user] returns (return code, [case] stdout regexp)
این دو شرط یک command را اجرا کرده و مقدار بازگشتی و خروجی آن را آزمایش می‌کنند. آرگومان return code کد بازگشتی عددی مورد انتظار است و stdout regexp عبارت منظمی است که در برابر خروجی دستور در stdout آزموده می‌شود. هر یک از این دو آرگومان ممکن است حذف شوند؛ اگر هر دو مشخص شوند، هر دو باید برای برقراری شرط صادق باشند. نسخهٔ pipe هنگام اجرای دستور، ایمیل را از طریق لوله به stdin آن ارسال می‌کند. اگر کاربری مشخص شده باشد، fdm(1) پیش از اجرای دستور به آن کاربر تغییر هویت خواهد داد، در غیر این صورت کاربر فعلی (یا کاربر ریشه اگر با ریشه اجرا شده باشد) استفاده می‌شود.
< number
 
> number
مقایسهٔ اندازهٔ ایمیل با number.
string to [case] regexp
تطابق string در برابر regexp.
< time
 
> time
شرط age سرآیند تاریخ ایمیل را برای تعیین سن آن بررسی می‌کند، و در صورتی که ایمیل قدیمی‌تر (>) یا جدیدتر (<) از زمان مشخص‌شده باشد تطابق می‌یابد. زمان ممکن است به‌صورت یک عدد ساده بر حسب ثانیه داده شود، یا با یکی از واژه‌های seconds ، hours ، minutes ، days ، months یا years دنبال شود تا زمان را در واحدهای مختلف مشخص کند.
path key key
این شرط در صورتی که رشتهٔ key در کش موجود در path باشد، نتیجهٔ درست (true) می‌دهد.
count < number
 
count > number
 
count == number
 
count != number
این شرایط در صورتی تطابق دارند که ایمیل دارای تعداد پیوست‌هایی کمتر از، بیشتر از، مساوی یا نامساوی با number باشد.
total-size < size
 
total-size > size
در صورتی که اندازهٔ کل تمام پیوست‌ها کوچک‌تر یا بزرگ‌تر از size باشد مطابقت دارد.
any-size < size
 
any-size > size
تک‌تک پیوست‌های یک ایمیل را با size مقایسه می‌کند و اگر هر یک از آن‌ها کوچک‌تر یا بزرگ‌تر باشند مطابقت دارد.
any-type string
 
any-name string
اگر نوع MIME یا نام فایل هر یک از پیوست‌های یک ایمیل با string مطابقت داشته باشد، ارزش درستی می‌یابد. نویسه‌های عام fnmatch(3) ممکن است استفاده شوند.

شرایط متعدد ممکن است با استفاده از کلیدواژه‌های and یا or به یکدیگر زنجیر شوند. شرایط از چپ به راست آزمایش می‌شوند. هر شرطی ممکن است با کلیدواژهٔ not پیشوندگذاری شود تا معکوس گردد.

آرگومان اختیاری users در شکل نخست دارای همان نحو تعریف action است. فهرست کاربران یک قانون، هر کاربری را که به‌عنوان بخشی از اقدامات داده شده باشد بازنویسی می‌کند.

فهرست actions اقداماتی را مشخص می‌کند که هنگام تطابق قانون با یک ایمیل باید انجام شوند. این فهرست یا به‌شکلی مشابه است:

name | { name ... }
 

یا ممکن است تعدادی اقدام درون‌خطی (اقدامات لامبدا) را مشخص کند:

action
 
{ action ... }
 

در حالت اخیر، action از همان شکلی که در بخش ACTIONS شرح داده شد پیروی می‌کند. اقدامات از نخستین تا آخرین به ترتیبی که در تعریف قانون مشخص شده‌اند انجام می‌شوند.

اگر کلیدواژهٔ continue حاضر باشد، با تطابق این قانون ارزیابی متوقف نخواهد شد. در عوض، fdm(1) پس از انجام هر اقدامی برای این قانون، به تطابق قوانین بعدی ادامه خواهد داد.

قوانین ممکن است با مشخص کردن قوانین بیشتر در میان آکولادها تودرتو شوند:

condition [and | or condition ...] {
 
...
 
 

قوانین درونی تا زمانی که قانون بیرونی تطابق نیابد ارزیابی نخواهند شد. قوانین می‌توانند به‌صورت چندگانه تودرتو شوند. توجه داشته باشید که قانون بیرونی برای اهداف شرایط matched و unmatched به‌عنوان یک تطابق به‌شمار نمی‌آید.

~/.fdm.conf
فایل پیکربندی پیش‌فرض fdm.conf
/etc/fdm.conf
فایل پیکربندی پیش‌فرض سرتاسری سیستم
~/.fdm.lock
فایل قفل پیش‌فرض
/var/db/fdm.lock
فایل قفل برای کاربر ریشه (root)

fdm(1), re_format(7)

Nicholas Marriott <nicholas.marriott@gmail.com>

August 21, 2006 Linux 6.12.107+deb13-amd64