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 استفاده میکنند، به شکل زیر ارجاع
داده خواهند شد:
table name file:/path/to/file
table name db:/path/to/file.db
جداول نام مستعار (Aliasing tables)
جداول نام مستعار، نگاشتهایی هستند که یک گیرنده را به یک یا چند مقصد مرتبط
میکنند. میتوان از آنها در دو زمینه استفاده کرد: نامهای مستعار دامنه اصلی
و نگاشت دامنه مجازی.
action name method alias
action name method virtual
در زمینه دامنه اصلی، کلید همان بخش کاربری نشانی گیرنده است، در حالی که
مقدار، یک یا چند گیرنده است همانطور که در 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 on interface auth [...] senders
جداول دامنه (Domain tables)
جداول دامنه، فهرستهای سادهای از دامنهها یا میزبانها هستند.
match for domain action name
match helo [...] action name
در این زمینه، فهرست دامنهها به ترتیب با دامنه گیرنده یا با نام HELO
اعلانشده توسط میزبان فرستنده تطبیق داده خواهد شد. برای بکاندهای
‘static’, ‘file’ و dbopen(3), میتوان از نویسه عمومی (wildcard) استفاده
کرد، بنابراین جدول دامنه میتواند شامل موارد زیر باشد:
example.org
*.example.org
جداول اطلاعات احراز هویت (Credentials tables)
جداول اطلاعات احراز هویت، نگاشتهایی از مشخصات اعتبارسنجی هستند. میتوان
از آنها در دو زمینه استفاده کرد:
listen on interface tls [...] auth
action name relay host relay-url auth
در زمینه شنود (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 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
یک جدول 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
پرسوجوهای متوالی از جدول مبدأ، عناصر را یکی پس از دیگری برمیگردانند.
یک جدول source به شکل زیر است:
192.168.1.2
192.168.1.3
[::1]
[::2]
نشانیهای IPv6 باید درون براکت قرار گیرند.
جداول آدرس ایمیل (Mailaddr tables)
جداول آدرس ایمیل، فهرستهایی از نشانیهای ایمیل هستند. از آنها میتوان در
زمینههای زیر استفاده کرد:
match mail-from action name
match rcpt-to action name
یک مدخل mailaddr برای تطبیق دادن یک نشانی ایمیل با یک نام کاربری، یک
دامنه یا یک نشانی کامل ایمیل به کار میرود. یک نویسه عمومی «*» (wildcard)
میتواند در بخشی از نام دامنه استفاده شود.
یک جدول mailaddr به شکل زیر است:
user
@domain
user@domain
user@*.domain
جداول نام آدرس (Addrname tables)
جداول نام آدرس برای نگاشت نشانیهای IP به نامهای میزبان استفاده میشوند.
از آنها میتوان در هر دو زمینه شنود و رله استفاده کرد:
listen on interface hostnames
action name relay helo-src
در زمینه شنود، این جدول برای جستجوی نام سرور جهت اعلام، بر اساس نشانی
محلی سوکتی که اتصال روی آن پذیرفته شده است، استفاده میشود. در زمینه رله،
این جدول برای تعیین نام میزبان در توالی HELO پروتکل SMTP، بر اساس نشانی
محلی مورد استفاده برای اتصال خروجی، به کار میرود.
قالب به صورت نگاشتی از نشانیهای inet4 یا inet6 به نامهای میزبان است:
[::1] localhost
127.0.0.1 localhost
88.190.23.165 www.opensmtpd.org
نشانیهای IPv6 باید درون براکت قرار گیرند.
همچنین ببینید (SEE ALSO)
smtpd.conf(5), makemap(8), smtpd(8)
Linux 6.12.107+deb13-amd64 May 2, 2024 Linux 6.12.107+deb13-amd64