MAKEMAP(8) System Manager's Manual MAKEMAP(8)

makemap — ایجاد نگاشت‌های پایگاه‌داده برای smtpd

makemap [-U] [-d dbtype] [-o dbfile] [-t type] file

نگاشت‌ها رابطی عمومی برای مرتبط‌سازی یک کلید متنی با یک مقدار فراهم می‌کنند. چنین ارتباطاتی ممکن است از طریق یک پرونده متنی ساده (plaintext)، پایگاه‌داده، یا DNS در دسترس قرار گیرند. قالب این نوع پرونده‌ها در ادامه شرح داده شده است. خود makemap نگاشت‌های پایگاه‌داده‌ای را ایجاد می‌کند که توسط جستجوهای مبتنی بر کلیدِ مشخص‌شده در smtpd.conf(5) به کار می‌روند.

دستور makemap ورودی را از file می‌خواند و داده‌ها را در فایلی می‌نویسد که نام آن با افزودن پسوند “.db” به file تشکیل می‌شود. خط جاری را می‌توان با استفاده از نویسه خط مورب وارونه (بک‌اسلش) (‘\’) در چندین خط امتداد داد. توضیحات (کامنت‌ها) را می‌توان با استفاده از علامت هش (‘#’) در هر کجای پرونده قرار داد، و تا انتهای خط جاری امتداد می‌یابند. هنگام کامنت‌گذاری متن‌های چندخطی باید دقت شود: کامنت تا انتهای کل بلوک اعمال می‌شود. در همه موارد، makemap خطوطی متشکل از کلمات جداشده با فاصله سفید (whitespace) را می‌خواند. نخستین کلمه هر خط، کلید پایگاه‌داده است؛ باقی خط نمایانگر مقدار نگاشت‌شده است. کلید و مقدار پایگاه‌داده می‌توانند به صورت اختیاری با نویسه دونقطه (:) از هم جدا شوند.

گزینه‌ها به شرح زیر هستند:

dbtype
قالب پایگاه‌داده را مشخص می‌کند. قالب‌های موجود عبارتند از hash و btree. مقدار پیش‌فرض hash است.
dbfile
پایگاه‌داده ایجادشده را در dbfile می‌نویسد.
type
قالب پرونده نگاشت حاصل را مشخص می‌کند. قالب پیش‌فرض نگاشت برای ذخیره ارتباطات ساده و بدون ساختار کلید-به-مقدار متنی مناسب است. با این حال، چنانچه مقدار نگاشت‌شده معنای خاصی داشته باشد، مانند پرونده دامنه‌های مجازی، باید یک type مناسب ارائه شود. انواع خروجی موجود عبارتند از:
مقدار نگاشت‌شده فهرستی از مقصدهای ایمیل است که با کاما از هم جدا شده‌اند. این قالب می‌تواند برای ساخت نام‌های مستعار کاربر و نگاشت‌های کاربر برای پرونده‌های دامنه مجازی استفاده شود.
هیچ مقدار نگاشت‌شده‌ای وجود ندارد – نگاشتی از این نوع تنها امکان جستجوی کلیدها را فراهم می‌کند. این قالب می‌تواند برای ساخت نگاشت‌های دامنه اصلی به کار رود.
به جای تولید نگاشت پایگاه‌داده از ورودی متنی، محتویات یک نگاشت پایگاه‌داده را به صورت متن با جداسازی کلید و مقدار توسط نویسه تب (tab) تخلیه (dump) می‌کند.

دامنه‌های اصلی را می‌توان در جدول‌ها نگهداری کرد. برای ایجاد یک جدول دامنه اصلی، هر دامنه اصلی را در یک خط جداگانه قرار دهید.

علاوه بر افزودن یک مدخل به نگاشت دامنه اصلی، باید یک قاعده پالایش (فیلتر) نیز اضافه کرد که نامه‌ها را برای این نگاشت دامنه بپذیرد، برای نمونه:

table domains db:/etc/smtpd/domains.db

action "local" mbox

match for domain <domains> action "local"

دامنه‌های مجازی نیز می‌توانند در جدول‌ها نگهداری شوند. برای ایجاد یک جدول دامنه مجازی، هر دامنه مجازی را در یک خط جداگانه قرار دهید.

دامنه‌های مجازی انتظار نگاشتی از کاربران مجازی به کاربران واقعی را دارند تا مشخص شود آیا یک گیرنده پذیرفته می‌شود یا خیر. قالب این نگاشت، افزونه‌ای بر aliases(5) است که اجازه می‌دهد از “user@domain.tld” برای پذیرش کاربر فقط در دامنه مشخص‌شده، “user” برای پذیرش کاربر در هر یک از دامنه‌های مجازی، “@domain.tld” برای ارائه یک گیرنده همگانی (catch-all) برای دامنه مشخص‌شده و “@” برای ارائه یک گیرنده همگانی سراسری برای همه دامنه‌ها استفاده شود. smtpd(8) جستجوها را دقیقاً به همین ترتیب انجام خواهد داد.

برای ایجاد یک آدرس مجازی منفرد، عبارت “user@example.com user” را به نگاشت users اضافه کنید. برای مدیریت تمام نامه‌های ارسالی به هر کاربری در example.com، عبارت “@example.com user” را به نگاشت virtual اضافه کنید.

علاوه بر افزودن یک مدخل به نگاشت مجازی، باید یک قاعده پالایش اضافه شود که نامه‌ها را برای دامنه‌های مجازی بپذیرد، برای نمونه:

table vdomains db:/etc/smtpd/vdomains.db
table vusers db:/etc/smtpd/users.db

action "local" mbox virtual <vusers>

match for domain <vdomains> action "local"
match for domain "example.org" action "local"

/etc/smtpd/aliases
فهرست نام‌های مستعار ایمیل کاربر.
/etc/smtpd/secrets
فهرست اطلاعات اعتبارسنجی میزبان راه دور.

The makemap utility exits 0 on success, and >0 if an error occurs.

aliases(5), smtpd.conf(5), table(5), newaliases(8), smtpd(8)

دستور makemap نخستین بار در OpenBSD 4.6 به عنوان جایگزینی برای دستور معادل عرضه‌شده به همراه sendmail ظاهر شد.

February 13, 2021 Linux 6.12.107+deb13-amd64