.\" $OpenBSD: makemap.8,v 1.31 2021/02/13 07:37:13 jmc Exp $ .\" .\" Copyright (c) 2009 Jacek Masiulaniec .\" Copyright (c) 2008-2009 Gilles Chehade .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above .\" copyright notice and this permission notice appear in all copies. .\" .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .Dd $Mdocdate: February 13 2021 $ .Dt MAKEMAP 8 .Os .Sh "نام (NAME)" .Nm makemap .Nd ایجاد نگاشت‌های پایگاه‌داده برای smtpd .Sh "خلاصه دستور (SYNOPSIS)" .Nm makemap .Op Fl U .Op Fl d Ar dbtype .Op Fl o Ar dbfile .Op Fl t Ar type .Ar file .Sh "توضیحات (DESCRIPTION)" نگاشت‌ها رابطی عمومی برای مرتبط‌سازی یک کلید متنی با یک مقدار فراهم می‌کنند. چنین ارتباطاتی ممکن است از طریق یک پرونده متنی ساده (plaintext)، پایگاه‌داده، یا DNS در دسترس قرار گیرند. قالب این نوع پرونده‌ها در ادامه شرح داده شده است. خود .Nm makemap نگاشت‌های پایگاه‌داده‌ای را ایجاد می‌کند که توسط جستجوهای مبتنی بر کلیدِ مشخص‌شده در .Xr smtpd.conf 5 به کار می‌روند. .Pp دستور .Nm makemap ورودی را از .Ar file می‌خواند و داده‌ها را در فایلی می‌نویسد که نام آن با افزودن پسوند .Dq .db به .Ar file تشکیل می‌شود. خط جاری را می‌توان با استفاده از نویسه خط مورب وارونه (بک‌اسلش) .Pq Sq \e در چندین خط امتداد داد. توضیحات (کامنت‌ها) را می‌توان با استفاده از علامت هش .Pq Sq # در هر کجای پرونده قرار داد، و تا انتهای خط جاری امتداد می‌یابند. هنگام کامنت‌گذاری متن‌های چندخطی باید دقت شود: کامنت تا انتهای کل بلوک اعمال می‌شود. در همه موارد، .Nm makemap خطوطی متشکل از کلمات جداشده با فاصله سفید (whitespace) را می‌خواند. نخستین کلمه هر خط، کلید پایگاه‌داده است؛ باقی خط نمایانگر مقدار نگاشت‌شده است. کلید و مقدار پایگاه‌داده می‌توانند به صورت اختیاری با نویسه دونقطه (:) از هم جدا شوند. .Pp گزینه‌ها به شرح زیر هستند: .Bl -tag -width Ds .It Fl d Ar dbtype قالب پایگاه‌داده را مشخص می‌کند. قالب‌های موجود عبارتند از .Ar hash و .Ar btree . مقدار پیش‌فرض .Ar hash است. .It Fl o Ar dbfile پایگاه‌داده ایجادشده را در .Ar dbfile می‌نویسد. .It Fl t Ar type قالب پرونده نگاشت حاصل را مشخص می‌کند. قالب پیش‌فرض نگاشت برای ذخیره ارتباطات ساده و بدون ساختار کلید-به-مقدار متنی مناسب است. با این حال، چنانچه مقدار نگاشت‌شده معنای خاصی داشته باشد، مانند پرونده دامنه‌های مجازی، باید یک .Ar type مناسب ارائه شود. انواع خروجی موجود عبارتند از: .Bl -tag -width "aliases" .It Cm aliases مقدار نگاشت‌شده فهرستی از مقصدهای ایمیل است که با کاما از هم جدا شده‌اند. این قالب می‌تواند برای ساخت نام‌های مستعار کاربر و نگاشت‌های کاربر برای پرونده‌های دامنه مجازی استفاده شود. .It Cm set هیچ مقدار نگاشت‌شده‌ای وجود ندارد \(en نگاشتی از این نوع تنها امکان جستجوی کلیدها را فراهم می‌کند. این قالب می‌تواند برای ساخت نگاشت‌های دامنه اصلی به کار رود. .El .It Fl U به جای تولید نگاشت پایگاه‌داده از ورودی متنی، محتویات یک نگاشت پایگاه‌داده را به صورت متن با جداسازی کلید و مقدار توسط نویسه تب (tab) تخلیه (dump) می‌کند. .El .Sh "دامنه‌های اصلی (PRIMARY DOMAINS)" دامنه‌های اصلی را می‌توان در جدول‌ها نگهداری کرد. برای ایجاد یک جدول دامنه اصلی، هر دامنه اصلی را در یک خط جداگانه قرار دهید. .Pp علاوه بر افزودن یک مدخل به نگاشت دامنه اصلی، باید یک قاعده پالایش (فیلتر) نیز اضافه کرد که نامه‌ها را برای این نگاشت دامنه بپذیرد، برای نمونه: .Bd -literal -offset indent table domains db:/etc/smtpd/domains.db action "local" mbox match for domain action "local" .Ed .Sh "دامنه‌های مجازی (VIRTUAL DOMAINS)" دامنه‌های مجازی نیز می‌توانند در جدول‌ها نگهداری شوند. برای ایجاد یک جدول دامنه مجازی، هر دامنه مجازی را در یک خط جداگانه قرار دهید. .Pp دامنه‌های مجازی انتظار نگاشتی از کاربران مجازی به کاربران واقعی را دارند تا مشخص شود آیا یک گیرنده پذیرفته می‌شود یا خیر. قالب این نگاشت، افزونه‌ای بر .Xr aliases 5 است که اجازه می‌دهد از .Dq user@domain.tld برای پذیرش کاربر فقط در دامنه مشخص‌شده، .Dq user برای پذیرش کاربر در هر یک از دامنه‌های مجازی، .Dq @domain.tld برای ارائه یک گیرنده همگانی (catch-all) برای دامنه مشخص‌شده و .Dq @ برای ارائه یک گیرنده همگانی سراسری برای همه دامنه‌ها استفاده شود. .Xr smtpd 8 جستجوها را دقیقاً به همین ترتیب انجام خواهد داد. .Pp برای ایجاد یک آدرس مجازی منفرد، عبارت .Dq user@example.com user را به نگاشت users اضافه کنید. برای مدیریت تمام نامه‌های ارسالی به هر کاربری در example.com، عبارت .Dq @example.com user را به نگاشت virtual اضافه کنید. .Pp علاوه بر افزودن یک مدخل به نگاشت مجازی، باید یک قاعده پالایش اضافه شود که نامه‌ها را برای دامنه‌های مجازی بپذیرد، برای نمونه: .Bd -literal -offset indent table vdomains db:/etc/smtpd/vdomains.db table vusers db:/etc/smtpd/users.db action "local" mbox virtual match for domain action "local" match for domain "example.org" action "local" .Ed .Sh "فایل‌ها (FILES)" .Bl -tag -width "/etc/smtpd/aliasesXXX" -compact .It Pa /etc/smtpd/aliases فهرست نام‌های مستعار ایمیل کاربر. .It Pa /etc/smtpd/secrets فهرست اطلاعات اعتبارسنجی میزبان راه دور. .El .Sh "وضعیت خروج (EXIT STATUS)" .Ex -std makemap .Sh "همچنین ببینید (SEE ALSO)" .Xr aliases 5 , .Xr smtpd.conf 5 , .Xr table 5 , .Xr newaliases 8 , .Xr smtpd 8 .Sh "تاریخچه (HISTORY)" دستور .Nm makemap نخستین بار در .Ox 4.6 به عنوان جایگزینی برای دستور معادل عرضه‌شده به همراه sendmail ظاهر شد.