POSTMAP(1) General Commands Manual POSTMAP(1)

postmap - مدیریت جدول‌های جستجوی Postfix

postmap [-bfFhijmnNoprsuUvw] [-c config_dir] [-d key] [-q key]
[file_type:]file_name ...


دستور postmap(1) یک یا چند جدول جستجوی Postfix را ایجاد یا جستجو کرده، یا جدولی موجود را به‌روزرسانی می‌کند.

اگر فایل‌های خروجی وجود نداشته باشند، با همان مجوزهای خواندن گروهی و دیگران (other) که فایل منبع دارد ایجاد خواهند شد.

هنگامی که به‌روزرسانی جدول در حال انجام است، تحویل سیگنال به تعویق می‌افتد و یک قفل انحصاری توصیه‌ای (advisory lock) بر روی کل جدول اعمال می‌شود تا از بروز رفتارهای غیرمنتظره در فرآیندهای نظاره‌گر جلوگیری شود.

قالب فایل ورودی جدول جستجو به شرح زیر است:

  • یک مدخل جدول به صورت زیر است:
    key whitespace value
  • خطوط خالی و خطوطی که تنها شامل فاصله‌های خالی هستند نادیده گرفته می‌شوند، همان‌طور که خطوطی که اولین نویسه غیرفاصله‌ای آن‌ها `#` است نادیده گرفته می‌شوند.
  • یک خط منطقی با متنی غیر از فاصله خالی آغاز می‌شود. خطی که با فاصله خالی شروع شود، ادامه‌دهنده یک خط منطقی است.

مقادیر key و value همان‌گونه که هستند پردازش می‌شوند، با این تفاوت که فاصله‌های خالی پیرامون آن‌ها حذف می‌گردد. نویسه‌های فاصله خالی در کلیدهای جستجو از نسخه ۳.۲ به بعد Postfix، با قرار دادن کلید در میان نویسه‌های نقل‌قول جفت `"` پشتیبانی می‌شود. در داخل نقل‌قول جفت، نویسه‌های نقل‌قول جفت `"` و بک‌اسلش `` را می‌توان با درج یک بک‌اسلش پیش از آن‌ها قرار داد.

هنگامی که گزینه -F مشخص شود، value باید یک یا چند نام فایل را تعیین کند که با کاما و/یا فاصله خالی از هم جدا شده‌اند؛ postmap(1) محتوای فایل‌ها را به یکدیگر متصل می‌کند (با درج یک نویسه خط جدید میان فایل‌ها) و نتیجه کدگذاری‌شده به صورت base64 را به جای value ذخیره می‌نماید.

هنگامی که key اطلاعات آدرس ایمیل را مشخص می‌کند، در صورتی که توسط RFC 5322 الزامی شده باشد، بخش محلی (localpart) باید در میان نقل‌قول جفت قرار گیرد؛ برای نمونه، localpart آدرسی که شامل «;» است، یا با «.» شروع یا پایان می‌یابد.

به‌طور پیش‌فرض، کلید جستجو برای حساس نبودن جستجوها به بزرگی و کوچکی حروف، به حروف کوچک تبدیل می‌شود؛ از نسخه ۲.۳ به بعد Postfix این تبدیل حروف تنها برای جدول‌هایی رخ می‌دهد که کلیدهای جستجوی آن‌ها رشته‌هایی با حروف ثابت (fixed-case) باشند، مانند btree:، dbm: یا hash:. در نسخه‌های قدیمی‌تر، کلید جستجو حتی برای جدول‌هایی که فیلد جستجو می‌تواند با هر دو حروف بزرگ و کوچک تطبیق یابد (مانند regexp: و pcre:) نیز تبدیل می‌شد. این امر منجر به از دست رفتن اطلاعات در جایگزینی‌های $number می‌گردید.

فعال‌سازی حالت پرس‌وجوی متن پیام (body query mode). هنگام خواندن کلیدهای جستجو از ورودی استاندارد با «-q -»، ورودی طوری پردازش می‌شود که گویی یک پیام ایمیل با قالب RFC 5322 است. هر خط از محتوای متن پیام به یک کلید جستجو تبدیل می‌شود.

