| ACCESS(5) | File Formats Manual | ACCESS(5) |
نام (NAME)
access - جدول کنترل دسترسی کارساز SMTP در Postfix
خلاصه دستور (SYNOPSIS)
postmap /etc/postfix/access postmap -q "string" /etc/postfix/access postmap -q - /etc/postfix/access <inputfile
توضیحات (DESCRIPTION)
این سند کنترل دسترسی بر روی اطلاعات کلاینت راه دور SMTP را شرح میدهد: نامهای میزبان، آدرسهای شبکه، و آدرسهای فرستنده یا گیرنده در پاکت نامه (envelope)؛ این قابلیت توسط کارساز SMTP نرمافزار Postfix پیادهسازی شده است. برای کنترل دسترسی بر روی محتوای پیامهای ایمیل، به header_checks(5) یا body_checks(5) مراجعه کنید.
به طور معمول، جدول access(5) به صورت یک فایل متنی مشخص میشود که به عنوان ورودی دستور postmap(1) جهت ایجاد یک فایل ایندکسشده برای جستجوی سریع عمل میکند.
دستور «postmap /etc/postfix/access» را برای بازسازی فایل ایندکسشده با نوع پیشفرض پس از تغییر فایل متنی، یا «postmap type:/etc/postfix/access» را برای تعیین یک نوع صریح اجرا کنید.
نوع پیشفرض فایل ایندکسشده با پارامتر default_database_type پیکربندی میشود. بسته به پلتفرم، این نوع میتواند یکی از موارد lmdb:، cdb:، hash: یا dbm: (بدون دو نقطه انتهایی) باشد.
هنگامی که جدول از طریق روشهای دیگری مانند NIS، LDAP یا SQL ارائه میشود، همان جستجوهایی که برای فایلهای ایندکسشده معمولی انجام میشود، صورت میپذیرد. مدیریت چنین پایگاههای دادهای خارج از حیطه Postfix است.
همچنین، این جدول میتواند به عنوان یک نگاشت عبارات باقاعده (regular-expression map) ارائه شود که در آن الگوها به صورت عبارات باقاعده هستند، یا جستجوها میتوانند به سمت یک کارساز مبتنی بر TCP هدایت شوند. در این موارد، جستجوها به روشی کمی متفاوت انجام میشوند که در ادامه در بخشهای «جدولهای عبارات باقاعده» یا «جدولهای مبتنی بر TCP» شرح داده شده است.
تبدیل بزرگی/کوچکی حروف (CASE FOLDING)
رشته جستجو قبل از جستجو در پایگاه داده به حروف کوچک تبدیل میشود (case folded). از نسخه Postfix 2.3 به بعد، رشته جستجو در انواع پایگاه داده مانند regexp: یا pcre: که فیلدهای جستجوی آنها میتوانند با هر دو حالت حروف بزرگ و کوچک تطابق یابند، به حروف کوچک تبدیل نمیشود.
قالب جدول (TABLE FORMAT)
قالب ورودی برای دستور postmap(1) به شرح زیر است:
- pattern action
- هنگامی که pattern با یک آدرس ایمیل، دامنه یا آدرس میزبان تطابق یابد، action متناظر اجرا میشود.
- خطوط خالی و توضیحات
- خطوط خالی و خطوطی که فقط حاوی فاصلهاند نادیده گرفته میشوند، همچنین خطوطی که اولین نویسه غیرفاصلهای آنها «#» است.
- متن چندخطی
- یک خط منطقی با متن غیرفاصلهای شروع میشود. خطی که با فاصله سفید شروع شود، ادامه خط منطقی قبلی در نظر گرفته میشود.
الگوهای آدرس ایمیل در جدولهای ایندکسشده (EMAIL ADDRESS PATTERNS IN INDEXED TABLES)
در جستجوها از فایلهای ایندکسشده مانند DB یا DBM، یا از جدولهای شبکهای مانند NIS، LDAP یا SQL، الگوها به ترتیبی که در زیر فهرست شدهاند بررسی میشوند:
- user@domain
- با آدرس ایمیل مشخصشده تطابق مییابد.
- domain.tld
- با domain.tld به
عنوان بخش
دامنه یک
آدرس ایمیل
تطابق
مییابد.
الگوی domain.tld همچنین با زیردامنهها تطابق مییابد، اما فقط زمانی که رشته smtpd_access_maps در تنظیمات پیکربندی parent_domain_matches_subdomains در Postfix فهرست شده باشد.
- .domain.tld
- با زیردامنههای domain.tld تطابق مییابد، اما فقط زمانی که رشته smtpd_access_maps در تنظیمات پیکربندی parent_domain_matches_subdomains در Postfix فهرست نشده باشد.
- user@
- با تمام آدرسهای ایمیل با بخش کاربری مشخصشده تطابق مییابد.
نکته: جستجوی آدرس فرستنده تهی (null sender) در برخی انواع جدولهای جستجو امکانپذیر نیست. به طور پیشفرض، Postfix از <> به عنوان کلید جستجو برای چنین آدرسهایی استفاده میکند. این مقدار با پارامتر smtpd_null_access_lookup_key در فایل main.cf پُستفیکس تعیین میشود.
پسوند آدرس ایمیل (EMAIL ADDRESS EXTENSION)
هنگامی که بخش محلی (localpart) یک آدرس ایمیل حاوی جداکننده اختیاری گیرنده باشد (به عنوان مثال، user+foo@domain)، ترتیب جستجو به این صورت خواهد بود: user+foo@domain، user@domain، domain، user+foo@، و user@.
الگوهای نام/آدرس میزبان در جدولهای ایندکسشده (HOST NAME/ADDRESS PATTERNS IN INDEXED TABLES)
در جستجوها از فایلهای ایندکسشده مانند DB یا DBM، یا از جدولهای تحت شبکه مانند NIS، LDAP یا SQL، الگوهای جستجوی زیر به ترتیبی که فهرست شدهاند بررسی میشوند:
- domain.tld
- با domain.tld
تطابق
مییابد.
الگوی domain.tld همچنین با زیردامنهها تطابق مییابد، اما فقط زمانی که رشته smtpd_access_maps در تنظیمات پیکربندی parent_domain_matches_subdomains در Postfix فهرست شده باشد.
- .domain.tld
- با زیردامنههای domain.tld تطابق مییابد، اما فقط زمانی که رشته smtpd_access_maps در تنظیمات پیکربندی parent_domain_matches_subdomains در Postfix فهرست نشده باشد.
- net.work.addr.ess
- net.work.addr
- net.work
- net
- با یک آدرس
میزبان یا
محدوده
آدرس شبکه IPv4
راه دور
تطابق
مییابد. یک
تا چهار
هشتبیت (octet)
دهدهی را که
با «.» جدا
شدهاند
مشخص کنید.
از «[]»، «/»،
صفرهای
ابتدایی یا
قالبهای
هگزادسیمال
استفاده
نکنید.
محدودههای شبکه با کوتاه کردن مکرر آخرین «.octet» از رشته آدرس میزبان IPv4 راه دور بررسی میشوند، تا زمانی که تطابقی در جدول دسترسی یافت شود، یا تا زمانی که کوتاه کردن بیشتر ممکن نباشد.
نکته: از نوع جدول جستجوی cidr برای تعیین الگوهای network/netmask استفاده کنید. برای جزئیات به cidr_table(5) مراجعه نمایید.
- net:work:addr:ess
- net:work:addr
- net:work
- net
- با یک آدرس
میزبان یا
محدوده
آدرس شبکه IPv6
راه دور
تطابق
مییابد. سه
تا هشت جفت
هشتبیت
هگزادسیمال
جدا شده با
«:» را با
استفاده از
شکل فشرده
«::» برای
دنبالهای
از جفتهای
هشتبیت
صفر مشخص
کنید. از
«[]»، «/»،
صفرهای
ابتدایی یا
فرمهای
فشردهنشده
استفاده
نکنید.
یک محدوده شبکه با کوتاه کردن مکرر آخرین «:octetpair» از رشته آدرس میزبان IPv6 فشردهشده راه دور بررسی میشود، تا زمانی که تطابقی در جدول دسترسی یافت شود یا کوتاه کردن بیشتر امکانپذیر نباشد.
نکته: از نوع جدول جستجوی cidr برای تعیین الگوهای network/netmask استفاده کنید. برای جزئیات به cidr_table(5) مراجعه کنید.
پشتیبانی از IPv6 در Postfix نسخه 2.2 و بالاتر در دسترس است.
کنشهای پذیرش (ACCEPT ACTIONS)
- OK
- آدرس و غیره که با الگو مطابقت دارد را میپذیرد.
- all-numerical
- یک نتیجه کاملاً عددی به عنوان OK در نظر گرفته میشود. این قالب توسط طرحهای مجوز رله مبتنی بر آدرس مانند pop-before-smtp تولید میشود.
برای سایر کنشهای پذیرش، به بخش «کنشهای دیگر» در ادامه مراجعه کنید.
کنشهای رد کردن (REJECT ACTIONS)
نسخه 2.3 و بالاتر Postfix از کدهای وضعیت پیشرفته تعریفشده در RFC 3463 پشتیبانی میکنند. هنگامی که هیچ کدی در ابتدای text زیر مشخص نشده باشد، Postfix یک کد وضعیت پیشرفته پیشفرض «5.7.1» را در مورد کنشهای رد کردن، و «4.7.1» را در مورد کنشهای تعویق (defer) درج میکند. بخش «کدهای وضعیت پیشرفته» در ادامه را ببینید.
- 4NN text
- 5NN text
- آدرس و غیره
که با الگو
مطابقت
دارد را رد
میکند و با
کد سه رقمی
عددی و متن
پاسخ
میدهد. 4NN
به معنای
«بعداً
دوباره
امتحان
کنید» است،
در حالی که
5NN به
معنای
«دوباره
امتحان
نکنید»
میباشد.
پاسخهای زیر برای کارساز SMTP پُستفیکس معنای خاصی دارند:
- 421 text (Postfix 2.3 و بالاتر)
- 521 text (Postfix 2.6 و بالاتر)
- پس از پاسخ با کد عددی سه رقمی و متن، فوراً اتصال با کلاینت SMTP را قطع میکند. این کار منابع کارساز SMTP را آزاد میکند تا بتوانند در دسترس کلاینت SMTP دیگری قرار گیرند.
- نکته: پاسخ «521» باید فقط برای باتنتها و سایر بدافزارها که سازگاری در آنها اهمیتی ندارد استفاده شود. رفتار «ارسال 521 و قطع اتصال» در استاندارد SMTP تعریف نشده است.
- REJECT optional text...
- آدرس و غیره که با الگو مطابقت دارد را رد میکند. در صورت مشخص شدن متن اختیاری، با «$access_map_reject_code optional text...» پاسخ میدهد، در غیر این صورت با یک پیام خطای عمومی پاسخ میدهد.
- DEFER optional text...
- آدرس و غیره
که با الگو
مطابقت
دارد را رد
(به تعویق)
میاندازد.
در صورت
مشخص شدن
متن
اختیاری،
با «$access_map_defer_code optional
text...» پاسخ
میدهد، در
غیر این
صورت با یک
پیام خطای
عمومی پاسخ
میدهد.
این ویژگی در Postfix نسخه 2.6 و بالاتر در دسترس است.
- DEFER_IF_REJECT optional text...
- در صورتی که
محدودیتهای
بعدی منجر
به کنش REJECT
شوند،
درخواست را
به تعویق
میاندازد.
در صورت
مشخص شدن
متن
اختیاری با
«$access_map_defer_code 4.7.1 optional
text...» پاسخ
میدهد، در
غیر این
صورت با یک
پیام پاسخ
خطای عمومی
پاسخ
میدهد.
قبل از Postfix نسخه 2.6، کد پاسخ SMTP برابر 450 است.
این ویژگی در Postfix نسخه 2.1 و بالاتر در دسترس است.
- DEFER_IF_PERMIT optional text...
- در صورتی که
محدودیتهای
بعدی منجر
به کنش صریح
یا ضمنی PERMIT
شوند،
درخواست را
به تعویق
میاندازد.
در صورت
مشخص شدن
متن
اختیاری با
«$access_map_defer_code 4.7.1 optional
text...» پاسخ
میدهد، در
غیر این
صورت با یک
پیام خطای
عمومی پاسخ
میدهد.
قبل از Postfix نسخه 2.6، کد پاسخ SMTP برابر 450 است.
این ویژگی در Postfix نسخه 2.1 و بالاتر در دسترس است.
برای سایر کنشهای رد، به بخش «کنشهای دیگر» در زیر مراجعه کنید.
کنشهای دیگر (OTHER ACTIONS)
- restriction...
- محدودیت(های) نامبرده UCE را اعمال میکند (permit، reject، reject_unauth_destination و غیره).
- BCC user@domain
- یک رونوشت
از پیام را
به گیرنده
مشخصشده
ارسال
میکند.
اگر چندین کنش BCC در یک تراکنش SMTP MAIL مشخص شده باشد، در Postfix نسخه 3.0 فقط آخرین کنش استفاده خواهد شد.
این ویژگی در Postfix نسخه 3.0 و بالاتر در دسترس است.
- DISCARD optional text...
- ادعای
تحویل
موفقیتآمیز
کرده و پیام
را بی سر و
صدا دور
میاندازد.
در صورت
مشخص شدن
متن
اختیاری،
آن را ثبت
میکند (log)،
در غیر این
صورت یک
پیام عمومی
را ثبت
میکند.
نکته: این کنش در حال حاضر بر تمام گیرندگان پیام تأثیر میگذارد. برای دور انداختن فقط یک گیرنده بدون دور انداختن کل پیام، از جدول transport(5) برای هدایت ایمیل به سرویس discard(8) استفاده کنید.
این ویژگی در Postfix نسخه 2.0 و بالاتر در دسترس است.
- DUNNO
- وانمود
میکند که
کلید جستجو
پیدا نشده
است. این
کار از تلاش
Postfix برای
بررسی
زیررشتههای
کلید جستجو
(مانند نام
زیردامنه
یا زیرشبکه
آدرس شبکه)
جلوگیری
میکند.
این ویژگی در Postfix نسخه 2.0 و بالاتر در دسترس است.
- FILTER transport:destination
- پس از قرار
گرفتن پیام
در صف، کل
پیام را از
طریق
پالایه
(فیلتر)
محتوای
خارجی
مشخصشده
ارسال
میکند. نام
transport فیلد اول
تعریف یک
عامل تحویل
ایمیل (mail delivery agent)
در master.cf را
مشخص
میکند؛
نحو destination گام
بعدی (next-hop) در
صفحه
راهنمای
عامل تحویل
مربوطه شرح
داده شده
است.
اطلاعات
بیشتر
درباره
فیلترهای
محتوای
خارجی در
فایل FILTER_README
پُستفیکس
موجود است.
یادداشت ۱: از جایگزینیهای عبارات باقاعده $number برای transport یا destination استفاده نکنید مگر اینکه بدانید اطلاعات منشأ قابل اعتمادی دارند.
یادداشت ۲: این کنش تنظیم content_filter در main.cf را لغو میکند و بر تمام گیرندگان پیام تأثیر میگذارد. در صورتی که چندین کنش FILTER فعال شوند، فقط آخرین مورد اجرا میشود.
یادداشت ۳: هدف دستور FILTER بازنویسی و لغو مسیریابی پیام است. برای لغو transport گیرنده اما نه destination گام بعدی، یک destination فیلتر خالی را مشخص کنید (Postfix 2.7 و بالاتر)، یا یک transport:destination را مشخص کنید که از طریق یک نمونه متفاوت Postfix تحویل داده شود (Postfix 2.6 و قدیمیتر). گزینههای دیگر استفاده از ویژگیهای وابسته به گیرنده transport_maps یا وابسته به فرستنده sender_dependent_default_transport_maps است.
این ویژگی در Postfix نسخه 2.0 و بالاتر در دسترس است.
- HOLD optional text...
- پیام را در
صف hold قرار
میدهد،
جایی که در
آنجا
میماند تا
زمانی که
شخصی آن را
حذف کند یا
برای تحویل
آزاد نماید.
در صورت
مشخص شدن
متن
اختیاری،
آن را ثبت
میکند، در
غیر این
صورت یک
پیام عمومی
را ثبت
میکند.
ایمیلی که در حالت تعلیق (hold) قرار دارد را میتوان با دستور postcat(1) بررسی کرد و با دستور postsuper(1) نابود یا آزاد کرد.
نکته: از «postsuper -r» برای آزادسازی ایمیلی که برای بخش قابل توجهی از $maximal_queue_lifetime یا $bounce_queue_lifetime یا طولانیتر در حالت تعلیق مانده است استفاده کنید. از «postsuper -H» فقط برای ایمیلهایی استفاده کنید که ظرف چند بار تلاش برای تحویل منقضی نمیشوند.
نکته: این کنش در حال حاضر بر تمام گیرندگان پیام تأثیر میگذارد.
این ویژگی در Postfix نسخه 2.0 و بالاتر در دسترس است.
- PREPEND headername: headervalue
- سرآیند
پیام
مشخصشده
را به
ابتدای
پیام اضافه
میکند.
هنگامی که
بیش از یک
کنش PREPEND اجرا
میشود،
اولین
سرآیند
اضافه شده
قبل از
دومین
سرآیند
اضافه شده
ظاهر
میشود و به
همین ترتیب.
نکته: این کنش باید قبل از دریافت محتوای پیام اجرا شود؛ این کنش نمیتواند در زمینه smtpd_end_of_data_restrictions اجرا شود.
این ویژگی در Postfix نسخه 2.1 و بالاتر در دسترس است.
- REDIRECT user@domain
- پس از
صفبندی
پیام، پیام
را به جای
گیرنده(های)
مورد نظر به
آدرس
مشخصشده
ارسال
میکند.
هنگامی که
چندین کنش
REDIRECT فعال
شوند، فقط
آخرین مورد
اعمال
میشود.
یادداشت ۱: این کنش بر کنش FILTER اولویت دارد و در حال حاضر تمام گیرندگان پیام را بازنویسی میکند.
یادداشت ۲: یک آدرس REDIRECT مشمول قاعدهمندسازی (افزودن دامنه مفقود) است اما مشمول نگاشتهای نام مستعار canonical، masquerade، bcc یا virtual نمیشود.
این ویژگی در Postfix نسخه 2.1 و بالاتر در دسترس است.
- INFO optional text...
- یک رکورد
اطلاعاتی
را به همراه
متن
اختیاری،
همراه با
اطلاعات
کلاینت و در
صورت وجود،
با اطلاعات
helo،
فرستنده،
گیرنده و
پروتکل ثبت
میکند.
این ویژگی در Postfix نسخه 3.0 و بالاتر در دسترس است.
- WARN optional text...
- یک هشدار را
به همراه
متن
اختیاری،
همراه با
اطلاعات
کلاینت و در
صورت وجود،
با اطلاعات
helo،
فرستنده،
گیرنده و
پروتکل ثبت
میکند.
این ویژگی در Postfix نسخه 2.1 و بالاتر در دسترس است.
کدهای وضعیت پیشرفته (ENHANCED STATUS CODES)
نسخه 2.3 و بالاتر Postfix از کدهای وضعیت پیشرفته تعریف شده در RFC 3463 پشتیبانی میکنند. هنگامی که یک کد وضعیت پیشرفته در یک جدول دسترسی مشخص میشود، مشمول تغییر است. تبدیلات زیر هنگامی که از همان جدول دسترسی برای محدودیتهای دسترسی client، helo، sender یا recipient استفاده میشود، ضروری هستند؛ آنها بدون توجه به اینکه Postfix به یک دستور MAIL FROM، RCPT TO یا دستور دیگر SMTP پاسخ میدهد، اتفاق میافتند.
- هنگامی که یک آدرس فرستنده با یک کنش REJECT مطابقت دارد، کارساز SMTP پُستفیکس وضعیت DSN گیرنده (مانند 4.1.1-4.1.6) را به وضعیت DSN متناظر فرستنده تبدیل میکند و بالعکس.
- هنگامی که اطلاعات غیرآدرسی با یک کنش REJECT مطابقت دارد (مانند آرگومان دستور HELO یا نام میزبان/آدرس کلاینت)، کارساز SMTP پُستفیکس وضعیت DSN فرستنده یا گیرنده را به یک وضعیت DSN عمومی غیرآدرسی (مانند 4.0.0) تبدیل میکند.
جدولهای عبارات باقاعده (REGULAR EXPRESSION TABLES)
این بخش نحوه تغییر جستجوهای جدول را هنگامی که جدول در قالب عبارات باقاعده ارائه میشود، شرح میدهد. برای توضیح نحو جدول جستجوی عبارت باقاعده، به regexp_table(5) یا pcre_table(5) مراجعه کنید.
هر الگو یک عبارت باقاعده است که برای کل رشته مورد جستجو اعمال میشود. بسته به کاربرد، آن رشته کل نام میزبان کلاینت، کل آدرس IP کلاینت، یا کل آدرس ایمیل است. بنابراین، هیچ جستجویی در دامنه والد یا شبکه والد انجام نمیشود، آدرسهای ایمیل user@domain به بخشهای تشکیلدهنده user@ و domain تقسیم نمیشوند، و user+foo نیز به user و foo تجزیه نمیشود.
الگوها به ترتیبی که در جدول مشخص شدهاند اعمال میشوند تا زمانی که الگویی پیدا شود که با رشته جستجو مطابقت داشته باشد.
کنشها همانند جستجوهای فایل ایندکسشده هستند، با این ویژگی اضافی که زیررشتههای داخل پرانتز از الگو میتوانند به صورت $1، $2 و غیره جایگزین شوند.
جدولهای مبتنی بر TCP (TCP-BASED TABLES)
این بخش نحوه تغییر جستجوهای جدول را هنگامی که جستجوها به یک کارساز مبتنی بر TCP هدایت میشوند شرح میدهد. برای شرح پروتکل جستجوی کلاینت/کارساز TCP به tcp_table(5) مراجعه کنید. این ویژگی تا نسخه 2.4 Postfix (شامل آن) در دسترس نیست.
هر عملیات جستجو کل رشته پرسوجو را یک بار استفاده میکند. بسته به کاربرد، آن رشته یک نام میزبان کامل کلاینت، یک آدرس IP کامل کلاینت، یا یک آدرس ایمیل کامل است. بنابراین، هیچ جستجوی دامنه والد یا شبکه والد انجام نمیشود، آدرسهای ایمیل user@domain به اجزای تشکیلدهنده user@ و domain خود تجزیه نمیشوند، و user+foo نیز به user و foo تقسیم نمیگردد.
کنشها همانند جستجوهای فایل ایندکسشده هستند.
مثالها (EXAMPLES)
مثال زیر از یک فایل ایندکسشده استفاده میکند، به طوری که ترتیب ورودیهای جدول اهمیتی ندارد. این مثال دسترسی کلاینت در آدرس 1.2.3.4 را مجاز میداند اما تمام کلاینتهای دیگر در 1.2.3.0/24 را رد میکند. به جای جدولهای جستجوی hash، برخی سیستمها از dbm استفاده میکنند. از دستور «postconf -m» برای یافتن جدولهای جستجویی که Postfix در سیستم شما پشتیبانی میکند استفاده کنید.
/etc/postfix/main.cf:
smtpd_client_restrictions =
check_client_access hash:/etc/postfix/access
/etc/postfix/access:
1.2.3 REJECT
1.2.3.4 OK
دستور «postmap /etc/postfix/access» را پس از ویرایش فایل اجرا کنید.
گزارش باگها (BUGS)
قالب جدول قراردادهای نقلقول (quoting conventions) را درک نمیکند.
همچنین ببینید (SEE ALSO)
postmap(1)، مدیر جدول جستجوی Postfix smtpd(8)، کارساز SMTP postconf(5)، پارامترهای پیکربندی transport(5)، نحو transport:nexthop
فایلهای راهنما (README FILES)
از «postconf readme_directory» یا «postconf html_directory» برای یافتن محل این اطلاعات استفاده کنید.
SMTPD_ACCESS_README، کنترل دسترسی کارساز داخلی SMTP DATABASE_README، نمای کلی جدول جستجوی Postfix
مجوز (LICENSE)
مجوز نرمافزار امنیتی Secure Mailer باید همراه با این نرمافزار توزیع شود.
نویسندگان (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