.\" $Id$ .\" .\" Copyright (c) 2006 Nicholas Marriott .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above .\" copyright notice and this permission notice appear in all copies. .\" .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES .\" WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .Dd August 21, 2006 .Dt FDM.CONF 5 .Os .Sh "نام (NAME)" .Nm fdm.conf .Nd "فایل پیکربندی fdm" .Sh "توضیحات (DESCRIPTION)" این صفحه راهنما فایل پیکربندی .Xr fdm 1 را شرح می‌دهد. این فایل .Em حساب‌ها برای دریافت ایمیل، تعدادی .Em عملیات قابل انجام، و .Em قوانین پیونددهندهٔ یک عبارت منظم (regexp) به یک عملیات را تعریف می‌کند. این فایل یک‌بار از بالا به پایین تجزیه می‌شود، بنابراین تعاریف حساب‌ها و عملیات‌ها باید پیش از ارجاع به آن‌ها در یک قانون، در فایل ظاهر شوند. قوانین از ابتدا تا انتها ارزیابی می‌شوند و (مگر در حالتی که با کلیدواژهٔ .Ic continue بازنویسی شود) فرآیند ارزیابی در اولین تطابق متوقف می‌گردد. .Pp این فایل دارای قالب زیر است: .Pp خطوط خالی و خطوطی که با نویسهٔ .Sq # آغاز می‌شوند نادیده گرفته خواهند شد. .Pp عبارات منظم و رشته‌ها باید درون گیومهٔ دوگانه (double quotes) قرار گیرند. نویسه‌های خاص در عبارات منظم و رشته‌ها (از جمله گذرواژه‌ها) باید اسکیپ (escape) شوند. توجه داشته باشید که این موضوع در عبارات منظم ممکن است به‌معنای دابل\-اسکیپ (double-escaping) باشد. .Pp دستورات مجاز در بخش‌های زیر پوشش داده شده‌اند. .Sh "گزینه‌ها (OPTIONS)" گزینه‌ها با استفاده از دستور .Ic set پیکربندی می‌شوند. این دستور می‌تواند با گزینه‌های زیر دنبال شود، یک گزینه در هر دستور: .Bl -tag -width Ds .It Ic maximum-size Ar size برای تنظیم حداکثر اندازهٔ یک ایمیل استفاده می‌شود. ایمیل‌های بزرگ‌تر از این حد نادیده گرفته (دور ریخته) شده و در صورت لزوم، از سرور حذف نمی‌شوند. .Pp اندازه ممکن است به‌صورت یک عدد ساده بر حسب بایت یا با پسوند .Ql K برای کیلوبایت، .Ql M برای مگابایت یا .Ql G برای گیگابایت مشخص شود. مقدار پیش‌فرض ۳۲ مگابایت و حداکثر آن یک گیگابایت است. .It Ic delete-oversized اگر این گزینه مشخص شود، .Xr fdm 1 تلاش می‌کند پیام‌هایی را که از .Ic maximum-size فراتر می‌روند حذف کند و ادامه دهد. اگر مشخص نشود، پیام‌های با اندازهٔ بیش‌از‌حد یک خطای مهلک تلقی شده و موجب توقف اضطراری (abort) .Xr fdm 1 می‌شوند. .Pp توجه داشته باشید که .Xr fdm 1 ممکن است تعدادی پیام در صف داشته باشد (تا سقف تنظیم .Ic queue-high ، که در صورت بازنویسی برای هر حساب دو برابر می‌شود)، بنابراین این تنظیم و گزینهٔ .Ic queue-high باید با در نظر گرفتن فضای موجود در پوشهٔ موقت و پیامدهای ناشی از توقف .Xr fdm 1 به‌دلیل پر شدن فضا، تعیین شوند. .It Ic queue-high Ar number حداکثر تعداد پیام‌هایی را که .Xr fdm 1 می‌تواند به‌طور هم‌زمان نگه دارد تنظیم می‌کند. .Xr fdm 1 هم‌زمان با دریافت پیام بعدی، تلاش می‌کند پیام‌های قبلی موجود در صف را پردازش کند. به‌محض رسیدن به این حد، پیام‌های بیشتری دریافت نخواهد شد تا زمانی که تعداد پیام‌های نگه‌داری‌شده به مقدار .Ic queue-low کاهش یابد. .It Ic queue-low Ar number طولی از صف پیام است که پس از رسیدن به حد .Ic queue-high ، باید به آن کاهش یابد تا فرآیند دریافت پیام‌ها مجدداً از سر گرفته شود. .It Ic ignore-errors در صورت تنظیم، اگر یک تحویل پیام با شکست مواجه شود، .Nm به‌جای توقف اضطراری به پردازش ایمیل ادامه خواهد داد. .It Ic allow-multiple اگر این گزینه مشخص شود، .Xr fdm 1 تلاشی برای ایجاد فایل قفل نمی‌کند و به چندین نمونه اجازه می‌دهد به‌طور هم‌زمان اجرا شوند. .It Ic lock-file Ar path یک فایل قفل جایگزین تنظیم می‌کند. مقدار پیش‌فرض برای کاربران غیرریشه .Pa ~/.fdm.lock و برای کاربر ریشه .Pa /var/db/fdm.lock است. .It Ic lock-timeout Ar time مدت‌زمانی را که .Nm پیش از انصراف برای دستیابی به فایل قفل تلاش می‌کند، تعیین می‌کند. .It Ic lock-wait در صورت وجود، .Nm به‌جای خروج فوری با خطا، به‌مدت .Ic lock-timeout منتظر .Ic lock-file خواهد ماند. .It Ic command-user Ar user کاربری را مشخص می‌کند که برای اجرای عملیات‌های .Ic exec و .Ic pipe استفاده می‌شود. به‌طور پیش‌فرض این کاربر همان کاربری است که fdm را فراخوانی کرده است. .It Ic default-user Ar user کاربر پیش‌فرضی را تعیین می‌کند که پیش از تحویل ایمیل باید به آن تغییر هویت داده شود، در صورتی که .Xr fdm 1 با کاربر ریشه در حال اجرا باشد و کاربر جایگزینی در دستور اقدام یا قانون مشخص نشده باشد. این گزینه ممکن است با سوییچ .Fl u در خط فرمان بازنویسی شود. اگر با کاربر ریشه اجرا شود، تعیین یک کاربر پیش‌فرض الزامی است. .It Ic lookup-order Ar location ... ترتیبی را که جستجوی کاربر از چپ به راست در آن انجام می‌شود مشخص می‌کند. انواع ممکن عبارتند از .Cm passwd برای استفاده از فایل .Xr passwd 5 ، یا .Cm courier برای استفاده از Courier authlib (در صورتی که پشتیبانی آن کامپایل شده باشد). .It Ic lock-types Ar type Ar ... انواع قفل‌های مورد استفاده برای قفل کردن mbox را مشخص می‌کند. انواع ممکن عبارتند از .Cm fcntl ، .Cm flock و .Cm dotlock . انواع .Cm flock و .Cm fcntl مانعة‌الجمع هستند. مقدار پیش‌فرض .Cm flock است. .It Ic proxy Ar url به .Xr fdm 1 دستور می‌دهد تمام اتصال‌ها را از طریق .Ar url پروکسی کند. در حال حاضر پروکسی‌های HTTP و SOCKS5 پشتیبانی می‌شوند (نشانی‌های اینترنتی به‌شکل .Pf http:// Ar host Ns Op : Ns Ar port یا .Pf socks:// Oo Ar user Ns : Ns Ar pass Ns @ Oc Ns host Ns Op : Ns Ar port ) . برای HTTP هیچ‌گونه احراز هویتی پشتیبانی نمی‌شود. .It Ic unmatched-mail Cm drop | keep این گزینه کنترل می‌کند که .Xr fdm 1 با ایمیل‌هایی که به انتهای مجموعه قوانین می‌رسند (ایمیل‌هایی که با هیچ قانونی تطابق ندارند یا فقط با قوانینی دارای کلیدواژهٔ .Ic continue تطابق دارند) چه کند. .Cm drop باعث دور ریختن چنین ایمیل‌هایی می‌شود، و .Cm keep تلاش می‌کند ایمیل را روی سرور باقی بگذارد. رفتار پیش‌فرض، نگه‌داشتن ایمیل و ثبت یک هشدار در لاگ مبنی بر رسیدن آن به انتهای مجموعه قوانین است. .It Ic purge-after Ar count گزینهٔ .Ic purge-after باعث می‌شود .Xr fdm 1 پس از دریافت .Ar count ایمیل، تلاش کند ایمیل‌های حذف‌شده را از روی سرور پاکسازی (purge) کند (در صورت پشتیبانی). این قابلیت در اتصال‌های ناپایدار مفید است تا در صورت قطعی اتصال، تعداد ایمیل‌های دریافتی مجدد محدود شود، اما توجه داشته باشید که می‌تواند منجر به کاهش چشمگیر سرعت شود. .It Ic no-received در صورت وجود این گزینه، .Xr fdm 1 سرآیند .Sq Received را در هر ایمیل درج نخواهد کرد. .It Ic no-create در صورت تنظیم این گزینه، .Xr fdm 1 تلاشی برای ایجاد maildirها و mboxها یا بخش‌های مفقود مسیر آن‌ها نخواهد کرد. .It Ic file-umask Ic user | Ar umask مشخص‌کنندهٔ .Xr umask 2 مورد استفاده هنگام ایجاد فایل‌ها است. .Ic user به‌معنای استفاده از umask تنظیم‌شده هنگام راه‌اندازی .Xr fdm 1 است، یا .Ar umask می‌تواند به‌صورت یک عدد هشت‌هشتی (octal) سه‌رقمی مشخص شود. مقدار پیش‌فرض 077 است. .It Ic file-group Ic user | Ar group امکان تعیین مالکیت گروهی پیش‌فرض فایل‌ها و دایرکتوری‌های ایجادشده توسط .Xr fdm 1 را فراهم می‌کند. .Ar group می‌تواند رشتهٔ نام گروه یا شناسهٔ عددی gid باشد. اگر .Ic user استفاده شود یا این گزینه در فایل پیکربندی نیامده باشد، .Xr fdm 1 تلاشی برای تنظیم گروه فایل‌ها و دایرکتوری‌های جدید نمی‌کند. .It Ic timeout Ar time حداکثر زمان انتظار برای ارسال داده توسط سرور پیش از بستن اتصال را کنترل می‌کند. مقدار پیش‌فرض ۹۰۰ ثانیه است. .It Ic verify-certificates به .Xr fdm 1 دستور می‌دهد گواهی‌های SSL را برای تمام اتصال‌های SSL اعتبارسنجی کند. .El .Sh "فراخوانی فایل‌ها (INCLUDING FILES)" فایل‌های پیکربندی بیشتر ممکن است با استفاده از دستور .Ic include فراخوانی شوند: .Bl -tag -width Ds .It Ic include Ar path .El .Pp فایل مورد نظر برای فراخوانی، ابتدا به‌عنوان یک مسیر مطلق و سپس به‌صورت نسبی نسبت به دایرکتوری حاوی فایل پیکربندی اصلی جستجو می‌شود. .Sh "ماکروها (MACROS)" ماکروها ممکن است با استفاده از نحو زیر تعریف شوند: .Bl -item .It .Cm $ Ns Ar name Ic = Ar string .It .Cm % Ns Ar name Ic = Ar number .El .Pp ماکروها با پیشوند $ برای مشخص کردن مقدار رشته‌ای و % برای مشخص کردن مقدار عددی مشخص می‌شوند. پس از تعریف، یک ماکرو ممکن است در هر جایی که انتظار یک رشته یا عدد می‌رود استفاده شود. ماکروها ممکن است با احاطه کردن نام آن‌ها (پس از $ یا %) با {} در رشته‌ها جاسازی شوند، مانند: .Bd -ragged -offset indent "abc ${mymacro} %{anothermacro} def" .Ed .Pp کلیدواژه‌های .Ic ifdef ، .Ic ifndef و .Ic endif ممکن است برای تجزیهٔ شرطی بخشی از فایل پیکربندی، بسته به اینکه ماکروی داده‌شده وجود دارد یا ندارد، استفاده شوند. بلوک‌های .Ic ifdef و .Ic ifndef می‌توانند تودرتو باشند. .Sh "دستورات پوسته (SHELL COMMANDS)" نتیجهٔ یک دستور پوسته ممکن است با قرار دادن آن در $() یا %() در هر نقطه‌ای که انتظار یک رشته یا عدد می‌رود استفاده شود. اگر از اولی استفاده شود، نتیجهٔ دستور به‌صورت رشته استفاده می‌شود؛ اگر از دومی استفاده شود، به یک عدد صحیح تبدیل می‌گردد. دستورات پوسته هنگام تجزیه شدن فایل پیکربندی اجرا می‌شوند. .Sh "حساب‌ها (ACCOUNTS)" دستور .Ic account برای دستور دادن به .Xr fdm 1 جهت دریافت ایمیل از یک حساب استفاده می‌شود. نحو آن به‌صورت زیر است: .Bl -tag -width Ds .It Xo Ic account Ar name .Op Ar users .Op Ic disabled .Ar type Op Ar args .Op Ic keep .Xc .El .Pp آرگومان .Ar name رشته‌ای است که نامی را برای حساب مشخص می‌کند. آرگومان اختیاری .Ar users دارای شکل زیر است: .Bl -tag -width Ds .It Xo Ic user Ar user | Ic users .Li { .Ar user ... .Li } .Xc .El .Pp دو گزینهٔ اول کاربر یا فهرستی از کاربرانی را مشخص می‌کنند که ایمیل باید هنگام اجرای یک اقدام به‌نام آن‌ها تحویل داده شود. اگر کاربری مشخص نشود، کاربر پیش‌فرض (تنظیم‌شده با .Ic set Ic default-user ) استفاده خواهد شد. کاربران مشخص‌شده به‌عنوان بخشی از تعریف حساب ممکن است با آرگومان‌های مشابه در تعاریف عملیات یا در قوانین تطابق بازنویسی شوند. اگر .Xr fdm 1 به‌عنوان کاربر غیرریشه اجرا شود، همچنان هر عملیات را یک‌بار برای هر کاربر اجرا خواهد کرد، اما قادر به تغییر هویت به آن کاربر نخواهد بود، بنابراین عملیات چندین بار با کاربر فعلی اجرا خواهد شد. .Pp کلیدواژهٔ .Ic disabled به .Xr fdm 1 دستور می‌دهد این حساب را نادیده بگیرد مگر اینکه صریحاً با گزینهٔ .Fl a در خط فرمان فعال شده باشد. اگر کلیدواژهٔ .Ic keep مشخص شود، تمام ایمیل‌های جمع‌آوری‌شده از این حساب نگه‌داری می‌شوند (حذف نمی‌شوند) حتی اگر با اقدام .Ic drop تطابق داشته باشند. .Pp انواع حساب‌های پشتیبانی‌شده و آرگومان‌های آن‌ها عبارتند از: .Bl -tag -width Ds .It Ic stdin این نوع حساب، ایمیل را از .Dv stdin می‌خواند، در صورتی که به یک لوله (pipe) متصل باشد. این ممکن است برای تحویل ایمیل از .Xr sendmail 8 استفاده شود؛ برای جزئیات به .Xr fdm 1 مراجعه کنید. .It Xo Ic pop3 Ic server Ar host .Op Ic port Ar port .Op Ic user Ar user .Op Ic pass Ar pass .Op Ar only .Op Ic no-apop .Op Ic no-uidl .Op Ic starttls .Op Ic insecure .Xc .It Xo Ic pop3s Ic server Ar host .Op Ic port Ar port .Op Ar userpass .Op Ar only .Op Ic no-apop .Op Ic no-verify .Op Ic no-uidl .Op Ic insecure .Xc این گزاره‌ها یک حساب POP3 یا POP3S را تعریف می‌کنند. عنصر .Ar userpass شکل زیر را دارد: .Bl -tag -width Ds .It Xo .Op Ic user Ar user .Op Ic pass Ar pass .Xc .El .Pp آرگومان‌های .Ar host ، .Ar user و .Ar pass باید رشته باشند. اگر نام کاربری یا گذرواژه ارائه نشود، .Xr fdm 1 تلاش می‌کند آن را در فایل .Pa ~/.netrc جستجو کند (برای جزئیات قالب فایل به .Xr ftp 1 مراجعه کنید). گزینهٔ درگاه (port) ممکن است رشته‌ای باشد که در پایگاه دادهٔ .Xr services 5 جستجو شود، یا یک عدد باشد. اگر حذف شود، درگاه پیش‌فرض (۱۱۰ برای POP3، ۹۹۵ برای POP3S) استفاده می‌شود. .Pp گزینهٔ .Ar only به‌شکل زیر است: .Bl -tag -width Ds .It Xo .Op Ic new-only | Ic old-only .Ic cache Ar path .Xc .El .Pp گزینهٔ .Ic new-only تنها ایمیل‌هایی را دریافت می‌کند که قبلاً دریافت نشده‌اند، و .Ic old-only عکس آن است: تنها ایمیل‌هایی را دریافت می‌کند که قبلاً دریافت شده‌اند. فایل کش برای ذخیرهٔ وضعیت صندوق پستی POP3 استفاده می‌شود. فلگ .Ic no-apop دستور می‌دهد که .Xr fdm 1 از دستور APOP در POP3 برای احراز هویت استفاده نکند، و کلیدواژهٔ .Ic no-verify به .Xr fdm 1 دستور می‌دهد اعتبارسنجی گواهی SSL را برای این حساب نادیده بگیرد. کلیدواژهٔ .Ic no-uidl باعث می‌شود .Xr fdm 1 از دستور UIDL برای واکشی ایمیل‌ها استفاده نکند. این امر عمدتاً برای سرورهای POP3 ناسازگار یا معیوب کاربرد دارد. .Pp گزینهٔ .Ic starttls تلاش می‌کند پس از اتصال از .Em STARTTLS استفاده کند. .Pp گزینهٔ .Ic insecure اجازهٔ استفاده از پروتکل‌های ناامن را می‌دهد که در حال حاضر شامل SSLv2، SSLv3 و TLS1.0 است. .It Xo Ic pop3 Ic pipe Ar command .Op Ar userpass .Op Ar only .Op Ic no-apop .Xc این نوع حساب از پروتکل POP3 که از طریق .Ar command لوله (pipe) شده است استفاده می‌کند، مانند .Xr ssh 1 . اگر دستور هرگونه خروجی در .Dv stderr تولید کند، در لاگ ثبت می‌شود. برای POP3 روی پایپ، ارائهٔ نام کاربری و گذرواژه اختیاری نیست و نمی‌تواند از .Pa ~/.netrc خوانده شود. .It Xo Ic imap Ic server Ar host .Op Ic port Ar port .Op Ar userpass .Op Ic folder Ar name .Op Ar only .Op Ic no-cram-md5 .Op Ic no-plain .Op Ic no-login .Op Ic starttls .Op Ic insecure .Op Ic oauthbearer .Op Ic xoauth2 .Xc .It Xo Ic imap Ic server Ar host .Op Ic port Ar port .Op Ar userpass .Op Ic folders .Li { .Ar name ... .Li } .Op Ar only .Xc .It Xo Ic imaps Ic server Ar host .Op Ic port Ar port .Op Ar userpass .Op Ar folders .Op Ar only .Op Ic no-verify .Op Ic no-cram-md5 .Op Ic no-plain .Op Ic no-login .Op Ic insecure .Op Ic oauthbearer .Op Ic xoauth2 .Xc این گزاره‌ها یک حساب IMAP یا IMAPS را تعریف می‌کنند. پارامترها همانند حساب POP3 یا POP3S هستند، به‌جز گزینهٔ اضافی .Ar folders که نام پوشه یا پوشه‌های مورد استفاده را تنظیم می‌کند (حالت پیش‌فرض دریافت از inbox است). این گزینه شکل زیر را دارد: .Bl -tag -width Ds .It Xo Ic folder Ar name | Ic folders .Li { .Ar name Ar ... .Li } .Xc .El .Pp درگاه‌های پیش‌فرض مورد استفاده، ۱۴۳ برای IMAP و ۹۹۳ برای IMAPS هستند. برای IMAP، مورد .Ar only صرفاً شامل یکی از کلیدواژه‌های .Ic new-only یا .Ic old-only است \(en نیازی به فایل کش نیست. .Pp گزینه‌های .Ic no-cram-md5 ، .Ic no-plain و .Ic no-login روش احراز هویت داده‌شده را غیرفعال می‌کنند. رفتار پیش‌فرض استفاده از CRAM-MD5 در صورت در دسترس بودن، سپس PLAIN، و در غیر این صورت LOGIN است. .Pp گزینهٔ .Ic starttls تلاش می‌کند پس از اتصال از .Em STARTTLS استفاده کند. .Pp گزینهٔ .Ic insecure اجازهٔ استفاده از پروتکل‌های ناامن را می‌دهد که در حال حاضر شامل SSLv2، SSLv3 و TLS1.0 است. .Pp گزینهٔ .Ic oauthbearer تلاش می‌کند از توکن حامل OAuth 2.0 به‌عنوان روش احراز هویت استفاده کند. .It Xo Ic imap Ic pipe Ar command .Op Ar userpass .Op Ar folders .Op Ar only .Xc همانند .Ic pop3 .Ic pipe ، این نوع حساب از پروتکل IMAP که از طریق .Ar command لوله شده است استفاده می‌کند. اگر .Ar user و .Ar pass اختیاری IMAP ارائه شوند، در صورت نیاز استفاده خواهند شد، اما اگر یکی از آن‌ها ارائه شود، ارائهٔ هر دو الزامی است \(en استفاده از .Pa ~/.netrc مجاز نیست. .Pp ایمیل‌های دریافت‌شده با استفاده از پروتکل IMAP با یک برچسب پوشه حاوی نام پوشهٔ مبدأ علامت‌گذاری می‌شوند. .It Ic maildir Ar path .It Xo Ic maildirs .Li { .Ar path ... .Li } .Xc این انواع حساب به .Xr fdm 1 دستور می‌دهند ایمیل‌ها را از maildir یا maildirهای مشخص‌شده واکشی کند. این قابلیت به .Xr fdm 1 اجازه می‌دهد برای فیلتر کردن ایمیل، دریافت از یک maildir و حذف (دور ریختن) ایمیل‌های ناخواسته، یا تحویل ایمیل به یک maildir دیگر یا به یک mbox استفاده شود. .Pp ایمیل دریافت‌شده از یک maildir با یک برچسب maildir حاوی نام پایهٔ (basename) فایل ایمیل علامت‌گذاری می‌شود. .It Ic mbox Ar path .It Xo Ic mboxes .Li { .Ar path ... .Li } .Xc این گزینه‌ها مشابه .Ic maildir و .Ic maildirs هستند، اما باعث می‌شوند .Xr fdm 1 ایمیل‌ها را از یک mbox یا مجموعه‌ای از mboxها واکشی کند. .Pp ایمیل دریافت‌شده از یک mbox با یک برچسب mbox حاوی نام پایهٔ فایل mbox علامت‌گذاری می‌شود. .It Xo Ic nntp Ic server Ar host .Op Ic port Ar port .Op Ar userpass .Ic group Ar group .Ic cache Ar cache .Xc .It Xo Ic nntp Ic server Ar host .Op Ic port Ar port .Op Ar userpass .Ic groups .Li { .Ar group ... .Li } .Ic cache Ar cache .Xc .It Xo Ic nntps Ic server Ar host .Op Ic port Ar port .Op Ar userpass .Ic group Ar group .Ic cache Ar cache .Xc .It Xo Ic nntps Ic server Ar host .Op Ic port Ar port .Op Ar userpass .Ic groups .Li { .Ar group ... .Li } .Ic cache Ar cache .Xc یک حساب NNTP. مقاله‌ها از گروه یا گروه‌های مشخص‌شده واکشی و تحویل داده می‌شوند. شاخص و message-id آخرین مقالهٔ واکشی‌شده در هر گروه در فایل کش مشخص‌شده ذخیره می‌شود. هنگامی که .Xr fdm 1 مجدداً اجرا شود، دریافت مقاله‌ها از مقالهٔ کش‌شده آغاز می‌گردد. توجه داشته باشید که گزینهٔ .Ic keep برای حساب‌های NNTP کاملاً نادیده گرفته می‌شود \(en تمام ایمیل‌ها نگه‌داری می‌شوند و کش همیشه به‌روزرسانی می‌شود. .El .Sh "برچسب‌گذاری (TAGGING)" هنگامی که ایمیل توسط .Xr fdm 1 پردازش می‌شود، با تعدادی جفت نام/مقدار برچسب‌گذاری می‌گردد. برخی برچسب‌ها به‌طور خودکار افزوده می‌شوند، و ایمیل همچنین می‌تواند صریحاً توسط کاربر با استفاده از اقدام .Ic tag برچسب‌گذاری شود. برچسب‌ها ممکن است در بیشتر رشته‌ها به روشی مشابه ماکروها درج شوند، با این تفاوت که برچسب‌ها در زمان اجرا پردازش می‌شوند نه هنگام تجزیهٔ فایل پیکربندی. مقدار یک برچسب با احاطه کردن نام آن در %[] درج می‌شود، برای نمونه: .Bl -tag -width Ds .It "abc%[account]def" .It "%[hour]:%[minute]:%[second]" .El .Pp برچسب‌های پیش‌فرض همچنین دارای یک نماد تک‌حرفی هستند. قرار دادن یک برچسب ناموجود در یک رشته معادل قرار دادن برچسبی با مقدار خالی است، بنابراین "abc%[nonexistent]def" به "abcdef" تبدیل خواهد شد. .Pp برچسب‌هایی که به‌طور خودکار اضافه می‌شوند عبارتند از: .Pp .Bl -tag -width Ds -offset indent -compact .It account (%a) نام حسابی که ایمیل از آن واکشی شده است. .It home (%h) دایرکتوری خانگی کاربر تحویل‌گیرنده. .It uid (%n) شناسهٔ کاربری (uid) کاربر تحویل‌گیرنده. .It action (%t) نام آخرین اقدام اجراشده برای این ایمیل. .It user (%u) نام کاربری کاربر تحویل‌گیرنده. .It hour (%H) ساعت جاری (۰۰\(en۲۳). .It minute (%M) دقیقهٔ جاری (۰۰\(en۵۹). .It second (%S) ثانیهٔ جاری (۰۰\(en۵۹). .It day (%d) روز جاری ماه (۰۱\(en۳۱). .It month (%m) ماه جاری (۰۱\(en۱۲). .It year (%y) سال جاری. .It year2 سال جاری به‌صورت دورقمی. .It dayofweek (%W) روز جاری هفته (۰\(en۶، یکشنبه ۰ است). .It dayofyear (%Y) روز جاری سال (۰۰۱\(en۳۶۶). .It quarter (%Q) فصل/سه‌ماههٔ جاری (۱\(en۴). .It rfc822date تاریخ جاری در قالب RFC822. .It mail_hour ساعت برگرفته از سرآیند تاریخ ایمیل، در صورت وجود و معتبر بودن؛ در غیر این صورت زمان جاری. .It mail_minute دقیقه برگرفته از سرآیند تاریخ ایمیل. .It mail_second ثانیه برگرفته از سرآیند تاریخ ایمیل. .It mail_day روز برگرفته از سرآیند تاریخ ایمیل. .It mail_month ماه برگرفته از سرآیند تاریخ ایمیل. .It mail_year سال برگرفته از سرآیند تاریخ ایمیل. .It mail_year2 همان مقدار به‌صورت دورقمی. .It mail_dayofweek روز هفته برگرفته از سرآیند تاریخ ایمیل. .It mail_dayofyear روز سال برگرفته از سرآیند تاریخ ایمیل. .It mail_quarter فصل/سه‌ماهه (۱\(en۴) برگرفته از سرآیند تاریخ ایمیل. .It mail_rfc822date تاریخ ایمیل در قالب RFC822. .It lines تعداد کل خطوط موجود در پیام. .It body_lines تعداد خطوط موجود در بدنهٔ پیام. .It header_lines تعداد خطوط موجود در سرآیند پیام. .It message_id شناسهٔ پیام (message id) برگرفته از سرآیند ایمیل (در صورت وجود). .It hostname نام میزبان محلی. .El .Pp علاوه بر این، نماد اختصاری %% با یک % واقعی جایگزین می‌شود، و %0 تا %9 با نتیجهٔ عبارات پرانتزی در آخرین عبارت منظم جایگزین می‌شوند. .Sh "حافظه‌های موقت (CACHES)" .Xr fdm 1 می‌تواند یک فایل کش با مجموعه‌ای از رشته‌های تعریف‌شده توسط کاربر را نگه‌داری کند. برای استفاده از کش‌ها، .Xr fdm 1 باید همراه با فعال‌سازی آن‌ها کامپایل شده باشد. کش‌ها با کلیدواژهٔ .Ic cache تعریف می‌شوند: .Bl -tag -width Ds .It Xo Ic cache Ar path .Op Ic expire Ar age .Xc .El .Pp آرگومان .Ar path محل فایل کش است. اگر کلیدواژهٔ .Ic expire مشخص شود، موارد موجود در کش پس از رسیدن به سن تعیین‌شده حذف می‌شوند. .Ar age می‌تواند به‌سادگی بر حسب ثانیه داده شود، یا با یکی از اصلاح‌کننده‌ها دنبال شود: .Em seconds ، .Em hours ، .Em minutes ، .Em days ، .Em months یا .Em years . .Pp کش‌ها باید پیش از استفاده تعریف شوند. موارد با استفاده از اقدام .Ic add-to-cache به کش‌ها افزوده می‌شوند، با اقدام .Ic remove-from-cache حذف می‌شوند، و با شرط .Ic in-cache مورد جستجو قرار می‌گیرند؛ برای اطلاعات بیشتر دربارهٔ این موارد به بخش‌های زیر مراجعه کنید. .Sh "عملیات‌ها (ACTIONS)" دستور .Ic action برای تعریف اقدامات استفاده می‌شود. این موارد ممکن است با نام در قوانین (به زیر مراجعه کنید) برای انجام عملیاتی روی یک ایمیل مشخص شوند. نحو آن به‌صورت زیر است: .Bl -tag -width Ds .It Xo Ic action Ar name Op Ar users .Ar action .Xc .It Xo Ic action Ar name Op Ar users .Li { .Ar action ... .Li } .Xc .El .Pp آرگومان .Ar name رشته‌ای است که نامی را برای اقدام تعریف می‌کند. آرگومان .Ar users دارای همان شکلی است که برای تعریف حساب ذکر شد. تنظیم کاربر یک اقدام ممکن است در قانون منطبق بازنویسی شود. .Pp مقادیر ممکن برای .Ar action در زیر فهرست شده‌اند. اگر چندین اقدام مشخص شود، آن‌ها یک‌بار و به ترتیبی که مشخص شده‌اند، برای هر کاربر اجرا می‌شوند. .Bl -tag -width Ds .It Ic drop دور انداختن ایمیل. .It Ic keep نگه‌داشتن ایمیل، آن را از حساب حذف نکنید. .It Xo Ic tag Ar string .Op Ic value Ar value .Xc این گزینه ایمیل را با .Ar string و در صورت تمایل با .Ar value برچسب‌گذاری می‌کند، که می‌تواند با استفاده از شرایط .Ic tagged یا .Ic string مورد تطابق قرار گیرد. .It Xo Ic maildir Ar path .Xc ذخیرهٔ ایمیل در maildir مشخص‌شده توسط .Ar path . اگر maildir یا هر بخشی از مسیر آن وجود نداشته باشد، ایجاد می‌شود، مگر اینکه گزینهٔ .Ic no-create تنظیم شده باشد. .Pp ایمیل تحویل‌داده‌شده به یک maildir با برچسب mail_file حاوی مسیر کامل فایل ایمیل علامت‌گذاری می‌شود. .It Xo Ic mbox Ar path Op Ic compress .Xc افزودن ایمیل به انتهای mbox در .Ar path . اگر .Ic compress مشخص شود، .Xr fdm 1 پسوند .Sq .gz را به .Ar path می‌افزاید و تلاش می‌کند ایمیل را با فشرده‌سازی .Xr gzip 1 بنویسد. اگر mbox یا هر بخشی از مسیر آن وجود نداشته باشد، ایجاد می‌شود، مگر اینکه گزینهٔ .Ic no-create تنظیم شده باشد. .Pp ایمیل تحویل‌داده‌شده به یک mbox با برچسب mbox_file حاوی مسیر mbox علامت‌گذاری می‌شود. .It Xo Ic exec Ar command .Xc اجرای .Ar command . .It Xo Ic pipe Ar command .Xc ارسال ایمیل از طریق لوله به .Ar command . دستورات .Ic exec و .Ic pipe به‌عنوان کاربر دستور اجرا می‌شوند. .It Xo Ic write Ar path .Xc نوشتن ایمیل در .Ar path . .It Xo Ic append Ar path .Xc الحاق ایمیل به انتهای .Ar path . .It Xo Ic smtp Ic server Ar host .Op Ic port Ar port .Op Ic from Ar from .Op Ic to Ar to .Xc اتصال به یک سرور SMTP و تلاش برای تحویل ایمیل به آن. اگر .Ar from یا .Ar to مشخص شوند، در دستورات MAIL FROM یا RCPT TO به سرور ارسال می‌گردند. در غیر این صورت، نام‌های کاربر و میزبان جاری استفاده می‌شوند. .It Xo Ic lmtp Ic server Ar path | Ar host .Op Ic port Ar port .Op Ic from Ar from .Op Ic to Ar to .Xc اتصال به یک سرور LMTP و تلاش برای ذخیرهٔ ایمیل در آنجا. اگر قرار است از یک سوکت یونیکس استفاده شود، .Ar path باید مسیر مطلق فایل سوکت باشد. .Pp درگاه پیش‌فرض .Ar port ۲۴ است. اگر .Ar from یا .Ar to مشخص شوند، در دستورات MAIL FROM یا RCPT TO به سرور فرستاده می‌شوند. در غیر این صورت، نام‌های کاربر و میزبان جاری استفاده می‌شوند. .It Xo Ic rewrite Ar command .Xc ارسال کل ایمیل از طریق لوله به .Ar command برای تولید یک ایمیل جدید و استفاده از آن ایمیل برای اقدامات یا قوانین پس از آن. یک نمونه از اقدام .Ic rewrite عبارت است از: .Bd -literal -offset indent action "cat" pipe "cat" action "rewrite" rewrite "sed 's/bob/fred/g'" # این قانون پیام را بازنویسی خواهد کرد match all action "rewrite" continue # این قانون پیام بازنویسی‌شده را ارسال خواهد کرد match all action "cat" .Ed .It Ic add-header Ar name Ic value Ar value افزودن سرآیند .Ar name با محتوای .Ar value . .It Ic remove-header Ar name .It Xo Ic remove-headers .Li { .Ar name ... .Li } .Xc حذف تمام نمونه‌های سرآیندهای منطبق با الگوی .Xr fnmatch 3 در .Ar name . .It Ic stdout نوشتن ایمیل در .Dv stdout . .It Ic add-to-cache Ar path Ic key Ar key این اقدام رشتهٔ .Ar key را به کش مشخص‌شده توسط .Ar path می‌افزاید. اگر .Ar key از قبل در کش وجود داشته باشد، جایگزین می‌شود. .It Ic remove-from-cache Ar path Ic key Ar key رشتهٔ .Ar key را از کش .Ar path حذف می‌کند، در صورتی که کلید منطبقی وجود داشته باشد. .It Ic action Ar name این گزینه اقدام نام‌گذاری‌شدهٔ دیگری را فراخوانی می‌کند. حداکثر پنج اقدام می‌توانند به‌صورت زنجیره‌ای فراخوانی شوند. .El .Sh "قوانین (RULES)" قوانین با استفاده از کلیدواژهٔ .Ic match مشخص می‌شوند. شکل پایه‌ای آن به‌صورت زیر است: .Bl -tag -width Ds .It Xo Ic match .Ar condition .Op Ic and | Ic or Ar condition ... .Op Ar users .Ar actions .Op Ic continue .Xc .El .Pp آرگومان .Ar condition می‌تواند یکی از موارد زیر باشد: .Bl -tag -width Ds .It Ic all با تمام ایمیل‌ها تطابق می‌یابد. .It Ic matched تنها با ایمیل‌هایی تطابق می‌یابد که با قانون قبلی مطابقت داشته و با .Ic continue به بعد منتقل شده‌اند. .It Ic unmatched نقطهٔ مقابل .Ic matched : تنها با ایمیل‌هایی تطابق دارد که با هیچ‌یک از قوانین پیشین همخوانی نداشته‌اند. .It Xo Ic account Ar name | Ic accounts .Li { .Ar name ... .Li } .Xc تنها با ایمیل‌هایی که از حساب یا حساب‌های نام‌برده دریافت شده‌اند مطابقت دارد. نام‌های حساب ممکن است شامل نویسه‌های عام (glob wildcards) پوسته باشند تا همانند گزینه‌های خط فرمان .Fl a و .Fl x با چندین حساب مطابقت یابند. .It Ic tagged Ar string با ایمیل‌های برچسب‌گذاری‌شده با .Ar string تطابق دارد. .It Xo Op Ic case .Ar regexp .Op Ic in Ic headers | Ic in body .Xc عبارت منظمی را مشخص می‌کند که هر ایمیل باید با آن تطابق یابد. تطابق‌های عبارت منظم ممکن است با تعیین .Ic in headers یا .Ic in body به سرآیندها یا بدنهٔ پیام محدود شوند. کلیدواژهٔ .Ic case تطابق عبارت منظم را به بزرگ و کوچک بودن حروف حساس می‌کند؛ حالت پیش‌فرض تطابق غیرحساس به حروف بزرگ و کوچک است. .It Xo Ic exec Ar command .Op Ic user Ar user .Ic returns .Pf ( Ar return code , .Ar stdout regexp ) .Xc .It Xo Ic pipe Ar command .Op Ic user Ar user .Ic returns .Pf ( Ar return code , .Op Ic case .Ar stdout regexp ) .Xc این دو شرط یک .Ar command را اجرا کرده و مقدار بازگشتی و خروجی آن را آزمایش می‌کنند. آرگومان .Ar return code کد بازگشتی عددی مورد انتظار است و .Ar stdout regexp عبارت منظمی است که در برابر خروجی دستور در .Dv stdout آزموده می‌شود. هر یک از این دو آرگومان ممکن است حذف شوند؛ اگر هر دو مشخص شوند، هر دو باید برای برقراری شرط صادق باشند. نسخهٔ .Ic pipe هنگام اجرای دستور، ایمیل را از طریق لوله به .Dv stdin آن ارسال می‌کند. اگر کاربری مشخص شده باشد، .Xr fdm 1 پیش از اجرای دستور به آن کاربر تغییر هویت خواهد داد، در غیر این صورت کاربر فعلی (یا کاربر ریشه اگر با ریشه اجرا شده باشد) استفاده می‌شود. .It Xo Ic size .Li < .Ar number .Xc .It Xo Ic size .Li > .Ar number .Xc مقایسهٔ اندازهٔ ایمیل با .Ar number . .It Xo Ic string Ar string Ic to .Op Ic case .Ar regexp .Xc تطابق .Ar string در برابر .Ar regexp . .It Xo Ic age .Li < .Ar time .Xc .It Xo Ic age .Li > .Ar time .Xc شرط .Ic age سرآیند تاریخ ایمیل را برای تعیین سن آن بررسی می‌کند، و در صورتی که ایمیل قدیمی‌تر (>) یا جدیدتر (<) از زمان مشخص‌شده باشد تطابق می‌یابد. زمان ممکن است به‌صورت یک عدد ساده بر حسب ثانیه داده شود، یا با یکی از واژه‌های .Em seconds ، .Em hours ، .Em minutes ، .Em days ، .Em months یا .Em years دنبال شود تا زمان را در واحدهای مختلف مشخص کند. .It Ic in-cache Ar path Ic key Ar key این شرط در صورتی که رشتهٔ .Ar key در کش موجود در .Ar path باشد، نتیجهٔ درست (true) می‌دهد. .It Xo Ic attachment Ic count .Li < .Ar number .Xc .It Xo Ic attachment Ic count .Li > .Ar number .Xc .It Xo Ic attachment Ic count .Li == .Ar number .Xc .It Xo Ic attachment Ic count .Li != .Ar number .Xc این شرایط در صورتی تطابق دارند که ایمیل دارای تعداد پیوست‌هایی کمتر از، بیشتر از، مساوی یا نامساوی با .Ar number باشد. .It Xo Ic attachment Ic total-size .Li < .Ar size .Xc .It Xo Ic attachment Ic total-size .Li > .Ar size .Xc در صورتی که اندازهٔ کل تمام پیوست‌ها کوچک‌تر یا بزرگ‌تر از .Ar size باشد مطابقت دارد. .It Xo Ic attachment Ic any-size .Li < .Ar size .Xc .It Xo Ic attachment Ic any-size .Li > .Ar size .Xc تک‌تک پیوست‌های یک ایمیل را با .Ar size مقایسه می‌کند و اگر هر یک از آن‌ها کوچک‌تر یا بزرگ‌تر باشند مطابقت دارد. .It Xo Ic attachment Ic any-type .Ar string .Xc .It Xo Ic attachment Ic any-name .Ar string .Xc اگر نوع MIME یا نام فایل هر یک از پیوست‌های یک ایمیل با .Ar string مطابقت داشته باشد، ارزش درستی می‌یابد. نویسه‌های عام .Xr fnmatch 3 ممکن است استفاده شوند. .El .Pp شرایط متعدد ممکن است با استفاده از کلیدواژه‌های .Ic and یا .Ic or به یکدیگر زنجیر شوند. شرایط از چپ به راست آزمایش می‌شوند. هر شرطی ممکن است با کلیدواژهٔ .Ic not پیشوندگذاری شود تا معکوس گردد. .Pp آرگومان اختیاری .Ar users در شکل نخست دارای همان نحو تعریف .Ic action است. فهرست کاربران یک قانون، هر کاربری را که به‌عنوان بخشی از اقدامات داده شده باشد بازنویسی می‌کند. .Pp فهرست .Ar actions اقداماتی را مشخص می‌کند که هنگام تطابق قانون با یک ایمیل باید انجام شوند. این فهرست یا به‌شکلی مشابه است: .Bl -tag -width Ds .It Xo Ic action Ar name | Ic actions .Li { .Ar name ... .Li } .Xc .El .Pp یا ممکن است تعدادی اقدام درون‌خطی (اقدامات لامبدا) را مشخص کند: .Bl -tag -width Ds .It Ic action Ar action .It Xo Ic action .Li { .Ar action ... .Li } .Xc .El .Pp در حالت اخیر، .Ar action از همان شکلی که در بخش ACTIONS شرح داده شد پیروی می‌کند. اقدامات از نخستین تا آخرین به ترتیبی که در تعریف قانون مشخص شده‌اند انجام می‌شوند. .Pp اگر کلیدواژهٔ .Ic continue حاضر باشد، با تطابق این قانون ارزیابی متوقف نخواهد شد. در عوض، .Xr fdm 1 پس از انجام هر اقدامی برای این قانون، به تطابق قوانین بعدی ادامه خواهد داد. .Sh "قوانین تودرتو (NESTED RULES)" قوانین ممکن است با مشخص کردن قوانین بیشتر در میان آکولادها تودرتو شوند: .Bl -tag -width Ds .It Xo Ic match .Ar condition .Op Ic and | Ic or Ar condition ... .Li { .Xc .It Ic match Ar ... .It Li } .El .Pp قوانین درونی تا زمانی که قانون بیرونی تطابق نیابد ارزیابی نخواهند شد. قوانین می‌توانند به‌صورت چندگانه تودرتو شوند. توجه داشته باشید که قانون بیرونی برای اهداف شرایط .Ic matched و .Ic unmatched به‌عنوان یک تطابق به‌شمار نمی‌آید. .Sh "فایل‌ها (FILES)" .Bl -tag -width "/var/db/fdm.lockXXX" -compact .It Pa ~/.fdm.conf فایل پیکربندی پیش‌فرض .Nm .It Pa /etc/fdm.conf فایل پیکربندی پیش‌فرض سرتاسری سیستم .It Pa ~/.fdm.lock فایل قفل پیش‌فرض .It Pa /var/db/fdm.lock فایل قفل برای کاربر ریشه (root) .El .Sh "همچنین ببینید (SEE ALSO)" .Xr fdm 1 , .Xr re_format 7 .Sh "نویسندگان (AUTHORS)" .An Nicholas Marriott Aq Mt nicholas.marriott@gmail.com