| MYSQL_TABLE(5) | File Formats Manual | MYSQL_TABLE(5) |
نام (NAME)
mysql_table - پیکربندی کارخواه MySQL/MariaDB در Postfix
خلاصه دستور (SYNOPSIS)
?Bpostmap -q "?Istring?B" mysql:/etc/postfix/?Ifilename?R ?Bpostmap -q - mysql:/etc/postfix/?Ifilename?B <?Iinputfile?R
توضیحات (DESCRIPTION)
سیستم ایمیل Postfix از جدولهای اختیاری برای بازنویسی نشانی یا مسیریابی ایمیل استفاده میکند. این جدولها معمولاً در قالبهای ?Blmdb:?R، ?Bcdb:?R، ?Bhash:?R یا ?Bdbm:?R هستند.
به عنوان یک جایگزین، جدولهای جستجو میتوانند به عنوان پایگاههای داده MySQL مشخص شوند. برای اطلاع از اینکه سیستم Postfix شما از چه انواع جدولهای جستجویی پشتیبانی میکند، از دستور «?Bpostconf -m?R» استفاده کنید.
برای استفاده از جستجوهای MySQL، یک منبع MySQL را به عنوان جدول جستجو در main.cf تعریف کنید؛ برای نمونه:
alias_maps = mysql:/etc/postfix/mysql-aliases.cf
فایل etc/postfix/mysql-aliases.cf/ قالبی مشابه فایل main.cf پستفیکس دارد، و میتواند پارامترهای شرحدادهشده در زیر را مشخص کند.
اگرچه نام مؤلفه در Postfix برابر با 'mysql' است، کارخواهها و کارسازهای MariaDB/MySQL میتوانند به جای یکدیگر استفاده شوند زیرا عملکردی که Postfix به آن وابسته است در هر دو موجود است. با این حال، پایگاه کد آنها ممکن است در آینده از هم فاصله بگیرد.
عضویت در فهرست (LIST MEMBERSHIP)
هنگام استفاده از SQL برای ذخیره فهرستهایی مانند mynetworks$، mydestination$، relay_domains$، local_recipient_maps$ و غیره، درک این نکته مهم است که جدول باید هر عضو فهرست را به عنوان یک کلید جداگانه ذخیره کند. جستجوی جدول *وجود داشتن* کلید را بررسی میکند. برای توضیحات بیشتر، بخش "Postfix lists versus tables" را در سند DATABASE_README ببینید.
جدولهایی ایجاد نکنید که کل فهرست دامنهها در mydestination$ یا relay_domains$ یا نشانیهای IP در mynetworks$ را بازگردانند.
جدولهایی ایجاد کنید که هر مورد منطبق را به عنوان یک کلید و با یک مقدار اختیاری داشته باشند. در پایگاههای داده SQL معمول است که خود کلید یا یک مقدار ثابت بازگردانده شود.
پارامترهای MYSQL (MYSQL PARAMETERS)
- ?Bhosts?R
- میزبانهایی
که Postfix برای
اتصال و
پرسوجو به
آنها تلاش
خواهد کرد.
برای
سوکتهای
دامنه
یونیکس ?Iunix:?R و
برای
اتصالات TCP
عبارت ?Iinet:?R
(پیشفرض)
را مشخص
کنید.
مثالها:
hosts = inet:host1.some.domain inet:host2.some.domain:port hosts = host1.some.domain host2.some.domain:port hosts = unix:/file/name
میزبانها به ترتیب تصادفی بررسی میشوند و تمام اتصالات روی سوکتهای دامنه یونیکس پیش از اتصالات روی TCP بررسی خواهند شد. اتصالات پس از حدود ۱ دقیقه بیکاری به طور خودکار بسته میشوند و در صورت نیاز مجدداً باز خواهند شد. نسخههای 2.0 و پیشین پستفیکس ترتیب میزبانها را تصادفی نمیکردند.
نکته: اگر localhost را به عنوان نام میزبان مشخص کنید (حتی با پیشوند ?Iinet:?R)، MySQL به سوکت دامنه یونیکس پیشفرض متصل خواهد شد. برای دستور به MySQL جهت اتصال به localhost از طریق TCP باید مشخص کنید:
hosts = 127.0.0.1
نکته: اگر تنظیم ?Bhosts?R تنها یک سرور را مشخص کند، این کارخواه فرض میکند که مقصد یک متعادلکننده بار (load balancer) است و بلافاصله پس از یک شکست مجدداً متصل میشود. در نسخههای 3.9 و پیشین پستفیکس، همان سرور را دو بار مشخص کنید.
- ?Buser?R
- ?Bpassword?R
- نام کاربری
و گذرواژه
برای ورود
به سرور MySQL.
مثال:
user = someone password = some_password
- ?Bdbname?R
- نام پایگاه
داده روی
سرورها.
مثال:
dbname = customer_database
- ?Bcharset (پیشفرض: utf8mb4)?R
- مجموعه
نویسههای
پیشفرض
کارخواه MySQL؛
این مورد
ترتیب
تطبیق (collation) را
نیز در بر
میگیرد.
این پارامتر در نسخه 3.9 و بالاتر Postfix در دسترس است. در نسخههای پیشین، مقدار پیشفرض توسط پیادهسازی MySQL انتخاب میشد (?Butf8mb4?R در MySQL 8.0 به بعد، و از نظر تاریخی ?Blatin1?R).
- ?Bidle_interval (پیشفرض: 60)?R
- تعداد
ثانیههایی
که پس از آن
یک اتصال
پایگاه
داده بیکار
بسته خواهد
شد.
این قابلیت در نسخه 3.9 و بالاتر Postfix در دسترس است.
- ?Bretry_interval (پیشفرض: 60)?R
- تعداد
ثانیههایی
که یک اتصال
پایگاه
داده پس از
بروز خطا
نادیده
گرفته
میشود.
نکته: اگر ?Bhosts?R تنها یک سرور را مشخص کند، این کارخواه فرض میکند که مقصد یک متعادلکننده بار است و بلافاصله پس از یک شکست مجدداً متصل میشود. در نسخههای 3.9 و پیشین همان سرور را دو بار مشخص کنید.
این قابلیت در نسخه 3.9 و بالاتر Postfix در دسترس است.
- ?Bquery?R
- الگوی
پرسوجوی SQL
مورد
استفاده
برای جستجو
در پایگاه
داده، که در
آن ?B%s?R
جایگزینی
برای
نشانیای
است که Postfix در
تلاش برای
تحلیل آن
است، به
عنوان
نمونه:
query = SELECT replacement FROM aliases WHERE mailbox = '%s'
به طور پیشفرض، هر پرسوجو باید یک مجموعه نتیجه بازگرداند (به جای ذخیره نتایج در جدول)؛ با «?Brequire_result_set = no?R» (در Postfix 3.2 و بالاتر)، نبود مجموعه نتیجه به عنوان «یافت نشد» تلقی میشود.
این پارامتر از بسطهای '%' زیر پشتیبانی میکند:
- ?B%%?R
- با نویسه نویسهبهنویسه '%' جایگزین میشود.
- ?B%s?R
- با کلید ورودی جایگزین میشود. نقلقولگذاری SQL برای اطمینان از اینکه کلید ورودی نویسههای متا غیرمنتظرهای اضافه نمیکند اعمال میشود.
- ?B%u?R
- هنگامی که کلید ورودی یک نشانی به فرم user@domain باشد، ?B%u?R با بخش محلی نشانی (نقلقولشده در SQL) جایگزین میشود. در غیر این صورت با کل رشته جستجو جایگزین میشود. اگر بخش محلی خالی باشد، پرسوجو متوقف شده و هیچ نتیجهای برنمیگرداند.
- ?B%d?R
- هنگامی که کلید ورودی یک نشانی به فرم user@domain باشد، ?B%d?R با بخش دامنه نشانی (نقلقولشده در SQL) جایگزین میشود. در غیر این صورت پرسوجو متوقف میشود.
- ?B%[SUD]?R
- معادلهای حروف بزرگ بسطهای بالا در پارامتر ?Bquery?R عملکردی کاملاً مشابه همتاهای حروف کوچک خود دارند. با پارامتر ?Bresult_format?R (در ادامه ببینید)، آنها کلید ورودی را به جای مقدار نتیجه بسط میدهند.
- ?B%[1-9]?R
- الگوهای %1، %2، ... %9 با مهمترین جزء متناظر دامنه کلید ورودی جایگزین میشوند. اگر کلید ورودی ?Iuser@mail.example.com?R باشد، %1 برابر با ?Bcom?R، %2 برابر با ?Bexample?R و %3 برابر با ?Bmail?R خواهد بود. اگر کلید ورودی بدون صلاحیت باشد یا اجزای دامنه کافی برای برآورده کردن تمام الگوها نداشته باشد، پرسوجو متوقف میشود.
- پارامتر ?Bdomain?R
که در ادامه
شرح داده
شده است،
کلیدهای
ورودی را به
نشانیهای
موجود در
دامنههای
منطبق
محدود
میکند.
هنگامی که
پارامتر ?Bdomain?R
غیرخالی
باشد،
پرسوجوهای
SQL برای
نشانیهای
نامعتبر یا
نشانیهای
موجود در
دامنههای
غیرمنطبق
متوقف
میشوند و
نتیجهای
برنمیگردانند.
این پارامتر در نسخه 2.2 Postfix موجود است. در نسخههای قبلی پرسوجوی SQL از پارامترهای جداگانه ساخته میشد: ?Bselect_field?R، ?Btable?R، ?Bwhere_field?R و ?Badditional_conditions?R. نگاشت از پارامترهای قدیمی به پرسوجوی معادل چنین است:
SELECT [?Bselect_field?R] FROM [?Btable?R] WHERE [?Bwhere_field?R] = '%s' [?Badditional_conditions?R]مقدار '%s' در بند ?BWHERE?R به رشته جستجوی اسکیپشده بسط مییابد. در نسخه 2.2 پستفیکس اگر پارامتر ?Bquery?R مشخص نشده باشد از این پارامترهای موروثی استفاده میشود.
نکته: اطراف پارامتر query نقلقول قرار ندهید.
- ?Bresult_format (پیشفرض: ?B%s?R)?R
- الگوی قالب اعمالشده بر ویژگیهای نتیجه. معمولاً برای افزودن متن به انتها (یا ابتدا) نتیجه استفاده میشود. این پارامتر از بسطهای '%' زیر پشتیبانی میکند:
- ?B%%?R
- با نویسه واقعی '%' جایگزین میشود.
- ?B%s?R
- با مقدار ویژگی نتیجه جایگزین میشود. وقتی نتیجه خالی باشد نادیده گرفته میشود.
- ?B%u?R
- وقتی مقدار ویژگی نتیجه نشانیای به فرم user@domain باشد، ?B%u?R با بخش محلی نشانی جایگزین میشود. در صورت خالی بودن بخش محلی نادیده گرفته میشود.
- ?B%d?R
- وقتی مقدار ویژگی نتیجه نشانیای به فرم user@domain باشد، ?B%d?R با بخش دامنه مقدار ویژگی جایگزین میشود. هنگامی که نتیجه بدون دامنه باشد نادیده گرفته میشود.
- ?B%[SUD1-9]?R
- بسطهای حروف بزرگ و ارقام دهدهی به جای نتیجه، بخشهایی از کلید ورودی را جایگذاری میکنند. رفتار آنها مشابه موارد شرح داده شده در ?Bquery?R است.
- برای
نمونه،
استفاده از
"result_format = smtp:[%s]"
اجازه
میدهد تا
از یک ویژگی
mailHost به عنوان
پایه یک
جدول transport(5)
استفاده
شود. پس از
اعمال قالب
نتیجه،
مقادیر
چندگانه به
عنوان
رشتههای
جدا شده با
کاما به هم
متصل
میشوند.
پارامتر expansion_limit
که در ادامه
توضیح داده
شده اجازه
میدهد
تعداد
مقادیر
نتیجه را
محدود کنید.
مقدار پیشفرض ?B%s?R مشخص میکند که هر مقدار نتیجه همانطور که هست استفاده شود.
این پارامتر در نسخه 2.2 و بالاتر Postfix در دسترس است.
نکته: اطراف قالب نتیجه (result_format) نقلقول قرار ندهید!
- ?Bdomain (پیشفرض: بدون فهرست دامنه)?R
- این یک
فهرست از
نامهای
دامنه،
مسیر
فایلها یا
پایگاههای
داده "type:table"
است. در
صورت مشخص
شدن، تنها
کلیدهای
جستجوی
کامل با یک
بخش محلی
*غیرخالی* و
یک دامنه
منطبق واجد
شرایط
جستجو
هستند:
جستجوهای
'user'،
جستجوهای
دامنه تنها
و جستجوهای
"domain@" انجام
نمیشوند.
این امر
میتواند
بار
پرسوجو
روی سرور MySQL
را به طور
چشمگیری
کاهش دهد.
domain = postfix.org, hash:/etc/postfix/searchdomains
بهتر است از SQL برای ذخیره دامنههای واجد شرایط جستجوهای SQL استفاده نکنید.
این پارامتر در نسخه 2.2 و بالاتر Postfix در دسترس است.
نکته: این پارامتر را برای نامهای مستعار local(8) تعریف نکنید، زیرا کلیدهای ورودی همیشه بدون دامنه هستند.
- ?Bexpansion_limit (پیشفرض: 0)?R
- محدودیت روی تعداد کل عناصر نتیجه بازگردانده شده (به صورت فهرست جدا شده با کاما). مقدار صفر این محدودیت را غیرفعال میکند. در صورت فراتر رفتن از حد مجاز، جستجوها با یک خطای موقت شکست میخورند. تنظیم حد روی 1 تضمین میکند که جستجوها مقادیر چندگانه برنمیگردانند.
- ?Boption_file?R
- خواندن
گزینهها
از فایل
مشخصشده
به جای مکان
پیشفرض my.cnf.
این گزینه
گزینهها
را از گروه
گزینه ?B[client]?R
میخواند،
که به صورت
اختیاری
گزینههای
گروه
مشخصشده
با ?Boption_group?R به
دنبال آن
میآیند.
این پارامتر در نسخه 2.11 و بالاتر Postfix در دسترس است.
- ?Boption_group (پیشفرض: در Postfix >=3.2 برابر client، در <= 3.1 خالی)?R
- خواندن
گزینهها
از گروه
مشخصشده
در فایل
گزینههای
mysql، پس از
خواندن
گزینهها
از گروه ?B[client]?R.
پستفیکس 3.2 و بالاتر تنظیمات گروه ?B[client]?R را به صورت پیشفرض میخوانند. برای غیرفعال کردن این مورد هیچ ?Boption_file?R را مشخص نکنید و مقدار "?Boption_group =?R" (مقدار خالی) را تعیین کنید.
این پارامتر در نسخه 2.11 و بالاتر Postfix در دسترس است.
- ?Brequire_result_set (پیشفرض: yes)?R
- در صورت
تنظیم روی
"?Byes?R"، الزام
به اینکه هر
پرسوجو یک
مجموعه
نتیجه
بازگرداند.
اگر "?Bno?R"
باشد، نبود
مجموعه
نتیجه به
عنوان
«یافت نشد»
تلقی
میشود.
این پارامتر در نسخه 3.2 و بالاتر Postfix در دسترس است.
تنظیمات مربوط به TLS (TLS-RELATED SETTINGS)
برای جزئیات قابلیتهای زمینهای MYSQL_OPT_SSL_* به نشانیهای https://dev.mysql.com/doc/c-api/en/mysql-options.html یا https://mariadb.com/kb/en/mysql_optionsv مراجعه فرمایید.
- ?Btls_cert_file?R
- فایل حاوی
گواهی X509
کارخواه.
این پارامتر در نسخه 2.11 و بالاتر Postfix در دسترس است.
- ?Btls_key_file?R
- فایل حاوی
کلید خصوصی
متناظر با
?Btls_cert_file?R.
این پارامتر در نسخه 2.11 و بالاتر Postfix در دسترس است.
- ?Btls_CAfile?R
- فایل حاوی
گواهیهای
X509 برای
تمامی
مراجع صدور
گواهی که
کارخواه
شناسایی
میکند. بر
?Btls_CApath?R تقدم
دارد.
این پارامتر در نسخه 2.11 و بالاتر Postfix در دسترس است.
- ?Btls_CApath?R
- دایرکتوری
حاوی
گواهیهای
مرجع صدور
گواهی X509 در
فایلهای
مجزای
جداگانه.
این پارامتر در نسخه 2.11 و بالاتر Postfix در دسترس است.
- ?Btls_ciphers?R
- فهرست
رمزهای
مجاز برای
رمزنگاری SSL.
این پارامتر در نسخه 2.11 و بالاتر Postfix در دسترس است.
- ?Btls_verify_cert (پیشفرض: no)?R
- اعتبارسنجی
اینکه نام
سرور با نام
مشترک (CN) در
گواهی
مطابقت
دارد یا
خیر.
این پارامتر در نسخه 2.11 و بالاتر Postfix در دسترس است.
استفاده از روالهای ذخیرهشده MYSQL (USING MYSQL STORED PROCEDURES)
پستفیکس 3.2 و بالاتر از فراخوانی یک روال ذخیرهشده (stored procedure) به جای استفاده از دستور SELECT در query پشتیبانی میکنند؛ برای نمونه:
?Bquery?R = CALL lookup('%s')
بسطهای '%' که پیشتر شرح داده شدند میتوانند در پارامترهای ارسالی به روال ذخیرهشده استفاده شوند.
به طور پیشفرض، هر فراخوانی روال ذخیرهشده باید یک مجموعه نتیجه بازگرداند، یعنی هر مسیر کد باید یک دستور SELECT را اجرا کند که مجموعه نتیجه بازمیگرداند. با «?Brequire_result_set = no?R»، نبود مجموعه نتیجه به عنوان «یافت نشد» تلقی میشود.
یک روال ذخیرهشده نباید چندین مجموعه نتیجه بازگرداند.
نمونه زیر یک روال ذخیرهشده را نشان میدهد که یک مجموعه نتیجه منفرد بازمیگرداند:
CREATE [DEFINER=`user`@`host`] PROCEDURE
`lookup`(IN `param` VARCHAR(255))
READS SQL DATA
SQL SECURITY INVOKER
BEGIN
select goto from alias where address=param;
END
پارامترهای منسوخ MAIN.CF (OBSOLETE MAIN.CF PARAMETERS)
برای سازگاری با سایر جدولهای جستجوی Postfix، پارامترهای MySQL میتوانند در main.cf نیز تعریف شوند. برای انجام این کار، به عنوان منبع MySQL نامی را مشخص کنید که با اسلش یا نقطه آغاز نمیشود. پارامترهای MySQL به عنوان نامی که در تعریف به منبع دادهاید، یک خط زیرین (_) و نام پارامتر در دسترس خواهند بود. برای نمونه، اگر جدول به صورت "mysql:?Imysqlname?R" مشخص شود، پارامتر "hosts" در main.cf به صورت "?Imysqlname?R_hosts" تعریف میشود.
نکته: در این روش، گذرواژهها برای منابع MySQL در main.cf نوشته میشوند که معمولاً برای همه کاربران قابل خواندن است. پشتیبانی از این فرم در نسخههای آینده حذف خواهد شد.
رابط پرسوجوی منسوخ (OBSOLETE QUERY INTERFACE)
این بخش رابطی را توصیف میکند که از نسخه 2.2 Postfix منسوخ شده است. این رابط با رابط عمومیتر ?Bquery?R که در بالا شرح داده شد جایگزین گردیده است. اگر پارامتر ?Bquery?R تعریف شده باشد، پارامترهای موروثی شرحدادهشده در اینجا نادیده گرفته میشوند. لطفاً به رابط جدید مهاجرت فرمایید زیرا رابط قدیمی در نسخههای آینده حذف خواهد شد.
پارامترهای زیر میتوانند برای پر کردن یک الگوی دستور SELECT استفاده شوند:
SELECT [?Bselect_field?R]
FROM [?Btable?R]
WHERE [?Bwhere_field?R] = '%s'
[?Badditional_conditions?R]
مشخصکننده s% با رشته جستجو جایگزین شده و اسکیپ میشود تا در صورتی که حاوی نقلقول تکی یا سایر نویسههای خاص باشد، خطای تجزیه یا مشکل امنیتی ایجاد نکند.
- ?Bselect_field?R
- پارامتر
"select" در SQL. مثال:
?Bselect_field?R = forw_addr
- ?Btable?R
- نام جدول "select ..
from" در SQL. مثال:
?Btable?R = mxaliases
- ?Bwhere_field?R
- پارامتر "select ..
where" در SQL. مثال:
?Bwhere_field?R = alias
- ?Badditional_conditions?R
- شرایط
اضافی برای
پرسوجوی SQL.
مثال:
?Badditional_conditions?R = AND status = 'paid'
همچنین ببینید (SEE ALSO)
postmap(1), نگهداری جدول جستجوی Postfix postconf(5), پارامترهای پیکربندی ldap_table(5), جدولهای جستجوی LDAP pgsql_table(5), جدولهای جستجوی PostgreSQL sqlite_table(5), جدولهای جستجوی SQLite
فایلهای راهنما (README FILES)
از دستور «?Bpostconf readme_directory?R» یا «?Bpostconf html_directory?R» برای مکانیابی این اطلاعات استفاده کنید.
DATABASE_README, بررسی اجمالی جدول جستجوی Postfix MYSQL_README, راهنمای کارخواه MYSQL در Postfix
مجوز (LICENSE)
مجوز Secure Mailer باید همراه با این نرمافزار توزیع شود.
تاریخچه (HISTORY)
پشتیبانی از MySQL با نسخه 1.0 پستفیکس معرفی شد.
نویسندگان (AUTHORS)
پیادهسازی اولیه توسط: Scott Cotton, Joshua Marcus IC Group, Inc. بهبودهای بیشتر توسط: Liviu Daia Institute of Mathematics of the Romanian Academy P.O. BOX 1-764 RO-014700 Bucharest, ROMANIA پشتیبانی از روال ذخیرهشده توسط John Fawcett. Wietse Venema Google, Inc. 111 8th Avenue New York, NY 10011, USA