به‌طور پیش‌فرض، گزینه -b تولید کلیدهای جستجو را از اولین خط غیرسربرگ آغاز کرده و با رسیدن به انتهای پیام متوقف می‌شود. برای شبیه‌سازی پردازش body_checks(5)، تجزیه MIME را با -m فعال کنید. با این کار، گزینه -b هیچ کلید جستجویی به سبک متن پیام برای سربرگ‌های MIME پیوست و سربرگ‌های message/* پیوست‌شده تولید نمی‌کند.

نکته: با «smtputf8_enable = yes»، گزینه -b بررسی‌های نحوی UTF-8 را روی کلیدهای پرس‌وجو و نتایج جستجو غیرفعال می‌کند. برای اجبار بررسی‌های نحوی UTF-8 در هر حال، گزینه -U را مشخص کنید.

این ویژگی در Postfix نسخه ۲.۶ و بالاتر در دسترس است.

خواندن فایل پیکربندی main.cf از دایرکتوری مشخص‌شده به جای دایرکتوری پیش‌فرض پیکربندی.
جستجوی جدول‌های نگاشت مشخص‌شده برای یافتن key و حذف یک مدخل از هر نگاشت. در صورت یافتن اطلاعات درخواستی، وضعیت خروج صفر خواهد بود.

اگر مقدار کلید به صورت - مشخص شود، برنامه مقادیر کلید را از جریان ورودی استاندارد می‌خواند. در صورتی که حداقل یکی از کلیدهای درخواستی یافت شود، وضعیت خروج صفر خواهد بود.

هنگام ایجاد یا جستجوی یک جدول، حروف کلید جستجو به حروف کوچک تبدیل نشود.

از نسخه ۲.۳ به بعد Postfix، این گزینه برای جدول‌های عبارت منظم (regular expression) هیچ تأثیری ندارد؛ در آنجا، تبدیل بزرگی و کوچکی حروف با افزودن پرچم به الگو کنترل می‌شود.

هنگام پرس‌وجو یا فهرست کردن یک جدول نگاشت، هر مقدار را از base64 رمزگشایی کن. هنگام ایجاد یک نگاشت از فایل منبع، هر مقدار را به عنوان فهرستی از نام‌های فایل پردازش کرده، محتوای آن فایل‌ها را متصل کن و نتیجه کدگذاری‌شده به صورت base64 را به جای مقدار ذخیره نما (برای جزئیات به بخش «قالب فایل ورودی» مراجعه کنید).

این ویژگی در Postfix نسخه ۳.۴ و بالاتر در دسترس است.

فعال‌سازی حالت پرس‌وجوی سربرگ پیام (header query mode). هنگام خواندن کلیدهای جستجو از ورودی استاندارد با «-q -»، ورودی طوری پردازش می‌شود که گویی یک پیام ایمیل با قالب RFC 5322 است. هر خط سربرگ منطقی به یک کلید جستجو تبدیل می‌شود. یک سربرگ چندخطی به یک کلید جستجو با یک یا چند نویسه خط جدیدِ تعبیه‌شده تبدیل می‌گردد.

به‌طور پیش‌فرض، گزینه -h تا رسیدن به نخستین خط غیرسربرگ کلیدهای جستجو تولید می‌کند. برای شبیه‌سازی پردازش header_checks(5)، تجزیه MIME را با -m فعال کنید. با این کار، گزینه -h همچنین کلیدهای جستجو به سبک سربرگ را برای سربرگ‌های MIME پیوست و سربرگ‌های message/* پیوست‌شده تولید می‌نماید.

نکته: با «smtputf8_enable = yes»، گزینه -h بررسی‌های نحوی UTF-8 را روی کلیدهای پرس‌وجو و نتایج جستجو غیرفعال می‌کند. برای اجبار بررسی‌های نحوی UTF-8 در هر حال، گزینه -U را مشخص کنید.

این ویژگی در Postfix نسخه ۲.۶ و بالاتر در دسترس است.

حالت افزایشی (Incremental mode). مدخل‌ها را از ورودی استاندارد می‌خواند و پایگاه‌داده موجود را کوتاه/پاک (truncate) نمی‌کند. به‌طور پیش‌فرض، postmap(1) یک پایگاه‌داده جدید از روی مدخل‌های موجود در file_name ایجاد می‌کند.
خروجی JSON. خروجی -q و -s را به صورت یک شیء {"key": "value"} در هر خط قالب‌بندی می‌کند.

این ویژگی در Postfix نسخه ۳.۱۱ و بالاتر در دسترس است.

فعال‌سازی تجزیه MIME همراه با «-b» و «-h».

این ویژگی در Postfix نسخه ۲.۶ و بالاتر در دسترس است.

گنجاندن نویسه تهی پایانی (null character) که کلیدها و مقادیر جستجو را خاتمه می‌دهد. به‌طور پیش‌فرض، postmap(1) هر آنچه را که پیش‌فرض سیستم‌عامل میزبان باشد اعمال می‌کند.
نگنجاندن نویسه تهی پایانی که کلیدها و مقادیر جستجو را خاتمه می‌دهد. به‌طور پیش‌فرض، postmap(1) هر آنچه را که پیش‌فرض سیستم‌عامل میزبان باشد اعمال می‌کند.
هنگام پردازش یک فایل ورودی غیرریشه، امتیازات ریشه رها نشود. به‌طور پیش‌فرض، postmap(1) امتیازات ریشه را کنار گذاشته و با هویت مالک فایل منبع اجرا می‌شود.
هنگام ایجاد یک فایل جدید، مجوزهای دسترسی از فایل ورودی به ارث برده نشود؛ در عوض، فایل جدید با مجوزهای دسترسی پیش‌فرض (حالت 0644) ساخته شود.
جستجوی جدول‌های نگاشت مشخص‌شده برای یافتن key و نوشتن اولین مقدار یافت‌شده در جریان خروجی استاندارد. در صورت یافتن اطلاعات درخواستی، وضعیت خروج صفر خواهد بود.

نکته: این دستور تنها یک پرس‌وجوی منفرد با کلید مشخص‌شده انجام می‌دهد و پرس‌وجوهای تکرارشونده با زیررشته‌های کلید (مشابه آنچه برای access(5)، canonical(5)، transport(5)، virtual(5) و دیگر ویژگی‌های جدول‌محور Postfix شرح داده شده) انجام نمی‌دهد.

اگر مقدار کلید به صورت - مشخص شود، برنامه مقادیر کلید را از جریان ورودی استاندارد خوانده و به ازای هر کلید یافت‌شده، یک خط خروجی به شکل key value می‌نویسد. در صورتی که حداقل یکی از کلیدهای درخواستی یافت شود، وضعیت خروج صفر خواهد بود.

هنگام به‌روزرسانی جدول، تلاشی برای تغییر دادن مدخل‌های موجود را به عنوان خطا تلقی نکن و آن به‌روزرسانی‌ها را در هر صورت اعمال کن.
بازیابی همه عناصر پایگاه‌داده و نوشتن یک خط خروجی key value برای هر عنصر. عناصر به ترتیب ذخیره در پایگاه‌داده چاپ می‌شوند که لزوماً با ترتیب ورودی اولیه یکسان نیست.

این ویژگی در Postfix نسخه ۲.۲ و بالاتر در دسترس بوده و برای همه انواع پایگاه‌داده پشتیبانی نمی‌شود.

غیرفعال‌سازی پشتیبانی از UTF-8. پشتیبانی از UTF-8 به‌طور پیش‌فرض هنگامی که "smtputf8_enable = yes" باشد فعال است و مستلزم آن است که کلیدها و مقادیر، رشته‌های معتبر UTF-8 باشند.
در صورت تنظیم "smtputf8_enable = yes"، بررسی‌های نحوی UTF-8 همراه با گزینه‌های -b و -h اجبار شود.
فعال‌سازی گزارش‌گیری پرگو (verbose) برای اهداف اشکال‌زدایی. تکرار گزینه -v میزان پرگویی نرم‌افزار را افزایش می‌دهد.
هنگام به‌روزرسانی جدول، تلاش‌ها برای تغییر دادن مدخل‌های موجود را به عنوان خطا تلقی نکن و آن تلاش‌ها را نادیده بگیر.

آرگومان‌ها:

نوع پایگاه‌داده. برای آگاهی از انواع پشتیبانی‌شده، از دستور «postconf -m» استفاده کنید.

هنگامی که هیچ file_type مشخص نشده باشد، نرم‌افزار از نوع پایگاه‌داده تعیین‌شده در پارامتر پیکربندی default_database_type استفاده می‌کند. مقدار پیش‌فرض این پارامتر به محیط میزبان بستگی دارد.

دستور postmap(1) می‌تواند هر نوع فایل پشتیبانی‌شده‌ای را پرس‌وجو کند، اما تنها قادر به ایجاد انواع فایل زیر است:

فایل خروجی یک فایل btree به نام file_name.db است. این نوع در سیستم‌هایی با پشتیبانی از پایگاه‌داده‌های db در دسترس است.
خروجی شامل یک فایل به نام file_name.cdb است. این نوع در سیستم‌هایی با پشتیبانی از پایگاه‌داده‌های cdb در دسترس است.
خروجی شامل دو فایل به نام‌های file_name.pag و file_name.dir است. این نوع در سیستم‌هایی با پشتیبانی از پایگاه‌داده‌های dbm در دسترس است.
جدولی که تمامی درخواست‌ها را با اطمینان رد می‌کند (شکست می‌دهد). نام جدول جستجو تنها برای گزارش‌گیری استفاده می‌شود. این جدول به منظور تسهیل آزمایش‌های خطای Postfix ایجاد شده است.
فایل خروجی یک فایل هش‌شده به نام file_name.db است. این نوع در سیستم‌هایی با پشتیبانی از پایگاه‌داده‌های db در دسترس است.
خروجی یک فایل مبتنی بر btree به نام file_name.lmdb است. برخلاف دیگر جدول‌های مبتنی بر فایلِ پشتیبانی‌شده، lmdb از خواندن و نوشتن هم‌زمان توسط فرآیندهای مختلف پشتیبانی می‌کند. این نوع در سیستم‌هایی با پشتیبانی از پایگاه‌داده‌های lmdb در دسترس است.
خروجی شامل دو فایل به نام‌های file_name.pag و file_name.dir است. این نوع در سیستم‌هایی با پشتیبانی از پایگاه‌داده‌های sdbm در دسترس است.
نام فایل منبع جدول جستجو هنگام بازسازی یک پایگاه‌داده.


مشکلات در جریان خطای استاندارد و در syslogd(8) یا postlogd(8) ثبت می‌شوند. عدم وجود خروجی به این معنی است که مشکلی شناسایی نشده است. مدخل‌های تکراری نادیده گرفته شده و با یک هشدار مشخص می‌شوند.

postmap(1) در صورت موفقیت (از جمله پرس‌وجوی موفق با «postmap -q») با وضعیت خروج صفر و در صورت بروز شکست با وضعیت خروج غیرصفر خاتمه می‌یابد.

دایرکتوری حاوی فایل‌های پیکربندی Postfix.
فعال‌سازی گزارش‌گیری پرگو برای اهداف اشکال‌زدایی.

پارامترهای main.cf زیر به‌ویژه به این برنامه مرتبط هستند. متن زیر تنها خلاصه‌ای از پارامترها را ارائه می‌دهد. برای جزئیات بیشتر شامل مثال‌ها به postconf(5) مراجعه کنید.

اندازه بافر I/O به ازای هر جدول برای برنامه‌هایی که جدول‌های hash یا btree متعلق به Berkeley DB را می‌سازند.
اندازه بافر I/O به ازای هر جدول برای برنامه‌هایی که جدول‌های hash یا btree متعلق به Berkeley DB را می‌خوانند.
مکان پیش‌فرض فایل‌های پیکربندی main.cf و master.cf در Postfix.
نوع پیش‌فرض پایگاه‌داده برای استفاده در دستورهای newaliases(1)، postalias(1) و postmap(1).
فهرست متغیرهای محیطی که یک فرآیند باامتیاز Postfix از یک فرآیند والد غیر-Postfix وارد می‌کند، یا بازنویسی‌های متغیرهای محیطی به صورت name=value.
فعال‌سازی پشتیبانی مقدماتی SMTPUTF8 برای پروتکل‌های توصیف‌شده در RFC 6531، RFC 6532 و RFC 6533.
تسهیلات گزارش‌گیری سیستم (syslog facility) برای Postfix.
پیشوندی که به نام فرآیند در رکوردهای syslog اضافه می‌شود، به عنوان مثال "smtpd" به "prefix/smtpd" تبدیل می‌شود.

در دسترس در Postfix نسخه ۲.۱۱ و بالاتر:

محدودیت اولیه اندازه پایگاه‌داده OpenLDAP LMDB بر حسب بایت.

postalias(1), ایجاد/به‌روزرسانی/پرس‌وجوی پایگاه‌داده نام مستعار (alias)
postconf(1), انواع پایگاه‌داده پشتیبانی‌شده
postconf(5), پارامترهای پیکربندی
postlogd(8), ثبت گزارش‌های Postfix
syslogd(8), ثبت گزارش‌های سیستم

برای یافتن این اطلاعات از دستور «postconf readme_directory» یا «postconf html_directory» استفاده کنید.

DATABASE_README, نمای کلی جدول‌های جستجوی Postfix

مجوز Secure Mailer باید همراه با این نرم‌افزار توزیع شود.

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