| TABLE(5) | File Formats Manual | TABLE(5) |
نام (NAME)
table —
قالب و
ساختار
جداول
جستجو در
OpenSMTPD
توضیحات (DESCRIPTION)
این صفحه راهنما، قالب پرونده برای جداول مختلف مورد استفاده در دیمن ایمیل smtpd(8) را مستند میکند.
قالب شرحدادهشده در اینجا برای جداولی اعمال میشود که در smtpd.conf(5) تعریف شدهاند.
انواع جدول (TABLE TYPES)
دو نوع جدول وجود دارد: فهرستها (lists) و نگاشتها (mappings). یک فهرست از مجموعهای از مقادیر تشکیل شده است، در حالی که یک نگاشت شامل مجموعهای از کلیدها و مقادیر مرتبط با آنها است. مثال زیر نحوه اعلان آنها را به عنوان جداول ایستا (static) نشان میدهد:
table mylist { value1, value2, value3 }
table mymapping { key1 = value1, key2 = value2, key3 = value3 }
هنگام
استفاده از
یک جدول
‘file’ یک
فهرست با
نوشتن هر
مقدار در یک
خط جداگانه
تعریف
میشود.
value1 value2 value3
یک نگاشت به این صورت نوشته میشود که هر کلید و مقدار در یک خط قرار میگیرند، و فاصله خالی و دونقطه اختیاری دو ستون را از هم جدا میکنند:
key1: value1 key2 value2 key3 value3
خطوط خالی، فاصلهها و تبهای ابتدا و انتهای خط نادیده گرفته میشوند. خطوطی که اولین نویسه غیرفاصله آنها علامت هش (‘#’) باشد، کامنت هستند و نادیده گرفته میشوند. برای اجبار به تجزیه یک جدول پروندهای به عنوان فهرست به جای نگاشت، از این کامنت ویژه استفاده کنید:
# @listیک جدول پروندهای را میتوان بدون هیچ تغییری در ساختار، با استفاده از ابزار کاربردی makemap(8) به یک پایگاه داده برکلی (Berkeley database) تبدیل کرد.
جداولی که
از بکاند
‘file’ یا Berkeley DB
استفاده
میکنند،
به شکل زیر
ارجاع داده
خواهند شد:
tablenamefile:/path/to/filetablenamedb:/path/to/file.db
جداول نام مستعار (Aliasing tables)
جداول نام مستعار، نگاشتهایی هستند که یک گیرنده را به یک یا چند مقصد مرتبط میکنند. میتوان از آنها در دو زمینه استفاده کرد: نامهای مستعار دامنه اصلی و نگاشت دامنه مجازی.
actionname methodalias<table>actionname methodvirtual<table>
در زمینه دامنه اصلی، کلید همان بخش کاربری نشانی گیرنده است، در حالی که مقدار، یک یا چند گیرنده است همانطور که در aliases(5) شرح داده شده است:
user1 otheruser user2 otheruser1,otheruser2 user3 otheruser@example.com
در زمینه دامنه مجازی، کلید میتواند بخش کاربری، یک نشانی کامل ایمیل یا یک گیرنده همگانی (catch-all) طبق قواعد گزینش ارائهشده در smtpd.conf(5) باشد، و مقدار نیز یک یا چند گیرنده است همانطور که در aliases(5) شرح داده شده است:
user1 otheruser user2@example.org otheruser1,otheruser2 @example.org otheruser@example.com @ catchall@example.com
دستورالعمل زیر ساختار جدولی یکسانی دارد، اما دارای معنایی متفاوت است. در اینجا، کاربر مجاز است از نشانیهای فهرستشده ایمیل ارسال کند:
listen oninterfaceauth[...]senders<table>
جداول دامنه (Domain tables)
جداول دامنه، فهرستهای سادهای از دامنهها یا میزبانها هستند.
matchfor domain<table>actionnamematchhelo<table> [...]actionname
در این
زمینه،
فهرست
دامنهها
به ترتیب با
دامنه
گیرنده یا
با نام HELO
اعلانشده
توسط
میزبان
فرستنده
تطبیق داده
خواهد شد.
برای
بکاندهای
‘static’,
‘file’ و
dbopen(3),
میتوان از
نویسه
عمومی (wildcard)
استفاده
کرد،
بنابراین
جدول دامنه
میتواند
شامل موارد
زیر باشد:
example.org *.example.org
جداول اطلاعات احراز هویت (Credentials tables)
جداول اطلاعات احراز هویت، نگاشتهایی از مشخصات اعتبارسنجی هستند. میتوان از آنها در دو زمینه استفاده کرد:
listen oninterfacetls[...]auth<table>actionnamerelay hostrelay-urlauth<table>
در زمینه شنود (listener)، اطلاعات احراز هویت نگاشتی از نام کاربری و گذرواژههای رمزشده هستند:
user1 $2b$10$hIJ4QfMcp.90nJwKqGbKM.MybArjHOTpEtoTV.DgLYAiThuoYmTSe user2 $2b$10$bwSmUOBGcZGamIfRuXGTvuTo3VLbPG9k5yeKNMBtULBhksV5KdGsK
گذرواژهها باید با استفاده از زیردستور encrypt در smtpctl(8) رمزگذاری شوند.
در زمینه رله (relay)، اطلاعات احراز هویت نگاشتی از برچسبها و جفتهای username:password هستند:
label1 user:password
برچسب باید یکتا باشد و هنگامی که چند مدرک شناسایی برای یک مقصد معتبر هستند، به عنوان گزینشگر برای انتخاب اطلاعات مناسب به کار میرود. گذرواژه رمزگذاری نمیشود زیرا باید به میزبان راه دور ارائه گردد.
جداول آدرس شبکه (Netaddr tables)
جداول آدرس شبکه، فهرستهایی از نشانیهای شبکه IPv4 و IPv6 هستند. از آنها فقط میتوان در زمینه زیر استفاده کرد:
match from
src <table> action
nameهنگام استفاده به عنوان «from source» (از مبدأ)، نشانی کلاینت تا زمانی که یک تطابق پیدا شود با فهرست نشانیهای موجود در جدول مقایسه میشود.
یک جدول netaddr میتواند حاوی نشانیهای دقیق یا ماسکهای شبکه (netmasks) باشد و به شکل زیر است:
192.168.1.1 [::1] 192.168.1.0/24
نشانیهای IPv6 باید درون براکت قرار گیرند.
جداول اطلاعات کاربر (Userinfo tables)
جداول اطلاعات کاربر در زمینه قواعد برای تعیین یک پایگاه کاربری جایگزین استفاده میشوند و کاربران مجازی را بر اساس UID، GID و دایرکتوری خانگی به کاربران سیستم محلی نگاشت میکنند.
action name
method userbase
<table>یک جدول userinfo به شکل زیر است:
joe 1000:100:/home/virtual/joe jack 1000:100:/home/virtual/jack
در این مثال، هر دو کاربر joe و jack کاربران مجازی نگاشتشده به کاربر سیستم محلی با UID برابر ۱۰۰۰ و GID برابر ۱۰۰، اما با دایرکتوریهای خانگی متفاوت هستند. این دایرکتوریها ممکن است حاوی یک پرونده forward(5) باشند. از این قابلیت میتوان همراه با یک جدول نام مستعار (alias table) استفاده کرد که یک نشانی ایمیل یا بخش دامنه را به نام کاربری مجازی مورد نظر نگاشت میکند. برای نمونه:
joe@example.org joe jack@example.com jack
جداول مبدأ (Source tables)
جداول مبدأ، فهرستهایی از نشانیهای IPv4 و IPv6 هستند. از آنها فقط میتوان در زمینه زیر استفاده کرد:
action
name relay src
<table>پرسوجوهای متوالی از جدول مبدأ، عناصر را یکی پس از دیگری برمیگردانند.
یک جدول source به شکل زیر است:
192.168.1.2 192.168.1.3 [::1] [::2]
نشانیهای IPv6 باید درون براکت قرار گیرند.
جداول آدرس ایمیل (Mailaddr tables)
جداول آدرس ایمیل، فهرستهایی از نشانیهای ایمیل هستند. از آنها میتوان در زمینههای زیر استفاده کرد:
matchmail-from<table>actionnamematchrcpt-to<table>actionname
یک مدخل mailaddr برای تطبیق دادن یک نشانی ایمیل با یک نام کاربری، یک دامنه یا یک نشانی کامل ایمیل به کار میرود. یک نویسه عمومی «*» (wildcard) میتواند در بخشی از نام دامنه استفاده شود.
یک جدول mailaddr به شکل زیر است:
user @domain user@domain user@*.domain
جداول نام آدرس (Addrname tables)
جداول نام آدرس برای نگاشت نشانیهای IP به نامهای میزبان استفاده میشوند. از آنها میتوان در هر دو زمینه شنود و رله استفاده کرد:
listen oninterfacehostnames<table>actionnamerelay helo-src<table>
در زمینه شنود، این جدول برای جستجوی نام سرور جهت اعلام، بر اساس نشانی محلی سوکتی که اتصال روی آن پذیرفته شده است، استفاده میشود. در زمینه رله، این جدول برای تعیین نام میزبان در توالی HELO پروتکل SMTP، بر اساس نشانی محلی مورد استفاده برای اتصال خروجی، به کار میرود.
قالب به صورت نگاشتی از نشانیهای inet4 یا inet6 به نامهای میزبان است:
[::1] localhost 127.0.0.1 localhost 88.190.23.165 www.opensmtpd.org
نشانیهای IPv6 باید درون براکت قرار گیرند.
همچنین ببینید (SEE ALSO)
| May 2, 2024 | Linux 6.12.107+deb13-amd64 |