| CIDR_TABLE(5) | File Formats Manual | CIDR_TABLE(5) |
نام (NAME)
cidr_table - ساختار و قالب جدولهای CIDR در Postfix
خلاصه دستور (SYNOPSIS)
postmap -q "string" cidr:/etc/postfix/filename postmap -q - cidr:/etc/postfix/filename <inputfile
توضیحات (DESCRIPTION)
سیستم ایمیل Postfix از جدولهای جستجوی اختیاری استفاده میکند. این جدولها معمولاً در قالبهای lmdb:، cdb:، hash: یا dbm: هستند.
از طرف دیگر، جدولهای جستجو را میتوان در قالب CIDR (مسیریابی بیندامنهای بدون کلاس) مشخص کرد. در این حالت، هر ورودی با فهرستی از الگوها مقایسه میشود. هنگامی که یک تطابق پیدا شود، نتیجه متناظر بازگردانده شده و جستجو خاتمه مییابد.
برای آگاهی از انواع جدولهای جستجوی پشتیبانیشده توسط سیستم Postfix خود، از دستور "postconf -m" استفاده کنید.
برای آزمایش جدولهای جستجو، از دستور "postmap -q" به گونهای که در بخش خلاصه دستور در بالا شرح داده شد، استفاده کنید.
قالب جدول (TABLE FORMAT)
شکل کلی یک جدول CIDR در Postfix عبارت است از:
- pattern result
- هنگامی که رشته جستجو با pattern مشخصشده تطابق داشته باشد، مقدار result متناظر استفاده میشود. الگو باید در قالب network/prefix یا network_address باشد (بخش نحوه نگارش الگوی نشانی در زیر را ببینید).
- !pattern result
- هنگامی که
رشته جستجو
با pattern
مشخصشده
تطابق
نداشته
باشد،
مقدار result
تعیینشده
استفاده
میشود.
الگو باید
در قالب network/prefix
یا network_address باشد
(بخش نحوه
نگارش
الگوی
نشانی در
زیر را
ببینید).
این ویژگی در Postfix نسخه 3.2 و بالاتر در دسترس است.
- if pattern
- endif
- هنگامی که
یک رشته
جستجو با pattern
مشخصشده
تطابق
داشته
باشد، آن
رشته را با
الگوهای
میان if و endif
تطبیق
میدهد.
الگو باید
در قالب network/prefix
یا network_address باشد
(بخش نحوه
نگارش
الگوی
نشانی در
زیر را
ببینید).
بلوکهای
if..endif
میتوانند
تودرتو
باشند.
نکته: به متن بین if..endif فاصله سفید اضافه نکنید.
این ویژگی در Postfix نسخه 3.2 و بالاتر در دسترس است.
- if !pattern
- endif
- هنگامی که
یک رشته
جستجو با pattern
مشخصشده
تطابق
نداشته
باشد، آن
رشته را با
الگوهای
میان if و endif
تطبیق
میدهد.
الگو باید
در قالب network/prefix
یا network_address باشد
(بخش نحوه
نگارش
الگوی
نشانی در
زیر را
ببینید).
بلوکهای
if..endif
میتوانند
تودرتو
باشند.
نکته: به متن بین if..endif فاصله سفید اضافه نکنید.
این ویژگی در Postfix نسخه 3.2 و بالاتر در دسترس است.
- خطوط خالی و کامنتها
- خطوط خالی و خطوطی که فقط شامل فاصله سفید هستند نادیده گرفته میشوند، همانطور که خطوطی که نخستین نویسه غیرفاصله آنها '#' است نادیده گرفته میشوند.
- متن چندخطی
- یک خط منطقی با متنی بدون فاصله آغاز میشود. خطی که با فاصله سفید آغاز شود، ادامه خط منطقی پیشین به شمار میرود.
ترتیب جستجو در جدول (TABLE SEARCH ORDER)
الگوها دقیقاً به ترتیبی که در جدول مشخص شدهاند اعمال میشوند تا زمانی که الگویی منطبق بر رشته جستجو پیدا شود.
نحوه نگارش الگوی نشانی (ADDRESS PATTERN SYNTAX)
جدولهای CIDR در Postfix مبتنی بر الگو هستند. یک الگو یا یک network_address است که نیازمند تطابق دقیق میباشد، یا یک network_address/prefix_length است که در آن بخش prefix_length طول پیشوند network_address را که باید مطابقت داده شود مشخص میکند (سایر بیتها در بخش network_address باید صفر باشند).
یک نشانی شبکه IPv4 دنبالهای از چهار اکتت دهدهی است که با «.» جدا میشوند، و یک نشانی شبکه IPv6 دنبالهای از سه تا هشت جفت اکتت هگزادسیمال است که با «:» یا «::» جدا شدهاند؛ حالت دوم شکل خلاصه برای دنبالهای از یک یا چند جفت اکتت تماماً صفر است. الگوی 0.0.0.0/0 با هر نشانی IPv4 و ::/0 با هر نشانی IPv6 مطابقت دارد. پشتیبانی از IPv6 در Postfix نسخه 2.2 و بالاتر موجود است.
پیش از انجام مقایسهها، کلیدهای جستجو و مدخلهای جدول از رشته به باینری تبدیل میشوند. بنابراین، الگوهای IPv6 بدون توجه به صفرهای ابتدایی مطابقت داده میشوند (یک صفر پیشرو در اکتت نشانی IPv4 نشاندهنده نمادگذاری هشتهشتی است).
نکته: اطلاعات نشانی میتواند درون «[]» محصور شود اما این فرم الزامی نیست.
تعیین درونخطی (INLINE SPECIFICATION)
محتوای یک جدول میتواند درون نام جدول مشخص شود (Postfix نسخه 3.7 و بالاتر). نحو پایه به صورت زیر است:
main.cf:
parameter = .. cidr:{ { rule-1 }, { rule-2 } .. } ..
master.cf:
.. -o { parameter = .. cidr:{ { rule-1 }, { rule-2 } .. } .. } ..
پستفیکس به صورت بازگشتی هر نمونه از $parametername در مقدار پارامتر بالا را بسط میدهد، فاصلههای سفید پس از '{' و پیش از '}' را نادیده میگیرد و هر rule را به عنوان یک سطر متنی درون یک فایل در حافظه مینویسد:
in-memory file:
rule-1
rule-2
..
پستفیکس نتیجه را به گونهای پردازش میکند که گویی فایلی در /etc/postfix است.
نکته: اگر یک قاعده حاوی $ است، از $$ استفاده کنید تا از تلاش Postfix برای بسط $name هنگام ارزیابی مقدار پارامتر جلوگیری شود.
نمونه نقشه دسترسی SMTPD (EXAMPLE SMTPD ACCESS MAP)
/etc/postfix/main.cf:
smtpd_client_restrictions = ... cidr:/etc/postfix/client.cidr ...
/etc/postfix/client.cidr:
# ترتیب قواعد مهم است. ورودیهای خاصتر لیست مجاز را
# پیش از ورودیهای عمومیتر لیست مسدود قرار دهید.
192.168.1.1 OK
192.168.0.0/16 REJECT
2001:db8::1 OK
2001:db8::/32 REJECT
همچنین ببینید (SEE ALSO)
postmap(1), Postfix lookup table manager regexp_table(5), format of regular expression tables pcre_table(5), format of PCRE tables
فایلهای راهنما (README FILES)
برای یافتن این اطلاعات از دستور "postconf readme_directory" یا "postconf html_directory" استفاده کنید.
DATABASE_README, Postfix lookup table overview
تاریخچه (HISTORY)
پشتیبانی از جدول CIDR با نسخه 2.1 نرمافزار Postfix معرفی شد.
نویسندگان (AUTHORS)
کد جستجوی جدول CIDR در اصل توسط افراد زیر نوشته شده است: Jozsef Kadlecsik KFKI Research Institute for Particle and Nuclear Physics POB. 49 1525 Budapest, Hungary Adopted and adapted by: 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