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