| SQLITE_TABLE(5) | File Formats Manual | SQLITE_TABLE(5) |
نام (NAME)
sqlite_table - پیکربندی SQLite در Postfix
خلاصه دستور (SYNOPSIS)
postmap -q "string" sqlite:/etc/postfix/filename postmap -q - sqlite:/etc/postfix/filename <inputfile
توضیحات (DESCRIPTION)
سیستم ایمیل Postfix از جدولهای اختیاری برای بازنویسی نشانی یا مسیریابی ایمیل استفاده میکند. این جدولها معمولاً در قالبهای lmdb:، cdb:، hash: یا dbm: هستند.
بهعنوان روش جایگزین، جدولهای جستجو میتوانند بهصورت پایگاههای داده SQLite مشخص شوند. برای اطلاع از اینکه سیستم Postfix شما از چه نوع جدولهای جستجویی پشتیبانی میکند، از دستور "postconf -m" استفاده کنید.
بهمنظور استفاده از جستجوهای SQLite، یک منبع SQLite را بهصورت جدول جستجو در main.cf تعریف کنید، برای نمونه:
alias_maps = sqlite:/etc/postfix/sqlite-aliases.cf
فایل /etc/postfix/sqlite-aliases.cf همان قالبی را دارد که فایل main.cf در Postfix داراست، و میتواند پارامترهای شرحدادهشده در زیر را مشخص کند.
عضویت در فهرست (LIST MEMBERSHIP)
هنگام استفاده از SQL برای ذخیره فهرستهایی نظیر $mynetworks، $mydestination، $relay_domains، $local_recipient_maps و غیره، درک این نکته اهمیت دارد که جدول باید هر عضو فهرست را بهصورت یک کلید جداگانه ذخیره کند. جستجوی جدول *وجود داشتن* کلید را اعتبارسنجی میکند. برای بحث بیشتر، به بخش "Postfix lists versus tables" در سند DATABASE_README مراجعه کنید.
جدولهایی ایجاد نکنید که فهرست کامل دامنهها را در $mydestination یا $relay_domains و غیره، یا نشانیهای IP را در $mynetworks بازگردانند.
جدولها را با قرار دادن هر مورد منطبق بهصورت یک کلید و با یک مقدار دلخواه ایجاد کنید. در پایگاههای داده SQL غیرمعمول نیست که خود کلید یا یک مقدار ثابت بازگردانده شود.
پارامترهای SQLITE (SQLITE PARAMETERS)
- dbpath
- مکان فایل
پایگاه
داده SQLite.
نمونه:
dbpath = customer_database
- query
- الگوی
پرسوجوی SQL
مورداستفاده
برای جستجو
در پایگاه
داده، که در
آن %s
جایگزینی
برای
نشانیای
است که Postfix در
تلاش برای
تحلیل آن
است، برای
نمونه:
query = SELECT replacement FROM aliases WHERE mailbox = '%s'
این پارامتر از بسطهای '%' زیر پشتیبانی میکند:
- %%
- این مورد با یک نویسه پیشپاافتاده '%' جایگزین میشود.
- %s
- این مورد با کلید ورودی جایگزین میشود. نقلقولگذاری SQL (SQL quoting) استفاده میشود تا اطمینان حاصل گردد که کلید ورودی نویسههای متا (metacharacters) غیرمنتظره اضافه نمیکند.
- %u
- هنگامی که کلید ورودی یک نشانی به شکل user@domain باشد، %u با بخش محلی (local part) نشانی که نقلقولگذاری SQL شده جایگزین میشود. در غیر این صورت، %u با کل رشته جستجو جایگزین میشود. اگر بخش محلی خالی باشد، پرسوجو متوقف شده و هیچ نتیجهای برنمیگرداند.
- %d
- هنگامی که کلید ورودی یک نشانی به شکل user@domain باشد، %d با بخش دامنه نشانی که نقلقولگذاری SQL شده جایگزین میشود. در غیر این صورت، پرسوجو متوقف شده و هیچ نتیجهای برنمیگرداند.
- %[SUD]
- معادلهای با حروف بزرگ بسطهای بالا در پارامتر query رفتاری کاملاً همسان با همتایان حروف کوچک خود دارند. با پارامتر result_format (زیر را ببینید)، آنها بهجای مقدار نتیجه، کلید ورودی را بسط میدهند.
- %[1-9]
- الگوهای %1، %2، ... %9 با مؤلفه متناظر با بیشترین اهمیت از دامنه کلید ورودی جایگزین میشوند. اگر کلید ورودی user@mail.example.com باشد، آنگاه %1 برابر با com، %2 برابر با example و %3 برابر با mail است. اگر کلید ورودی بدون صلاحیت (unqualified) باشد یا مؤلفههای دامنه کافی برای برآورده کردن تمام الگوهای مشخصشده نداشته باشد، پرسوجو متوقف شده و هیچ نتیجهای برنمیگرداند.
- پارامتر domain
شرح داده
شده در زیر،
کلیدهای
ورودی را به
نشانیهای
دامنههای
منطبق
محدود
میکند.
هنگامی که
پارامتر domain
خالی
نباشد،
پرسوجوهای
SQL برای
نشانیهای
فاقد
صلاحیت یا
نشانیهای
موجود در
دامنههای
غیرمنطبق
متوقف شده و
هیچ
نتیجهای
بازنمیگردانند.
این پارامتر در Postfix نسخه 2.2 و بالاتر در دسترس است. در انتشارهای پیشین، پرسوجوی SQL از پارامترهای جداگانه ساخته میشد: select_field، table، where_field و additional_conditions. نگاشت از پارامترهای قدیمی به پرسوجوی معادل عبارت است از:
SELECT [select_field] FROM [table] WHERE [where_field] = '%s' [additional_conditions]عبارت '%s' در بند WHERE به رشته جستجوی اسکیپشده بسط مییابد. با Postfix نسخه 2.2، اگر پارامتر query مشخص نشده باشد، از این پارامترهای موروثی استفاده میشود.
نکته: دور پارامتر query علامت نقلقول قرار ندهید.
- result_format (پیشفرض: %s)
- الگوی قالب اعمالشده بر ویژگیهای نتیجه. معمولاً برای افزودن متن به انتها (یا ابتدا) نتیجه استفاده میشود. این پارامتر از بسطهای '%' زیر پشتیبانی میکند:
- %%
- این مورد با یک نویسه پیشپاافتاده '%' جایگزین میشود.
- %s
- این مورد با مقدار ویژگی نتیجه جایگزین میشود. هنگامی که نتیجه خالی باشد، از آن صرفنظر میشود.
- %u
- هنگامی که مقدار ویژگی نتیجه نشانیای به شکل user@domain باشد، %u با بخش محلی نشانی جایگزین میشود. هنگامی که نتیجه دارای بخش محلی خالی باشد، از آن صرفنظر میشود.
- %d
- هنگامی که مقدار ویژگی نتیجه نشانیای به شکل user@domain باشد، %d با بخش دامنه مقدار ویژگی جایگزین میشود. هنگامی که نتیجه فاقد صلاحیت باشد، از آن صرفنظر میشود.
- %[SUD1-9]
- بسطهای حروف بزرگ و ارقام دهدهی بهجای نتیجه، بخشهایی از کلید ورودی را درج میکنند. رفتار آنها مشابه همان است که در مورد query شرح داده شد، و در واقع از آنجا که کلید ورودی از قبل مشخص است، پرسوجوهایی که کلید آنها شامل تمام اطلاعات مشخصشده در الگوی نتیجه نباشد متوقف شده و هیچ نتیجهای برنمیگردانند.
- برای
نمونه،
استفاده از
"result_format = smtp:[%s]"
امکان
استفاده از
ویژگی mailHost را
بهعنوان
مبنایی
برای جدول
transport(5) فراهم
میکند. پس
از اعمال
قالب
نتیجه،
مقادیر
چندگانه
بهصورت
رشتههای
جداشده با
کاما به هم
متصل
میشوند.
پارامتر expansion_limit
که در ادامه
توضیح داده
شده است،
اجازه
میدهد
تعداد
مقادیر در
نتیجه
محدود شود،
که بهویژه
برای
نگاشتهایی
که باید
حداکثر یک
مقدار
بازگردانند
مفید است.
مقدار پیشفرض %s مشخص میکند که هر مقدار نتیجه باید همانگونه که هست استفاده شود.
این پارامتر در Postfix نسخه 2.2 و بالاتر در دسترس است.
نکته: دور قالب نتیجه (result format) نقلقول قرار ندهید!
- domain (پیشفرض: بدون فهرست دامنه)
- این
گزینهای
است شامل
فهرستی از
نامهای
دامنه،
مسیرهای
فایلها،
یا
پایگاههای
داده "type:table". در
صورت
تعیین،
تنها
کلیدهای
جستجوی
واجد شرایط
کامل با بخش
محلی
*غیرخالی* و
دامنه
منطبق،
واجد شرایط
جستجو
هستند:
جستجوهای
'user'،
جستجوهای
صرفاً
دامنه و
جستجوهای
"@domain" انجام
نمیشوند.
این امر
میتواند
بار
پرسوجو
روی سرور SQLite
را بهطور
چشمگیری
کاهش دهد.
domain = postfix.org, hash:/etc/postfix/searchdomains
بهتر است از SQL برای ذخیره دامنههای واجد شرایط جستجوهای SQL استفاده نشود.
این پارامتر در Postfix نسخه 2.2 و بالاتر در دسترس است.
نکته: این پارامتر را برای نامهای مستعار local(8) تعریف نکنید، زیرا کلیدهای ورودی همیشه فاقد صلاحیت (unqualified) هستند.
- expansion_limit (پیشفرض: 0)
- محدودیتی برای تعداد کل عناصر نتیجه بازگرداندهشده (بهصورت یک فهرست جداشده با کاما) توسط یک جستجو در نگاشت. مقدار صفر محدودیت را غیرفعال میکند. در صورت فراتر رفتن از حد مجاز، جستجوها با یک خطای موقت مواجه میشوند. تنظیم این محدودیت روی 1 تضمین میکند که جستجوها مقادیر چندگانه بازنگردانند.
پارامترهای منسوخ MAIN.CF (OBSOLETE MAIN.CF PARAMETERS)
برای سازگاری با سایر جدولهای جستجوی Postfix، پارامترهای SQLite را میتوان در main.cf نیز تعریف کرد. برای این کار، بهعنوان منبع SQLite نامی را مشخص کنید که با یک اسلش یا نقطه شروع نشود. سپس پارامترهای SQLite با نامی که برای منبع در تعریف آن تعیین کردهاید، یک زیرخط (_) و نام پارامتر در دسترس خواهند بود. برای نمونه، اگر نگاشت بهصورت "sqlite:sqlitename" مشخص شود، پارامتر "query" در main.cf بهصورت "sqlitename_query" تعریف خواهد شد.
رابط کاربری منسوخ پرسوجو (OBSOLETE QUERY INTERFACE)
این بخش رابطی را شرح میدهد که از نسخه 2.2 نرمافزار Postfix منسوخ شده است. این رابط با رابط عمومیتر query که در بالا شرح داده شد جایگزین گردیده است. اگر پارامتر query تعریف شده باشد، پارامترهای موروثی شرحدادهشده در اینجا نادیده گرفته میشوند. لطفاً به رابط جدید مهاجرت کنید زیرا رابط موروثی ممکن است در انتشارهای آینده حذف شود.
پارامترهای زیر میتوانند برای پر کردن یک عبارت الگوی SELECT به شکل زیر استفاده شوند:
SELECT [select_field]
FROM [table]
WHERE [where_field] = '%s'
[additional_conditions]
مشخصکننده %s با رشته جستجو جایگزین میشود و اسکیپ میشود تا در صورتی که شامل علامت نقلقول تکی یا سایر نویسههای غیرمعمول باشد، باعث بروز خطای تجزیه و بدتر از آن، مشکل امنیتی نگردد.
- select_field
- پارامتر
"select" در SQL.
نمونه:
select_field = forw_addr
- table
- نام جدول "select ..
from" در SQL. نمونه:
table = mxaliases
- where_field
- پارامتر "select ..
where" در SQL.
نمونه:
where_field = alias
- additional_conditions
- شرایط
اضافی برای
پرسوجوی SQL.
نمونه:
additional_conditions = AND status = 'paid'
همچنین ببینید (SEE ALSO)
postmap(1)، نگهداری جدول جستجوی Postfix postconf(5)، پارامترهای پیکربندی ldap_table(5)، جدولهای جستجوی LDAP mysql_table(5)، جدولهای جستجوی MySQL pgsql_table(5)، جدولهای جستجوی PostgreSQL
فایلهای راهنما (README FILES)
از "postconf readme_directory" یا "postconf html_directory" برای یافتن مکان این اطلاعات استفاده کنید.
DATABASE_README، نمای کلی جدول جستجوی Postfix SQLITE_README، راهنمای SQLite در Postfix
مجوز (LICENSE)
مجوز ایمیلرسان امن (Secure Mailer license) باید همراه با این نرمافزار توزیع شود.
تاریخچه (HISTORY)
پشتیبانی از SQLite در نسخه 2.8 نرمافزار Postfix معرفی شد.
نویسندگان (AUTHORS)
پیادهسازی اولیه توسط: Axel Steiner