| VIRTUAL(8) | System Manager's Manual | VIRTUAL(8) |
نام (NAME)
virtual - عامل تحویل ایمیل دامنه مجازی Postfix
خلاصه دستور (SYNOPSIS)
virtual [گزینههای عمومی دیمن Postfix]
توضیحات (DESCRIPTION)
عامل تحویل virtual(8) برای سرویسهای میزبانی ایمیل مجازی طراحی شده است. این عامل که در ابتدا بر پایه عامل تحویل local(8) پستفیکس (Postfix) توسعه یافته بود، گیرندگان را با استفاده از جستجوی نگاشت برای نشانی کامل گیرنده پیدا میکند؛ به جای آنکه مانند گذشته از جستجوی هاردکدشده در فایل رمز عبور یونیکس تنها برای بخش محلی نشانی استفاده کند.
این عامل تحویل فقط ایمیل را تحویل میدهد. سایر قابلیتها مانند فوروارد ایمیل، اعلانهای خارج از دسترس بودن (out-of-office) و غیره باید از طریق نگاشتهای virtual_alias یا سازوکارهای مشابه جستجو پیکربندی شوند.
مکان صندوق پستی (MAILBOX LOCATION)
مکان صندوق پستی توسط پارامترهای پیکربندی virtual_mailbox_base و virtual_mailbox_maps کنترل میشود (به بخش زیر مراجعه کنید). جدول virtual_mailbox_maps بر اساس نشانی گیرنده به ترتیبی که در بخش «ترتیب جستجوی جدول (TABLE SEARCH ORDER)» در ادامه آمده است نمایه میشود.
مسیر صندوق پستی به صورت زیر ساخته میشود:
$virtual_mailbox_base/$virtual_mailbox_maps(recipient)
که در آن recipient نشانی کامل گیرنده است.
قالب صندوق پستی یونیکس (UNIX MAILBOX FORMAT)
هنگامی که مکان صندوق پستی به / ختم نشود، پیام در قالب صندوق پستی یونیکس (UNIX mailbox) تحویل داده میشود. این قالب چندین پیام را در یک فایل متنی ذخیره میکند.
عامل تحویل virtual(8) یک هدر پاکتنامه «From sender time_stamp» را به ابتدای هر پیام اضافه میکند، یک هدر پیام Delivered-To: حاوی نشانی گیرنده پاکتنامه را درج مینماید، یک هدر X-Original-To: حاوی نشانی گیرنده به همان صورتی که به Postfix داده شده بود اضافه میکند، یک هدر پیام Return-Path: با نشانی فرستنده پاکتنامه درج میکند، نویسه > را به ابتدای خطوطی که با «From » آغاز میشوند میافزاید، و یک خط خالی به انتهای آن اضافه میکند.
صندوق پستی در حین انجام تحویل، برای دسترسی انحصاری قفل میشود. در صورت بروز مشکل، تلاش میشود تا صندوق پستی به اندازه اولیه خود کوتاه (truncate) شود.
قالب MAILDIR کیومیل (QMAIL MAILDIR FORMAT)
هنگامی که مکان صندوق پستی به / ختم شود، پیام در قالب maildir کیومیل (qmail) تحویل داده میشود. این قالب هر پیام را در یک فایل جداگانه ذخیره میکند.
عامل تحویل virtual(8) یک هدر پیام Delivered-To: حاوی نشانی نهایی گیرنده پاکتنامه، یک هدر X-Original-To: حاوی نشانی گیرنده به همان صورتی که به Postfix داده شده بود، و یک هدر پیام Return-Path: با نشانی فرستنده پاکتنامه به ابتدای پیام اضافه میکند.
طبق تعریف، قالب maildir در طول تحویل یا بازیابی ایمیل نیازی به قفلگذاری فایل در سطح برنامه ندارد.
مالکیت صندوق پستی (MAILBOX OWNERSHIP)
مالکیت صندوق پستی توسط جدولهای جستجوی virtual_uid_maps و virtual_gid_maps کنترل میشود که با نشانی کامل گیرنده نمایه میشوند. هر جدول به ترتیب رشتهای حاوی شناسه عددی کاربر (UID) و گروه (GID) را ارائه میدهد.
پارامتر virtual_minimum_uid یک حد پایین برای مقادیر عددی شناسه کاربر (UID) که ممکن است در هر یک از virtual_uid_maps مشخص شوند اعمال میکند.
تبدیل بزرگی و کوچکی حروف (CASE FOLDING)
تمام تصمیمگیریهای تحویل با استفاده از نشانی کامل گیرنده که به حروف کوچک تبدیل شده است، انجام میشود. همچنین برای چند مورد استثنا در رابطه با پسوندهای اختیاری نشانی، به بخش بعدی مراجعه کنید.
ترتیب جستجوی جدول (TABLE SEARCH ORDER)
به طور معمول، یک جدول جستجو به عنوان یک فایل متنی مشخص میشود که به عنوان ورودی دستور postmap(1) عمل میکند. نتیجه که یک فایل نمایهسازیشده در قالب dbm یا db است، برای جستجوی سریع توسط سیستم ایمیل استفاده میشود.
ترتیب جستجو به شرح زیر است. جستجو با اولین انطباق موفقیتآمیز متوقف میشود:
- هنگامی که
گیرنده
دارای
پسوند
اختیاری
نشانی
باشد،
ابتدا
نشانی user+extension@domain.tld
جستجو
میشود.
در نسخههای Postfix قبل از ۲.۱، پسوند اختیاری نشانی همیشه نادیده گرفته میشود.
- سپس نشانی user@domain.tld (بدون پسوند نشانی) جستجو میشود.
- در نهایت، نشانی @domain گیرنده جستجو میشود.
هنگامی که جدول از طریق روشهای دیگری مانند NIS، LDAP یا SQL ارائه میشود، همان جستجوهایی که برای فایلهای نمایهسازیشده معمولی انجام میشد، صورت میپذیرد.
علاوه بر این، یک جدول میتواند به عنوان یک نگاشت عبارات باقاعده (regular expression) ارائه شود که در آن الگوها به صورت عبارات باقاعده مشخص میشوند. در این حالت، فقط نشانی کامل گیرنده به نگاشت عبارات باقاعده داده میشود.
امنیت (SECURITY)
عامل تحویل virtual(8) از نظر امنیتی حساس تلقی نمیشود، مشروط بر اینکه جدولهای جستجوی حاوی اطلاعات شناسه کاربر/گروه گیرنده به اندازه کافی محافظت شده باشند. این برنامه برای اجرا در محیط chroot طراحی نشده است.
عامل تحویل virtual(8) جایگزینی متغیرهای عبارات باقاعده مانند $1 و غیره را در جدولهای جستجوی عبارات باقاعده مجاز نمیداند، زیرا این کار یک رخنه امنیتی ایجاد میکند.
عامل تحویل virtual(8) درخواستهای استفاده از کارگزار proxymap(8) را بدون هیچ پیامی نادیده میگیرد و در عوض جدول را مستقیماً باز میکند. پیش از نسخه ۲.۲ Postfix، عامل تحویل مجازی با یک خطای مهلک (fatal error) متوقف میشد.
استانداردها (STANDARDS)
RFC 822 (ARPA Internet Text Messages)
عیبیابی (DIAGNOSTICS)
هنگامی که گیرنده صندوق پستی نداشته باشد یا سهمیه دیسک (disk quota) گیرنده پر شده باشد، ایمیل برگشت میخورد (bounce میشود). در تمامی موارد دیگر بروز مشکل، ایمیل گیرنده موجود به تعویق میافتد (deferred میشود) و یک هشدار در لاگ ثبت میگردد.
مشکلات و تراکنشها در syslogd(8) یا postlogd(8) ثبت میشوند. فایلهای پیام آسیبدیده علامتگذاری میشوند تا مدیر صف (queue manager) بتواند بعداً آنها را به صف corrupt منتقل کند.
بسته به مقدار تنظیمشده برای پارامتر notify_classes، مدیر پست (postmaster) از برگشتها و سایر مشکلات مطلع میشود.
اشکالات (BUGS)
این عامل تحویل از پسوندهای نشانی در نشانیهای ایمیل و در کلیدهای جدول جستجو پشتیبانی میکند، اما اطلاعات پسوند نشانی را به نتیجه جستجوی جدول انتقال نمیدهد.
پستفیکس باید دارای جدولهای جستجویی باشد که بتوانند چندین ویژگی نتیجه را برگردانند. برای جلوگیری از زحمت نگهداری سه جدول، از یک پایگاهداده LDAP یا MYSQL استفاده کنید.
پارامترهای پیکربندی (CONFIGURATION PARAMETERS)
تغییرات ایجادشده در main.cf به طور خودکار اعمال میشوند، زیرا فرایندهای virtual(8) تنها برای مدت محدودی اجرا میشوند. برای اعمال سریعتر تغییرات از دستور «postfix reload» استفاده کنید.
متن زیر تنها خلاصهای از پارامترها را ارائه میدهد. برای جزئیات بیشتر به همراه مثالها به postconf(5) مراجعه کنید.
کنترلهای تحویل صندوق پستی (MAILBOX DELIVERY CONTROLS)
- virtual_mailbox_base (خالی)
- پیشوندی که عامل تحویل virtual(8) به ابتدای تمام نتایج مسیر حاصل از جستجوهای جدول $virtual_mailbox_maps اضافه میکند.
- virtual_mailbox_maps (خالی)
- جدولهای جستجوی اختیاری شامل تمام نشانیهای معتبر در دامنههایی که با $virtual_mailbox_domains مطابقت دارند.
- virtual_minimum_uid (100)
- حداقل مقدار شناسه کاربر (UID) که عامل تحویل virtual(8) به عنوان نتیجه حاصل از جستجوی جدول $virtual_uid_maps میپذیرد.
- virtual_uid_maps (خالی)
- جدولهای جستجو حاوی شناسه کاربر (UID) به ازای هر گیرنده که عامل تحویل virtual(8) هنگام نوشتن در صندوق پستی گیرنده از آن استفاده میکند.
- virtual_gid_maps (خالی)
- جدولهای جستجو حاوی شناسه گروه (GID) به ازای هر گیرنده برای تحویل صندوق پستی virtual(8).
موجود در Postfix نسخه ۲.۰ و بالاتر:
- virtual_mailbox_domains ($virtual_mailbox_maps)
- پستفیکس مقصد نهایی برای فهرست مشخصشده دامنهها است؛ ایمیل از طریق سیستم انتقال تحویل ایمیل $virtual_transport تحویل داده میشود.
- virtual_transport (virtual)
- سیستم انتقال پیشفرض تحویل ایمیل و مقصد گام بعدی (next-hop) برای تحویل نهایی به دامنههای فهرستشده در $virtual_mailbox_domains.
موجود در Postfix نسخه ۲.۵.۳ و بالاتر:
- strict_mailbox_ownership (yes)
- به تعویق انداختن تحویل ایمیل هنگامی که مالک فایل صندوق پستی، گیرنده آن نباشد.
کنترلهای قفلگذاری (LOCKING CONTROLS)
- virtual_mailbox_lock (خروجی 'postconf -d' را ببینید)
- نحوه قفلگذاری یک صندوق پستی سبک یونیکس virtual(8) پیش از تلاش برای تحویل.
- deliver_lock_attempts (20)
- حداکثر تعداد دفعات تلاش برای دریافت قفل انحصاری روی یک فایل صندوق پستی یا فایل لاگ bounce(8).
- deliver_lock_delay (1s)
- مدت زمان بین تلاشها برای دریافت قفل انحصاری روی یک فایل صندوق پستی یا فایل لاگ bounce(8).
- stale_lock_time (500s)
- مدت زمانی که پس از آن، فایل قفل انحصاری کهنه (stale) صندوق پستی حذف میشود.
کنترلهای منابع و نرخ (RESOURCE AND RATE CONTROLS)
- virtual_mailbox_limit (51200000)
- حداکثر اندازه بر حسب بایت برای یک صندوق پستی مجزای virtual(8) یا فایل maildir، یا صفر (بدون محدودیت).
پیادهسازیشده در دیمن qmgr(8):
- virtual_destination_concurrency_limit ($default_destination_concurrency_limit)
- حداکثر تعداد تحویلهای موازی به یک مقصد یکسان از طریق سیستم انتقال تحویل پیام مجازی.
- virtual_destination_recipient_limit ($default_destination_recipient_limit)
- حداکثر تعداد گیرندگان در هر پیام برای سیستم انتقال تحویل پیام مجازی.
کنترلهای گوناگون (MISCELLANEOUS CONTROLS)
- config_directory (خروجی 'postconf -d' را ببینید)
- مکان پیشفرض فایلهای پیکربندی main.cf و master.cf پستفیکس.
- daemon_timeout (18000s)
- حداکثر زمانی که یک فرایند دیمن Postfix مجاز است برای رسیدگی به یک درخواست صرف کند، پیش از آنکه توسط تایمر دیدهبان (watchdog) داخلی متوقف شود.
- delay_logging_resolution_limit (2)
- حداکثر تعداد ارقام بعد از ممیز اعشار هنگام ثبت مقادیر تأخیر در لاگ.
- ipc_timeout (3600s)
- محدودیت زمانی برای ارسال یا دریافت اطلاعات از طریق یک کانال ارتباطی داخلی.
- max_idle (100s)
- حداکثر مدت زمانی که یک فرایند بیکار دیمن Postfix پیش از پایان داوطلبانه کار، در انتظار یک اتصال ورودی میماند.
- max_use (100)
- حداکثر تعداد اتصالات ورودی که یک فرایند دیمن Postfix پیش از پایان داوطلبانه کار سرویسدهی میکند.
- process_id (فقطخواندنی)
- شناسه فرایند (PID) یک دستور یا فرایند دیمن Postfix.
- process_name (فقطخواندنی)
- نام فرایند یک دستور یا فرایند دیمن Postfix.
- queue_directory (خروجی 'postconf -d' را ببینید)
- مکان دایرکتوری سطح بالای صف Postfix.
- syslog_facility (mail)
- امکانات ثبت وقایع سیستم (syslog facility) برای لاگگیری Postfix.
- syslog_name (خروجی 'postconf -d' را ببینید)
- پیشوندی که به ابتدای نام فرایند در رکوردهای syslog اضافه میشود، به عنوان مثال "smtpd" به صورت "prefix/smtpd" ثبت میشود.
موجود در Postfix نسخه ۳.۰ و بالاتر:
- virtual_delivery_status_filter ($default_delivery_status_filter)
- فیلتر اختیاری برای عامل تحویل virtual(8) جهت تغییر کد وضعیت تحویل یا متن توضیحی تحویلهای موفق یا ناموفق.
موجود در Postfix نسخه ۳.۳ و بالاتر:
- enable_original_recipient (yes)
- فعالسازی پشتیبانی از نشانی اصلی گیرنده پس از بازنویسی نشانی به یک نشانی دیگر (به عنوان مثال با نام مستعار یا نگاشت متعارف/canonical).
- service_name (فقطخواندنی)
- نام سرویس یک فرایند دیمن Postfix در master.cf.
موجود در Postfix نسخه ۳.۵ و بالاتر:
- info_log_address_format (external)
- قالب نشانی ایمیل که در ثبت وقایع غیردیباگ (اطلاعات، هشدار و غیره) استفاده خواهد شد.
همچنین ببینید (SEE ALSO)
qmgr(8), مدیر صف bounce(8), گزارشهای وضعیت تحویل postconf(5), پارامترهای پیکربندی postlogd(8), ثبت وقایع Postfix syslogd(8), ثبت وقایع سیستم
فایلهای راهنما (README_FILES)
برای یافتن این اطلاعات از «postconf readme_directory» یا «postconf html_directory» استفاده کنید. VIRTUAL_README, راهنمای میزبانی دامنه
مجوز (LICENSE)
مجوز نرمافزار امنیتی ایمیل (Secure Mailer license) باید همراه با این نرمافزار توزیع شود.
تاریخچه (HISTORY)
این عامل تحویل در ابتدا بر پایه عامل تحویل محلی Postfix توسعه یافته بود. تغییرات عمدتاً شامل حذف کدهایی بود که یا در این زمینه کاربرد نداشتند یا ایمن نبودند: نامهای مستعار، فایلهای ~user/.forward، تحویل به "|command" یا به /file/name.
هدر پیام Delivered-To: در سیستم qmail اثر Daniel Bernstein معرفی شد.
ساختار maildir در سیستم qmail اثر Daniel Bernstein معرفی شد.
نویسندگان (AUTHORS)
Wietse Venema IBM T.J. Watson Research P.O. Box 704 Yorktown Heights, NY 10598, USA Wietse Venema Google, Inc. 111 8th Avenue New York, NY 10011, USA Andrew McNamara andrewm@connect.com.au connect.com.au Pty. Ltd. Level 3, 213 Miller St North Sydney 2060, NSW, Australia