MONGODB_TABLE(5) File Formats Manual MONGODB_TABLE(5)

mongodb_table - پیکربندی کلاینت MongoDB در Postfix

postmap -q "string" mongodb:/etc/postfix/filename
postmap -q - mongodb:/etc/postfix/filename <inputfile


سیستم ایمیل Postfix از جدول‌های اختیاری برای بازنویسی نشانی یا مسیریابی ایمیل استفاده می‌کند. این جدول‌ها معمولاً در قالب‌های lmdb:، cdb:، hash: یا dbm: هستند.

به‌عنوان روش جایگزین، جدول‌های جستجو می‌توانند به‌صورت پایگاه‌های داده MongoDB مشخص شوند. برای اطلاع از اینکه سیستم Postfix شما از چه نوع جدول‌های جستجویی پشتیبانی می‌کند، از دستور "postconf -m" استفاده کنید.

به‌منظور استفاده از جستجوهای MongoDB، یک منبع MongoDB را به‌صورت جدول جستجو در main.cf تعریف کنید، برای نمونه:

alias_maps = mongodb:/etc/postfix/mongodb-aliases.cf

در این مثال، فایل /etc/postfix/mongodb-aliases.cf همان قالبی را دارد که فایل main.cf در Postfix داراست، و می‌تواند پارامترهای شرح‌داده‌شده در زیر را مشخص کند. همچنین امکان قرار دادن پیکربندی در main.cf وجود دارد؛ بخش "پارامترهای منسوخ MAIN.CF" در زیر را ببینید.

اکیداً توصیه می‌شود از proxy:mongodb استفاده شود تا تعداد اتصالات پایگاه داده کاهش یابد. برای نمونه:

alias_maps = proxy:mongodb:/etc/postfix/mongodb-aliases.cf

نکته: هنگام استفاده از proxy:mongodb:/file، فایل باید توسط کاربر بدون امتیاز postfix (که با پارامتر پیکربندی mail_owner در Postfix مشخص می‌شود) قابل خواندن باشد.

شناسه یکنواخت منبع (URI) سرور یا کلاستر mongo که Postfix تلاش می‌کند به آن متصل شده و پرس‌وجو را انجام دهد. لطفاً ببینید: https://www.mongodb.com/docs/manual/reference/connection-string

نمونه:

uri = mongodb+srv://user:pass@loclhost:27017/mail
نام پایگاه داده برای خواندن اطلاعات از آن. نمونه:
dbname = mail
نام مجموعه (جدول) برای خواندن اطلاعات از آن. نمونه:
collection = mailbox
الگوی پرس‌وجوی MongoDB مورد استفاده برای جستجو در پایگاه داده، که در آن %s جایگزینی برای نشانی ایمیلی است که Postfix تلاش می‌کند آن را حل‌وفصل کند. لطفاً ببینید: https://www.mongodb.com/docs/manual/tutorial/query-documents

نمونه:

query_filter = {"$or": [{"username": "%s"}, {"alias.address": "%s"}], "active": 1}

این پارامتر از بسط‌های '%' زیر پشتیبانی می‌کند:

%%
این مورد با یک نویسه '%' واقعی جایگزین می‌شود.
%s
این مورد با کلید ورودی جایگزین می‌شود. %s باید درون علامت نقل‌قول قرار گیرد، زیرا تمام پرس‌وجوهای Postfix رشته‌هایی شامل (بخش‌هایی از) یک دامنه یا نشانی ایمیل هستند. Postfix هیچ پرس‌وجوی عددی انجام نمی‌دهد.
%u
هنگامی که کلید ورودی نشانی‌ای به شکل user@domain باشد، %u با بخش محلی نشانی جایگزین می‌شود. در غیر این صورت، %u با کل رشته جستجو جایگزین می‌شود.
%d
هنگامی که کلید ورودی نشانی‌ای به شکل user@domain باشد، %d با بخش دامنه نشانی جایگزین می‌شود.
%[1-9]
الگوهای %1، %2، ... %9 با بااهمیت‌ترین مؤلفه متناظر از دامنه کلید ورودی جایگزین می‌شوند. اگر کلید ورودی user@mail.example.com باشد، آن‌گاه %1 برابر com، %2 برابر example و %3 برابر mail خواهد بود.
در جایگزینی‌های بالا، نویسه‌ها همان‌طور که در RFC 4627 الزامی شده است، نقل‌قول‌گذاری خواهند شد. برای نمونه، هر نویسه نقل‌قول جفتی یا بک‌اسلش با یک نویسه بک‌اسلش اسکیپ می‌شود.
پروجکشن‌های پیشرفته پرس‌وجوی MongoDB. لطفاً ببینید: https://www.mongodb.com/docs/manual/tutorial/project-fields-from-query-results
  • اگر projection غیرخالی باشد، آن‌گاه result_attribute باید خالی باشد.
  • این پیاده‌سازی فقط می‌تواند اطلاعات را از فیلدهای نتیجه که دارای نوع string (UTF8)، integer (int32، int64) و array هستند استخراج کند. سایر فیلدهای نتیجه با یک هشدار نادیده گرفته خواهند شد. لطفاً ببینید: https://mongoc.org/libbson/current/bson_type_t.html
  • همانند result_attribute، فیلد سطح بالای _id (از نوع OID) به‌طور خودکار از نتایج پروجکشن حذف می‌شود.
