| LDAP_TABLE(5) | File Formats Manual | LDAP_TABLE(5) |
نام (NAME)
ldap_table - پیکربندی کلاینت LDAP در Postfix
خلاصه دستور (SYNOPSIS)
postmap -q "string" ldap:/etc/postfix/filename postmap -q - ldap:/etc/postfix/filename <inputfile
توضیحات (DESCRIPTION)
سیستم ایمیل Postfix از جدولهای اختیاری برای بازنویسی نشانیها یا مسیریابی ایمیل استفاده میکند. این جدولها معمولاً در قالبهای lmdb:، cdb:، hash: یا dbm: هستند.
بهعنوان جایگزین، جدولهای جستجو (lookup tables) را میتوان بهعنوان پایگاههای داده LDAP مشخص کرد. برای آگاهی از انواع جدولهای جستجویی که سیستم Postfix شما پشتیبانی میکند، از دستور «postconf -m» استفاده کنید.
برای استفاده از جستجوهای LDAP، یک منبع LDAP را بهعنوان یک جدول جستجو در main.cf تعریف کنید، برای نمونه:
alias_maps = ldap:/etc/postfix/ldap-aliases.cf
فایل /etc/postfix/ldap-aliases.cf قالبی مشابه فایل main.cf در Postfix دارد و میتواند پارامترهای شرح دادهشده در ادامه را مشخص کند. نمونهای از آن در پایان این راهنما آمده است.
این روش پیکربندی در Postfix نسخه ۲.۱ و جدیدتر در دسترس است. برای نسخههای قدیمیتر Postfix به بخش «پارامترهای منسوخ MAIN.CF» در زیر مراجعه کنید.
برای جزئیات مربوط به LDAP SSL و STARTTLS، بخش SSL و STARTTLS را در زیر مشاهده کنید.
عضویت در فهرست (LIST MEMBERSHIP)
هنگام استفاده از LDAP برای ذخیره فهرستهایی مانند $mynetworks، $mydestination، $relay_domains، $local_recipient_maps و غیره، درک این نکته حائز اهمیت است که جدول باید هر عضو فهرست را بهعنوان یک کلید جداگانه ذخیره کند. جستجوی جدول *وجود* کلید را اعتبارسنجی میکند. برای بحث بیشتر به «Postfix lists versus tables» در سند DATABASE_README مراجعه کنید.
جدولهایی نسازید که فهرست کاملی از دامنهها در $mydestination یا $relay_domains و غیره، یا نشانیهای IP در $mynetworks را بازمیگردانند.
حتماً جدولهایی بسازید که هر مورد منطبق را بهعنوان یک کلید و با مقداری دلخواه داشته باشند. در پایگاههای داده LDAP، بازگرداندن خود کلید امر رایجی است.
برای مثال، هرگز در نگاشتی که $mydestination را تعریف میکند این کار را انجام ندهید:
query_filter = domain=* result_attribute = domain
در عوض این کار را انجام دهید:
query_filter = domain=%s result_attribute = domain
پارامترهای عمومی LDAP (GENERAL LDAP PARAMETERS)
در متن زیر، مقادیر پیشفرض درون پرانتز آمدهاند. نکته: در این متغیرها از نقلقول (کوتیشن) استفاده نکنید؛ حداقل تا زمانی که روتینهای پیکربندی Postfix نحوه کار با رشتههای دارای نقلقول را پشتیبانی کنند.
- server_host (پیشفرض: localhost)
- نام
میزبانی که
سرور LDAP را
اجرا
میکند،
مانند:
server_host = ldap.example.com
بسته به کتابخانه کلاینت LDAP که استفاده میکنید، باید بتوان چندین سرور را در اینجا مشخص کرد تا در صورت خرابی سرور اول، کتابخانه آنها را به ترتیب امتحان کند. همچنین باید بتوان به هر سرور در فهرست یک درگاه متفاوت داد (که server_port را در زیر بازنویسی میکند)، با نامگذاری آنها به این صورت:
server_host = ldap.example.com:1444
نکته: این کلاینت پس از یک شکست، بلافاصله مجدداً متصل میشود و در صورتی که تلاش دوم نیز ناموفق باشد، درخواست جستجو را رد میکند.
با OpenLDAP، میتوان از یک (فهرست از) نشانیهای اینترنتی (URL) مربوط به LDAP برای مشخص کردن نام میزبان(ها) و درگاه(ها) استفاده کرد:
server_host = ldap://ldap.example.com:1444 ldap://ldap2.example.com:1444تمام URLهای LDAP پذیرفتهشده توسط کتابخانه OpenLDAP پشتیبانی میشوند، از جمله اتصالات روی سوکتهای دامنه یونیکس (UNIX domain sockets)، و LDAP SSL (مورد آخر در صورتی که OpenLDAP با پشتیبانی از SSL کامپایل شده باشد):
server_host = ldapi://%2Fsome%2Fpath ldaps://ldap.example.com:636 - server_port (پیشفرض: 389)
- درگاهی که
سرور LDAP روی
آن گوش
میدهد،
مانند:
server_port = 778
- timeout (پیشفرض: 10 ثانیه)
- تعداد
ثانیههایی
که یک جستجو
میتواند
طول بکشد
پیش از آنکه
با مهلت
زمانی (timeout)
متوقف شود،
مانند:
timeout = 5
- search_base (بدون پیشفرض؛ باید این مقدار را پیکربندی کنید)
- مقدار DN
پایه طبق RFC2253
که جستجو در
آن انجام
میشود،
مانند:
search_base = dc=your, dc=com
- در Postfix نسخه ۲.۲ و جدیدتر، این پارامتر از بسطهای '%' زیر پشتیبانی میکند:
- %%
- با یک نویسه '%' واقعی جایگزین میشود.
- %s
- با کلید ورودی جایگزین میشود. برای اطمینان از اینکه کلید ورودی نویسههای متا (metacharacters) غیرمنتظره اضافه نکند، از نقلقولگذاری طبق RFC 2253 استفاده میشود.
- %u
- هنگامی که کلید ورودی نشانیای به فرم user@domain باشد، %u با بخش محلی (local part) نشانی که طبق (RFC 2253) نقلقولگذاری شده جایگزین میشود. در غیر این صورت، %u با کل رشته جستجو جایگزین میگردد. اگر بخش محلی خالی باشد، جستجو لغو شده و هیچ نتیجهای بازنمیگرداند.
- %d
- هنگامی که کلید ورودی نشانیای به فرم user@domain باشد، %d با بخش دامنه نشانی که طبق (RFC 2253) نقلقولگذاری شده جایگزین میشود. در غیر این صورت، جستجو لغو شده و هیچ نتیجهای بازنمیگرداند.
- %[SUD]
- برای پارامتر search_base، معادلهای حروف بزرگ بسطهای فوق دقیقاً رفتاری مشابه با همتایان حروف کوچک خود دارند. با پارامتر result_format (که قبلاً result_filter نامیده میشد، بخش «سایر قابلیتهای منسوخ» و زیر را ببینید)، آنها به مؤلفههای متناظر کلید ورودی بسط مییابند نه مقدار نتیجه.
- %[1-9]
- الگوهای %1، %2، ... %9 با بااهمیتترین مؤلفه متناظر از دامنه کلید ورودی جایگزین میشوند. اگر کلید ورودی user@mail.example.com باشد، آنگاه %1 برابر com، %2 برابر example و %3 برابر mail خواهد بود. اگر کلید ورودی بدون صلاحیت (unqualified) باشد یا مؤلفههای دامنه کافی برای برآورده کردن تمام الگوهای مشخصشده نداشته باشد، جستجو لغو شده و هیچ نتیجهای بازنمیگرداند.
- query_filter (پیشفرض: mailacceptinggeneralid=%s)
- فیلتر RFC2254
مورد
استفاده
برای
جستجوی
دایرکتوری،
که در آن %s
جایگزینی
برای
نشانیای
است که Postfix
تلاش
میکند آن
را حل (resolve)
کند، مانند:
query_filter = (&(mail=%s)(paid_up=true))
این پارامتر از بسطهای '%' زیر پشتیبانی میکند:
- %%
- با یک نویسه '%' واقعی جایگزین میشود (Postfix نسخه ۲.۲ و جدیدتر).
- %s
- با کلید ورودی جایگزین میشود. برای اطمینان از اینکه کلید ورودی نویسههای متا غیرمنتظره اضافه نکند، از نقلقولگذاری طبق RFC 2254 استفاده میشود.
- %u
- هنگامی که کلید ورودی نشانیای به فرم user@domain باشد، %u با بخش محلی نشانی که طبق (RFC 2254) نقلقولگذاری شده جایگزین میشود. در غیر این صورت، %u با کل رشته جستجو جایگزین میگردد. اگر بخش محلی خالی باشد، جستجو لغو شده و هیچ نتیجهای بازنمیگرداند.
- %d
- هنگامی که کلید ورودی نشانیای به فرم user@domain باشد، %d با بخش دامنه نشانی که طبق (RFC 2254) نقلقولگذاری شده جایگزین میشود. در غیر این صورت، جستجو لغو شده و هیچ نتیجهای بازنمیگرداند.
- %[SUD]
- معادلهای حروف بزرگ بسطهای فوق در پارامتر query_filter دقیقاً رفتاری مشابه همتایان حروف کوچک خود دارند. با پارامتر result_format (که قبلاً result_filter نامیده میشد، بخش «سایر قابلیتهای منسوخ» و زیر را ببینید)، آنها به مؤلفههای متناظر کلید ورودی بسط مییابند نه مقدار نتیجه.
- بسطهای %S، %U و %D فوق در Postfix نسخه ۲.۲ و جدیدتر در دسترس هستند.
- %[1-9]
- الگوهای %1، %2، ... %9 با بااهمیتترین مؤلفه متناظر از دامنه کلید ورودی جایگزین میشوند. اگر کلید ورودی user@mail.example.com باشد، آنگاه %1 برابر com، %2 برابر example و %3 برابر mail خواهد بود. اگر کلید ورودی بدون صلاحیت باشد یا مؤلفههای دامنه کافی برای برآورده کردن تمام الگوهای مشخصشده نداشته باشد، جستجو لغو شده و هیچ نتیجهای بازنمیگرداند.
- بسطهای %1، ...، %9 فوق در Postfix نسخه ۲.۲ و جدیدتر در دسترس هستند.
- پارامتر
«domain» که در
ادامه
توضیح داده
شده است،
کلیدهای
ورودی را به
نشانیهای
موجود در
دامنههای
منطبق
محدود
میکند.
هنگامی که
پارامتر
«domain» خالی
نباشد،
پرسوجوهای
LDAP برای
نشانیهای
بدون
صلاحیت یا
نشانیهای
موجود در
دامنههای
غیرمنطبق
لغو شده و
هیچ
نتیجهای
بازنمیگردانند.
نکته: اطراف پارامتر query_filter از نقلقول (کوتیشن) استفاده نکنید.
- result_format (پیشفرض: %s)
- در نسخههای Postfix پیش از ۲.۲ با نام result_filter خوانده میشد. قالب فرمتی است که بر ویژگیهای نتیجه اعمال میشود. بیشترین کاربرد آن برای افزودن متن به پایان (یا ابتدا) نتیجه است. این پارامتر از بسطهای '%' زیر پشتیبانی میکند:
- %%
- با یک نویسه '%' واقعی جایگزین میشود (Postfix نسخه ۲.۲ و جدیدتر).
- %s
- با مقدار ویژگی نتیجه جایگزین میشود. هنگامی که نتیجه خالی باشد، از آن صرفنظر میشود.
- %u
- هنگامی که مقدار ویژگی نتیجه نشانیای به فرم user@domain باشد، %u با بخش محلی نشانی جایگزین میشود. هنگامی که نتیجه دارای بخش محلی خالی باشد، از آن صرفنظر میشود.
- %d
- هنگامی که مقدار ویژگی نتیجه نشانیای به فرم user@domain باشد، %d با بخش دامنه مقدار ویژگی جایگزین میشود. هنگامی که نتیجه بدون صلاحیت باشد، از آن صرفنظر میشود.
- %[SUD1-9]
- بسطهای حروف بزرگ و ارقام دهدهی بخشهایی از کلید ورودی را بهجای نتیجه جایگذاری میکنند. رفتار آنها دقیقاً همانند آنچه با query_filter شرح داده شد است، و در واقع از آنجا که کلید ورودی از قبل شناخته شده است، جستجوهایی که کلید آنها شامل تمام اطلاعات مشخصشده در قالب نتیجه نباشد لغو شده و هیچ نتیجهای بازنمیگردانند.
- بسطهای %S، %U، %D و %1، ...، %9 فوق در Postfix نسخه ۲.۲ و جدیدتر در دسترس هستند.
- برای مثال،
استفاده از
«result_format = smtp:[%s]» این
امکان را
فراهم
میکند که
از ویژگی mailHost
بهعنوان
مبنای یک
جدول transport(5)
استفاده
شود. پس از
اعمال قالب
نتیجه،
مقادیر
چندگانه
بهصورت
رشتههای
جداشده با
کاما الحاق
میشوند.
پارامترهای
expansion_limit و size_limit که در
ادامه
توضیح داده
شدهاند،
امکان
محدود کردن
تعداد
مقادیر در
نتیجه را
فراهم
میکنند که
بهویژه
برای
نگاشتهایی
که باید یک
مقدار
منفرد
بازگردانند
کاربرد
دارد.
مقدار پیشفرض %s مشخص میکند که هر مقدار ویژگی باید همانطور که هست استفاده شود.
این پارامتر در نسخههای Postfix پیش از ۲.۲، result_filter نامیده میشد. اگر «result_format» مشخص نشود، پیش از متوسل شدن به مقدار پیشفرض، مقدار «result_filter» استفاده خواهد شد. این ویژگی سازگاری با فایلهای پیکربندی قدیمی را فراهم میکند.
نکته: اطراف قالب نتیجه از نقلقول استفاده نکنید!
- domain (پیشفرض: بدون فهرست دامنه)
- این
پارامتر
فهرستی از
نامهای
دامنه،
مسیر
فایلها یا
پایگاههای
داده «type:table»
است. در
صورت تعیین
شدن، تنها
کلیدهای
جستجوی
کاملاً
واجد شرایط
(FQDN) با یک بخش
محلی
*غیرخالی* و
یک دامنه
منطبق واجد
شرایط
جستجو
هستند:
جستجوهای
'user'،
جستجوهای
دامنه تنها
و جستجوهای
"@domain" انجام
نمیشوند.
این امر
میتواند
بار
پرسوجو
روی سرور LDAP
را بهطور
چشمگیری
کاهش دهد.
domain = postfix.org, hash:/etc/postfix/searchdomains
بهتر است برای ذخیره دامنههای واجد شرایط جستجوهای LDAP، از LDAP استفاده نشود.
نکته: این پارامتر را برای نامهای مستعار local(8) تعریف نکنید.
این قابلیت در Postfix نسخه ۱.۰ و جدیدتر در دسترس است.
- result_attribute (پیشفرض: maildrop)
- ویژگی یا
ویژگیهایی
که Postfix از هر
ورودی
دایرکتوری
بازگرداندهشده
توسط جستجو
میخواند
تا به یک
نشانی
ایمیل حل
شود.
result_attribute = mailbox, maildrop
به مقدار پیشفرض («maildrop») تکیه نکنید. مقدار result_attribute را بهطور صریح در تمام فایلهای پیکربندی جدول ldap تنظیم کنید. این امر بهویژه زمانی مرتبط است که هیچ result_attribute قابل اجرایی وجود نداشته باشد، مانند مواردی که در آنها leaf_result_attribute و/یا terminal_result_attribute بهجای آن استفاده میشوند. اگر «maildrop» نیز بهعنوان یک ویژگی نتیجه برگ یا پایانی فهرست شده باشد، مقدار پیشفرض بیضرر است، اما بهتر است این موضوع به شانس واگذار نشود.
- special_result_attribute (پیشفرض: خالی)
- ویژگی(های)
ورودیهای
دایرکتوری
که
میتوانند
شامل DNها یا
URLهای RFC 2255 LDAP
باشند. در
صورت یافت
شدن، یک
جستجوی
بازگشتی
برای
بازیابی
ورودی
ارجاعشده
توسط DN، یا
ورودیهای
منطبق با
پرسوجوی URL
انجام
میشود.
special_result_attribute = memberdn
بازگشت DN همان result_attributes پرسوجوی اصلی را بازیابی میکند، از جمله ویژگیهای خاص برای بازگشتهای بیشتر.
پردازش URL تنها ویژگیهایی را بازیابی میکند که هم در تعریف URL و هم بهعنوان ویژگیهای نتیجه (عادی، خاص، برگ یا پایانی) در تعریف جدول Postfix گنجانده شده باشند. اگر URL هر یک از ویژگیهای نتیجه خاص جدول را فهرست کند، این ویژگیها بازیابی شده و بهصورت بازگشتی استفاده میشوند. یک URL که هیچ انتخابی از ویژگیها را مشخص نمیکند، طبق (RFC 2255) معادل یک URL است که تمام ویژگیها را انتخاب میکند، که در این صورت ویژگیهای انتخابشده مجموعه کاملی از ویژگیهای نتیجه در جدول Postfix خواهند بود.
اگر یک توصیفکننده ویژگی URL در LDAP یا ویژگی نتیجه متناظر در جدول LDAP در Postfix (اما نه هر دو) از گزینههای زیرنوع RFC 2255 استفاده کند ("attr;option")، ویژگی درخواستشده از سرور LDAP شامل گزینه زیرنوع خواهد بود. در تمام موارد دیگر، ویژگی URL و ویژگی جدول باید دقیقاً مطابقت داشته باشند. ویژگیهای دارای گزینه هم در URL و هم در جدول Postfix تنها زمانی درخواست میشوند که گزینهها یکسان باشند. گزینههای توصیفکننده ویژگی در LDAP بهندرت استفاده میشوند و اکثر کاربران LDAP نیازی به درگیر شدن با این سطح از جزئیات ظریف نخواهند داشت.
- terminal_result_attribute (پیشفرض: خالی)
- هنگامی که
یک یا چند
ویژگی
نتیجه
پایانی (terminal)
در یک ورودی
LDAP یافت شود،
تمام
ویژگیهای
نتیجه دیگر
نادیده
گرفته شده و
تنها
ویژگیهای
نتیجه
پایانی
بازگردانده
میشوند.
این قابلیت
برای
واگذاری
بسط اعضای
گروه به یک
میزبان خاص
مفید است،
با استفاده
از یک ویژگی
اختیاری
«maildrop» روی
گروههای
منتخب برای
مسیریابی
گروه به یک
میزبان
خاص، جایی
که گروه بسط
داده
میشود،
احتمالاً
از طریق یک
مدیر فهرست
پستی (mailing-list manager) یا
پردازشهای
خاص دیگر.
result_attribute = terminal_result_attribute = maildrop
هنگام استفاده از ویژگیهای نتیجه پایانی و/یا برگ، در صورتی که result_attribute استفاده نمیشود، بهتر است روی یک مقدار خالی تنظیم شود یا بهطور صریح روی مقدار مورد نظر تنظیم گردد، حتی اگر مقدار پیشفرض «maildrop» باشد.
این قابلیت در Postfix نسخه ۲.۴ یا جدیدتر در دسترس است.
- leaf_result_attribute (پیشفرض: خالی)
- هنگامی که
یک یا چند
ویژگی
نتیجه خاص
در یک ورودی
LDAP
غیرپایانی
(بالا را
ببینید)
یافت شود،
ویژگیهای
نتیجه برگ
از بسط آن
ورودی
مستثنی
میشوند.
این قابلیت
هنگام بسط
گروهها و
در حالتی که
ویژگی(های)
نشانی
ایمیل مورد
نظر از
اشیای عضو
بهدستآمده
از طریق
بازگشت DN یا URI
در خود شیء
گروه نیز
وجود دارد،
مفید است.
برای
بازگرداندن
مقادیر
ویژگی فقط
از اشیای
برگ و نه
گروه
دربرگیرنده،
ویژگی را به
فهرست leaf_result_attribute
اضافه کنید
و نه به
فهرست result_attribute که
همیشه بسط
مییابد.
توجه داشته
باشید که
مقدار
پیشفرض
«result_attribute» خالی
نیست؛ ممکن
است
بخواهید
هنگام
استفاده از
«leaf_result_attribute» برای
بسط گروه به
فهرستی از
نشانیهای
DN اعضا، آن
را صریحاً
خالی
بگذارید.
اگر
گروهها هم
ارجاعات DN
عضو و هم
ویژگیهایی
داشته
باشند که
چندین
نشانی rfc822 با
مقدار
رشتهای را
در بر
دارند،
آنگاه
ویژگیهای
رشتهای در
«result_attribute» قرار
میگیرند.
ویژگیهایی
که
نمایانگر
نشانیهای
ایمیل
اشیای
ارجاعشده
از طریق یک DN
(یا LDAP URI) هستند
در «leaf_result_attribute»
قرار
میگیرند.
result_attribute = memberaddr special_result_attribute = memberdn terminal_result_attribute = maildrop leaf_result_attribute = mail
هنگام استفاده از ویژگیهای نتیجه پایانی و/یا برگ، در صورتی که result_attribute استفاده نمیشود، بهتر است روی یک مقدار خالی تنظیم شود یا بهطور صریح روی مقدار مورد نظر تنظیم گردد، حتی اگر مقدار پیشفرض «maildrop» باشد.
این قابلیت در Postfix نسخه ۲.۴ یا جدیدتر در دسترس است.
- scope (پیشفرض: sub)
- دامنه جستجوی LDAP: مقادیر sub، base یا one. این مقادیر به LDAP_SCOPE_SUBTREE، LDAP_SCOPE_BASE و LDAP_SCOPE_ONELEVEL ترجمه میشوند.
- bind (پیشفرض: yes)
- اینکه آیا
یا چگونه به
سرور LDAP متصل
(bind) شوید.
پیادهسازیهای
جدیدتر LDAP
نیازی به bind
کردن
کلاینتها
ندارند که
این امر
موجب
صرفهجویی
در زمان
میشود.
مثال:
# متصل نشدن (Don't bind) bind = no # استفاده از bind ساده (SIMPLE bind) bind = yes # استفاده از bind نوع SASL bind = sasl
نسخههای Postfix پیش از ۲.۸ فقط از «bind = no» به معنی متصل نشدن و «bind = yes» به معنی انجام یک bind ساده (SIMPLE) پشتیبانی میکنند. Postfix نسخه ۲.۸ و جدیدتر در صورتی که همانطور که در LDAP_README شرح داده شده با پشتیبانی LDAP SASL کامپایل شده باشد، از «bind = SASL» نیز پشتیبانی میکند، همچنین مترادفهای «bind = none» و «bind = simple» را به ترتیب برای «bind = no» و «bind = yes» اضافه میکند. برای پارامترهای اضافی در دسترس با «bind = sasl» به بخش SASL در زیر مراجعه کنید.
اگر نیاز به اتصال (bind) دارید، میتوانید پیکربندی Postfix را برای اتصال به ماشین محلی روی درگاهی که یک تونل SSL به سرور LDAP شماست در نظر بگیرید. اگر سرور LDAP شما بهطور بومی از SSL پشتیبانی نمیکند، یک تونل (پوشش، پروکسی، یا هر چه میخواهید بنامید) را روی آن سیستم نیز قرار دهید. این کار باید از انتقال گذرواژه بهصورت متن آشکار (cleartext) در شبکه جلوگیری کند.
- bind_dn (پیشفرض: خالی)
- اگر مجبور
به bind هستید،
این کار را
با این نام
متمایز (distinguished name)
انجام دهید.
مثال:
bind_dn = uid=postfix, dc=your, dc=com
با «bind = sasl» (بالا را ببینید) مقدار DN ممکن است برای برخی از سازوکارهای SASL اختیاری باشد؛ در صورت عدم نیاز، DN را مشخص نکنید. - bind_pw (پیشفرض: خالی)
- گذرواژه
برای نام
متمایز فوق.
اگر مجبور
به استفاده
از این
هستید،
احتمالاً
میخواهید
فایل
پیکربندی
نگاشت را
فقط برای
کاربر Postfix
خواندنی
کنید. هنگام
استفاده از
نحو
منسوخشده
ldap:ldapsource، با
پارامترهای
نگاشت در main.cf،
امکان
ذخیره امن
گذرواژه bind
وجود ندارد.
زیرا main.cf باید
برای همگان
خواندنی (world-readable)
باشد تا به
حسابهای
محلی اجازه
دهد از طریق
دستور sendmail
ایمیل
ارسال کنند.
مثال:
bind_pw = postfixpw
با «bind = sasl» (بالا را ببینید) ممکن است گذرواژه برای برخی از سازوکارهای SASL اختیاری باشد؛ در صورت عدم نیاز، گذرواژهای مشخص نکنید. - cache (با یک هشدار نادیده گرفته میشود)
- cache_expiry (با یک هشدار نادیده گرفته میشود)
- cache_size (با یک هشدار نادیده گرفته میشود)
- پارامترهای فوق دیگر توسط Postfix پشتیبانی نمیشوند. پشتیبانی از حافظه پنهان (Cache) از نسخه ۲.۱.۱۳ از OpenLDAP حذف شده است.
- recursion_limit (پیشفرض: 1000)
- محدودیتی برای عمق تودرتویی ارزیابی ویژگی نتیجه خاص DN و URL. این حد باید یک عدد مثبت غیرصفر باشد.
- expansion_limit (پیشفرض: 0)
- محدودیتی برای تعداد کل عناصر نتیجه بازگرداندهشده (بهصورت یک فهرست جداشده با کاما) توسط یک جستجو در نگاشت. تنظیم روی صفر این محدودیت را غیرفعال میکند. در صورت فراتر رفتن از حد، جستجوها با یک خطای موقت شکست میخورند. تنظیم محدودیت روی ۱ تضمین میکند که جستجوها مقادیر چندگانه بازنمیگردانند.
- size_limit (پیشفرض: $expansion_limit)
- محدودیتی
برای تعداد
ورودیهای
LDAP
بازگرداندهشده
توسط هر
جستجوی
منفرد LDAP که
بهعنوان
بخشی از
فرایند
جستجو
انجام
میشود.
تنظیم روی ۰
این
محدودیت را
غیرفعال
میکند. بسط
ارجاعات DN و URL
شامل
پرسوجوهای
تو در توی LDAP
است که هر
کدام
بهطور
جداگانه
مشمول این
محدودیت
میشوند.
نکته: حتی یک ورودی تکی LDAP میتواند از طریق چندین ویژگی نتیجه و/یا ویژگیهای نتیجه چندمقداری، چندین نتیجه جستجو تولید کند. این حد مصرف منابع به ازای هر جستجو را در سرور LDAP محدود میکند، نه تعداد نهایی نتایج جستجو را. این پارامتر مشابه گزینه «-z» در «ldapsearch» است.
- dereference (پیشفرض: 0)
- زمان ارجاعزدایی (dereference) نامهای مستعار LDAP. (توجه داشته باشید که این موضوع هیچ ارتباطی با نامهای مستعار Postfix ندارد.) مقادیر مجاز همان مواردی هستند که برای پیادهسازیهای OpenLDAP/UM LDAP معتبر میباشند:
- 0
- هرگز (never)
- 1
- هنگام جستجو (when searching)
- 2
- هنگام مکانیابی شیء پایه برای جستجو (when locating the base object for the search)
- 3
- همیشه (always)
- برای اطلاعات بیشتر به ldap.h یا صفحات راهنمای ldap_open(3) یا ldapsearch(1) مراجعه کنید. و اگر از بسته LDAPای استفاده میکنید که مقادیر ممکن دیگری دارد، لطفاً آن را به اطلاع فهرست پستی postfix-users@postfix.org برسانید.
- chase_referrals (پیشفرض: 0)
- مقدار LDAP_OPT_REFERRALS را تنظیم (یا پاک) میکند (نیازمند پشتیبانی از LDAP نسخه ۳).
- version (پیشفرض: 2)
- نسخه پروتکل LDAP مورد استفاده را مشخص میکند.
- debuglevel (پیشفرض: 0)
- چه سطحی برای اشکالزدایی (debugging) در کتابخانههای OpenLDAP تنظیم شود.
پارامترهای LDAP SASL (LDAP SASL PARAMETERS)
اگر از کتابخانههای OpenLDAP کامپایلشده با پشتیبانی SASL استفاده میکنید، Postfix نسخه ۲.۸ و جدیدتر که با پشتیبانی LDAP SASL طبق آنچه در LDAP_README آمده ساخته شدهاند، میتوانند از طریق SASL در سرورهای LDAP احراز هویت کنند.
این امر احراز هویت در سرور LDAP را از طریق سازوکارهایی غیر از گذرواژه ساده امکانپذیر میکند. این انعطافپذیری افزوده هزینهای نیز دارد: دیگر تعیین یک مهلت زمانی (timeout) صریح برای مدت زمان عملیات bind در LDAP عملی نیست. در شرایط نامساعد، این که آیا یک SASL bind به اتمام مهلت زمانی میرسد یا خیر، و در صورت وقوع مدت زمان آن، توسط کتابخانههای LDAP و SASL تعیین میشود.
بهتر است جدولهایی که از bindهای SASL استفاده میکنند را از طریق proxymap(8) به کار ببرید؛ به این ترتیب فرایند درخواستکننده میتواند مهلت زمانی درخواست proxymap را مدیریت کند. همچنین این امکان را به شما میدهد که با بازنویسی تنظیمات import_environment مربوط به proxymap(8) در master.cf(5)، محیط فرایند را سفارشی کنید. ممکن است برای پیکربندی حافظههای پنهان اعتبارنامه GSSAPI یا سایر گزینههای خاص سازوکار SASL به تنظیمات محیطی خاصی نیاز باشد. اعتبارنامههای GSSAPI مورد استفاده برای جستجوهای LDAP ممکن است با مواردی که مثلاً برای کلاینت SMTP در Postfix جهت احراز هویت در سرورهای راه دور استفاده میشوند متفاوت باشند.
استفاده از سازوکارهای SASL نیازمند پروتکل LDAP نسخه ۳ است، نسخه پیشفرض پروتکل برای حفظ سازگاری با گذشته ۲ است. شما باید علاوه بر «bind = sasl»، مقدار «version = 3» را نیز تنظیم کنید.
پارامترهای زیر به استفاده از LDAP با SASL مربوط میشوند:
- sasl_mechs (پیشفرض: خالی)
- فهرستی از سازوکار(های) SASL جداشده با فاصله برای امتحان کردن.
- sasl_realm (پیشفرض: خالی)
- قلمرو SASL (Realm) مورد استفاده، در صورت کاربرد داشتن.
- sasl_authz_id (پیشفرض: خالی)
- شناسه مجوزدهی SASL برای ارائه، در صورت کاربرد داشتن.
- sasl_minssf (پیشفرض: 0)
- حداقل ضریب امنیتی SASL مورد نیاز برای برقراری اتصال.
پارامترهای LDAP SSL و STARTTLS (LDAP SSL AND STARTTLS PARAMETERS)
اگر از کتابخانههای OpenLDAP کامپایلشده با پشتیبانی SSL استفاده میکنید، Postfix میتواند به سرورهای LDAP SSL متصل شده و دستور STARTTLS را صادر کند.
سرویس LDAP SSL را میتوان با استفاده از یک URL از نوع LDAP SSL در پارامتر server_host درخواست کرد:
server_host = ldaps://ldap.example.com:636
قابلیت STARTTLS را میتوان با پارامتر start_tls روشن کرد:
start_tls = yes
هر دو حالت نیازمند پروتکل LDAP نسخه ۳ هستند که باید بهصورت صریح تنظیم شود با:
version = 3
اگر هر یک از برنامههای Postfix که نگاشت را پرسوجو میکنند در master.cf برای اجرا در محیط chroot پیکربندی شده باشند، تمام گواهیها و کلیدهای دخیل باید در محیط ایزوله chroot کپی شوند. البته، کلیدهای خصوصی فقط باید برای کاربر «postfix» قابل خواندن باشند.
پارامترهای زیر به LDAP SSL و STARTTLS مربوط میشوند:
- start_tls (پیشفرض: no)
- اینکه آیا هنگام اتصال به سرور دستور STARTTLS صادر شود یا خیر. این گزینه را همراه با LDAP SSL تنظیم نکنید (جلسه SSL هنگام باز شدن اتصال TCP بهطور خودکار برقرار میشود).
- tls_ca_cert_dir (بدون پیشفرض؛ یکی از این یا tls_ca_cert_file را تنظیم کنید)
- پوشهای شامل گواهیهای مرجع صدور گواهی (CA) نوع X509 با قالب PEM که باید توسط کلاینت در اتصالات SSL/TLS شناخته شوند. هر یک از فایلها شامل یک گواهی CA است. فایلها بر اساس مقدار درهمسازی (hash) نام موضوع CA جستجو میشوند که بنابراین باید در دسترس باشند. اگر بیش از یک گواهی CA با مقدار هش نام یکسان وجود داشته باشد، پسوند باید متفاوت باشد (مانند 9d66eef0.0، 9d66eef0.1 و غیره). جستجو بر اساس ترتیب شماره پسوند انجام میشود، بدون در نظر گرفتن سایر ویژگیهای گواهیها. از ابزار c_rehash (از توزیع OpenSSL) برای ایجاد پیوندهای لازم استفاده کنید.
- tls_ca_cert_file (بدون پیشفرض؛ یکی از این یا tls_ca_cert_dir را تنظیم کنید)
- فایلی شامل گواهیهای مرجع صدور گواهی (CA) نوع X509 با قالب PEM که باید توسط کلاینت در اتصالات SSL/TLS شناخته شوند. این تنظیم بر tls_ca_cert_dir ارجحیت دارد.
- tls_cert (بدون پیشفرض؛ باید این مقدار را تنظیم کنید)
- فایلی شامل گواهی X509 کلاینت که توسط کلاینت در اتصالات SSL/TLS استفاده میشود.
- tls_key (بدون پیشفرض؛ باید این مقدار را تنظیم کنید)
- فایلی شامل کلید خصوصی متناظر با tls_cert فوق.
- tls_require_cert (پیشفرض: no)
- اینکه آیا
هنگام
برقراری
اتصالات SSL/TLS
گواهی X509
سرور
درخواست
شده و
اعتبار آن
بررسی شود
یا خیر.
مقادیر
پشتیبانیشده
no و yes هستند.
با مقدار no، زنجیره اعتماد گواهی سرور بررسی نمیشود، اما با نسخههای OpenLDAP پیش از ۲.۱.۱۳، نام موجود در گواهی سرور همچنان باید با نام سرور LDAP مطابقت داشته باشد. با نسخههای OpenLDAP از ۲.۰.۰ تا ۲.۰.۱۱، نام سرور لزوماً آن چیزی نیست که شما مشخص کردهاید، بلکه (با جستجوی معکوس) از روی نشانی IP اتصال سرور LDAP تعیین میشود. با نسخههای OpenLDAP پیش از ۲.۰.۱۳، پسوندهای subjectAlternativeName در گواهی سرور LDAP نادیده گرفته میشوند: نام سرور باید با CommonName موضوع مطابقت داشته باشد. مقدار no متناظر با مقدار never متغیر TLS_REQCERT در فایلهای پیکربندی کلاینت LDAP است.
اگر میتوانید از آن اجتناب کنید، با OpenLDAP 2.0.x (و بهویژه با x <= 11) از TLS استفاده نکنید.
با مقدار yes، گواهی سرور باید توسط یک CA معتبر صادر شده باشد و منقضی نشده باشد. نام سرور LDAP باید با یکی از نام(های) موجود در گواهی مطابقت داشته باشد (برای رفتارهای وابسته به نسخه کتابخانه OpenLDAP به بالا مراجعه کنید). مقدار yes متناظر با مقدار demand متغیر TLS_REQCERT در فایلهای پیکربندی کلاینت LDAP است.
مقادیر «try» و «allow» متغیر TLS_REQCERT در اینجا معادلی ندارند. آنها در OpenLDAP 2.0 در دسترس نیستند و در هر صورت ویژگیهای امنیتی مشکوکی دارند. یا اتصالات LDAP تأییدشده با TLS را میخواهید یا نمیخواهید.
مقدار yes تنها با Postfix نسخه ۲.۵ و جدیدتر، یا با OpenLDAP 2.0 بهدرستی کار میکند. نسخههای قدیمیتر Postfix یا نسخههای جدیدتر OpenLDAP با این تنظیم با هم کار نمیکنند. پشتیبانی از LDAP روی TLS بر اساس رابط برنامهنویسی (API) نسخه OpenLDAP 2.0 به Postfix اضافه شد.
- tls_random_file (بدون پیشفرض)
- مسیر فایلی برای دریافت بیتهای تصادفی در زمانی که dev/[u]random/ در دسترس نیست، جهت استفاده کلاینت در اتصالات SSL/TLS.
- tls_cipher_suite (بدون پیشفرض)
- مجموعه رمزنگاری (Cipher suite) مورد استفاده در مذاکرات SSL/TLS.
مثال (EXAMPLE)
در اینجا نمونهای پایهای برای استفاده از LDAP جهت جستجوی نامهای مستعار local(8) آورده شده است. فرض کنید در main.cf این مقدار را دارید:
alias_maps = hash:/etc/aliases,
ldap:/etc/postfix/ldap-aliases.cf
و در ldap:/etc/postfix/ldap-aliases.cf این مقادیر را دارید:
server_host = ldap.example.com search_base = dc=example, dc=com
پس از دریافت ایمیل برای نشانی محلی «ldapuser» که در پایگاه داده /etc/aliases یافت نمیشود، Postfix در سرور LDAP که روی درگاه ۳۸۹ در ldap.example.com گوش میدهد جستجو خواهد کرد. این برنامه بهصورت ناشناس متصل (bind) میشود، ورودیهای دایرکتوری که ویژگی mailacceptinggeneralid آنها برابر «ldapuser» است را جستجو میکند، ویژگیهای «maildrop» موارد یافتشده را میخواند و فهرستی از maildropهای آنها ایجاد میکند که بهعنوان نشانیهای RFC822 در نظر گرفته شده و پیام به آنها تحویل داده میشود.
پارامترهای منسوخ MAIN.CF (OBSOLETE MAIN.CF PARAMETERS)
برای سازگاری با نسخههای پیشین با Postfix نسخه ۲.۰ و قدیمیتر، پارامترهای LDAP را میتوان در main.cf نیز تعریف کرد. بهعنوان منبع LDAP نامی را مشخص کنید که با یک ممیز (اسلش) یا یک نقطه آغاز نشود. سپس پارامترهای LDAP بهصورت نامی که در تعریف منبع مشخص کردهاید، یک خط زیرین (underscore)، و نام پارامتر در دسترس خواهند بود. برای نمونه، اگر نگاشت بهصورت «ldap:ldapsource» مشخص شده باشد، پارامتر «server_host» در main.cf بهصورت «ldapsource_server_host» تعریف خواهد شد.
نکته: در این حالت، گذرواژههای منابع LDAP در main.cf نوشته میشوند که معمولاً برای همگان قابل خواندن است. پشتیبانی از این حالت در نسخههای آینده Postfix حذف خواهد شد.
سایر قابلیتهای منسوخ (OTHER OBSOLETE FEATURES)
- result_filter (بدون پیشفرض)
- برای سازگاری با نسخههای پیشین کلاینتهای LDAP قبل از نسخه ۲.۲، در صورتی که پارامتر دوم تنظیم نشده باشد، در حال حاضر میتوان از result_filter بهجای result_format استفاده کرد. نام جدید عملکرد این پارامتر را بهتر منعکس میکند. این رابط سازگاری ممکن است در نسخههای آینده حذف شود.
همچنین ببینید (SEE ALSO)
postmap(1)، مدیر جدولهای جستجوی Postfix postconf(5)، پارامترهای پیکربندی mysql_table(5)، جدولهای جستجوی MySQL pgsql_table(5)، جدولهای جستجوی PostgreSQL
فایلهای راهنما (README FILES)
برای یافتن محل این اطلاعات از «postconf readme_directory» یا «postconf html_directory» استفاده کنید.
DATABASE_README، نمای کلی جدولهای جستجوی Postfix LDAP_README، راهنمای کلاینت LDAP در Postfix
مجوز (LICENSE)
مجوز Secure Mailer باید همراه با این نرمافزار توزیع شود.
نویسندگان (AUTHORS)
Carsten Hoeger, Hery Rakotoarisoa, John Hensley, Keith Stevenson, LaMont Jones, Liviu Daia, Manuel Guesdon, Mike Mattice, Prabhat K Singh, Sami Haahtinen, Samuel Tardieu, Victor Duchovni, و بسیاری دیگر.