فهرستی جداشده با کاما یا فاصله از نام فیلدهایی که باید در یک نتیجه جستجو بازگردانده شوند.
  • اگر result_attribute غیرخالی باشد، آن‌گاه projection باید خالی باشد.
  • همانند projection، فیلد سطح بالای _id (از نوع OID) به‌طور خودکار از نتایج جستجو حذف می‌شود.
الگوی فرمت اعمال‌شده روی نتیجه حاصل از projection یا result_attribute. بیشترین کاربرد آن برای الحاق متن به انتها (یا ابتدا) نتیجه است. این پارامتر از بسط‌های '%' زیر پشتیبانی می‌کند:
%%
این مورد با یک نویسه '%' واقعی جایگزین می‌شود.
%s
این مورد با مقدار مشخصه نتیجه جایگزین می‌شود. هنگامی که نتیجه خالی باشد، نادیده گرفته می‌شود.
%u
هنگامی که مقدار مشخصه نتیجه نشانی‌ای به شکل user@domain باشد، %u با بخش محلی نشانی جایگزین می‌شود. هنگامی که نتیجه بخش محلی خالی داشته باشد، نادیده گرفته می‌شود.
%d
هنگامی که مقدار مشخصه نتیجه نشانی‌ای به شکل user@domain باشد، %d با بخش دامنه مقدار مشخصه جایگزین می‌شود. هنگامی که نتیجه بدون مشخص بودن دامنه (unqualified) باشد، نادیده گرفته می‌شود.
%[SUD1-9]
بسط‌های با حروف بزرگ و ارقام ده‌دهی، بخش‌هایی از کلید ورودی را به‌جای نتیجه جای‌گذاری می‌کنند. رفتار آن‌ها مشابه موارد شرح‌داده‌شده برای query_filter است، و در واقع از آنجا که کلید ورودی از قبل مشخص است، جستجوهایی که کلید آن‌ها شامل تمام اطلاعات تعیین‌شده در الگوی نتیجه نباشد متوقف شده و هیچ نتیجه‌ای برنمی‌گردانند.
برای نمونه، استفاده از "result_format = smtp:[%s]" امکان استفاده از مشخصه mailHost را به‌عنوان اساس یک جدول transport(5) فراهم می‌کند. پس از اعمال فرمت نتیجه، مقادیر چندگانه به‌صورت رشته‌هایی جداشده با کاما به هم متصل می‌شوند. پارامتر expansion_limit که در ادامه توضیح داده شده است، امکان محدود کردن تعداد مقادیر در نتیجه را فراهم می‌کند، که به‌ویژه برای نگاشت‌هایی که باید یک مقدار واحد برگردانند مفید است.

مقدار پیش‌فرض %s مشخص می‌کند که هر مقدار مشخصه باید همان‌طور که هست استفاده شود.

نکته: در اطراف فرمت نتیجه علامت نقل‌قول قرار ندهید! نتیجه یک رشته JSON نیست.

این پارامتر فهرستی از نام‌های دامنه، مسیرهای فایل‌ها، یا پایگاه‌های داده "type:table" است. هنگام تعیین، فقط کلیدهای جستجوی کاملاً مشخص‌شده (fully qualified) با یک بخش محلی *غیرخالی* و یک دامنه منطبق، واجد شرایط جستجو هستند: جستجوهای 'user'، جستجوهای صرفاً دامنه و جستجوهای "@domain" انجام نمی‌شوند. این امر می‌تواند بار پرس‌وجو روی پایگاه داده پشتیبان را به‌طور چشمگیری کاهش دهد. نمونه:
domain = postfix.org, hash:/etc/postfix/searchdomains
محدودیتی برای تعداد کل عناصر نتیجه که (به‌صورت یک فهرست جداشده با کاما) توسط یک جستجو در نگاشت بازگردانده می‌شوند. مقدار صفر این محدودیت را غیرفعال می‌کند. در صورت فراتر رفتن از حد مجاز، جستجوها با یک خطای موقت با شکست مواجه می‌شوند. تنظیم این حد روی 1 تضمین می‌کند که جستجوها چندین مقدار بازنمی‌گردانند.

پارامترهای MongoDB را می‌توان در main.cf نیز تعریف کرد. به‌عنوان منبع MongoDB نامی را مشخص کنید که با اسلش یا نقطه آغاز نشود. سپس پارامترهای MongoDB به‌صورت نامی که در تعریف منبع به آن داده‌اید، یک زیرخط (_) و نام پارامتر در دسترس خواهند بود. برای نمونه، اگر یک نگاشت به‌صورت "mongodb:mongodb_source" مشخص شده باشد، پارامتر "uri" در main.cf به‌صورت "mongodb_source_uri" تعریف خواهد شد.

نکته: با این روش، گذرواژه‌ها در main.cf نوشته می‌شوند که معمولاً برای همه کاربران قابل خواندن است، و کاراکتر '$' در مقدار یک پارامتر mongodb باید به‌صورت '$$' نوشته شود.

postmap(1)، نگهداری جدول جستجوی Postfix
postconf(5)، پارامترهای پیکربندی

از "postconf readme_directory" یا "postconf html_directory" برای یافتن مکان این اطلاعات استفاده کنید.

DATABASE_README، نمای کلی جدول جستجوی Postfix
MONGODB_README، راهنمای کلاینت MONGODB در Postfix

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


پشتیبانی از MongoDB در نسخه 3.9 نرم‌افزار Postfix معرفی شد.

Hamid Maadani (hamid@dexo.tech)
Dextrous Technologies, LLC
ویرایش توسط:
Wietse Venema
porcupine.org
بر پایه کار قبلی توسط:
Stephan Ferraro
Aionda GmbH