amavisd-milter(8) System Manager’s Manual amavisd-milter(8)

amavisd-milter - میلتر sendmail برای amavis

amavisd-milter [-Bfhv] [-d debug-level] [-D delivery-care-of] [-m max-conns] [-M max-wait] [-p pidfile] [-P] [-q backlog] [-s socket] [-t timeout] [-S socket] [-T timeout] [-w directory]

برنامه amavisd-milter یک میلتر sendmail (فیلتر ایمیل) برای amavis نسخه 2.4.3 و بالاتر و sendmail نسخه 8.13 و بالاتر است.

با amavisd-milter، تمام قابلیت‌های amavis در دسترس است، از جمله افزودن فیلدهای سرآیند اطلاعات هرزنامه و ویروس، تغییر موضوع (Subject)، افزودن پسوندهای نشانی و حذف برخی دریافت‌کنندگان از تحویل، در حالی که همان پیام به سایرین تحویل داده می‌شود.

برای اطلاعات بیشتر می‌توانید از وب‌سایت amavisd-milter بازدید کنید:

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

از ماکروی میلتر {daemon_name} به عنوان نام بانک خط‌مشی (policy bank) استفاده می‌کند (بخش بانک‌های خط‌مشی (POLICY BANKS) در ادامه را ببینید).
سطح اشکال‌زدایی را تنظیم می‌کند. با افزایش سطح اشکال‌زدایی، ردگیری‌های رفع اشکال دقیق‌تر می‌شوند. حداکثر مقدار 9 است.
صفت درخواست AM.PDP به نام delivery_care_of را روی client (پیش‌فرض) یا server تنظیم می‌کند.

هنگامی که از روش client استفاده می‌شود، amavisd-milter مسئول بازفرستادن پیام به دریافت‌کنندگان است. این روش اجازه تغییر شخصی‌سازی‌شده سرآیند یا بدنه پیام را نمی‌دهد.

هنگامی که از روش server استفاده می‌شود، amavis مسئول بازفرستادن پیام به دریافت‌کنندگان است و می‌تواند سرآیندها و بدنه پیام‌ها را شخصی‌سازی کند. متغیر $forward_method در فایل amavisd.conf باید به مقصدی اشاره کند که پیام را بدون بررسی مجدد در amavis بپذیرد.

اجرای amavisd-milter در پیش‌زمینه (یعنی به صورت دیمن اجرا نشود). پیام‌های اشکال‌زدایی را در ترمینال چاپ می‌کند.
نمایش صفحه راهنما و خروج.
حداکثر اتصالات هم‌روند amavis (پیش‌فرض 0 = تعداد نامحدود اتصالات). این مقدار باید با متغیر $max_servers در فایل amavisd.conf یکسان باشد.
مهلت زمانی پردازش پیام بر حسب ثانیه (پیش‌فرض ۳۰۰ ثانیه = ۵ دقیقه). باید کمتر از مهلت زمانی برای پاسخ به «.» نهایی باشد که پیام را در MTA ارسال‌کننده خاتمه می‌دهد. Sendmail از مقدار پیش‌فرض ۱ ساعت، postfix از ۱۰ دقیقه و qmail از ۲۰ دقیقه استفاده می‌کنند. مقدار پیشنهادی کمتر از ۱۰ دقیقه است.

اگر از سایر میلترها (به ویژه موارد زمان‌بر) استفاده می‌کنید، مهلت زمانی باید برای پردازش پیام در تمام میلترها کافی باشد.

استفاده از این فایل pid.
هنگامی که amavis با شکست مواجه می‌شود، پیام بدون بررسی عبور داده خواهد شد.
صف انتظار سوکت ورودی (backlog) مورد استفاده توسط listen(2) را تنظیم می‌کند. اگر تنظیم نشده باشد یا روی صفر تنظیم شود، از مقدار پیش‌فرض سیستم‌عامل استفاده می‌شود.
سوکت ارتباطی میان sendmail و amavisd-milter. پروتکل مورد استفاده روی این سوکت MILTER (فیلتر ایمیل) است. این مقدار باید با ماکروی INPUT_MAIL_FILTER در فایل sendmail.mc یکسان باشد.

مقدار socket باید به قالب proto:address باشد:

•
{unix|local}:/path/to/file - یک لوله نام‌گذاری‌شده (named pipe).
•
inet:port@{hostname|ip-address} - یک سوکت IPv4.
•
inet6:port@{hostname|ip-address} - یک سوکت IPv6.
سوکت ارتباطی میان amavisd-milter و amavis. پروتکل مورد استفاده روی این سوکت AM.PDP (پروتکل تفویض خط‌مشی AMavis) است. این مقدار باید با متغیر $unix_socketname در فایل amavisd.conf یکسان باشد.

مقدار socket باید به قالب proto:address باشد:

•
{unix|local}:/path/to/file - یک لوله نام‌گذاری‌شده (named pipe).
•
inet:port@{hostname|ip-address} - یک سوکت IPv4.
•
inet6:port@{hostname|ip-address} - یک سوکت IPv6.
مهلت زمانی اتصال sendmail بر حسب ثانیه (پیش‌فرض ۶۰۰ = ۱۰ دقیقه). باید با ماکروی INPUT_MAIL_FILTER در فایل sendmail.mc یکسان باشد و باید بزرگتر یا مساوی با مهلت زمانی اتصال amavis باشد.

اگر از سایر میلترها (به ویژه موارد زمان‌بر) استفاده می‌کنید، مهلت زمانی باید برای پردازش پیام در تمام میلترها کافی باشد.

مهلت زمانی اتصال amavis بر حسب ثانیه (پیش‌فرض ۶۰۰ = ۱۰ دقیقه). باید برای پردازش پیام در amavis کافی باشد. معمولاً بهتر است آن را روی مقداری برابر با مهلت زمانی اتصال sendmail تنظیم کنید.
گزارش شماره نسخه و خروج.
تنظیم دایرکتوری کاری.

اگر گزینه -B فعال باشد، amavisd-milter از مقدار ماکروی میلتر {daemon_name} به عنوان نام بانک خط‌مشی amavis استفاده می‌کند. معمولاً این ماکروی میلتر روی نام MTA تنظیم می‌شود.

هنگامی که کلاینت دوردست احراز هویت می‌شود، amavisd-milter از اطلاعات احراز هویت به عنوان نام بانک‌های خط‌مشی amavis استفاده می‌کند:

SMTP_AUTH
کلاینت دوردست احراز هویت شده است.
SMTP_AUTH_<MECH>
سازوکار احراز هویت کلاینت دوردست.
SMTP_AUTH_<MECH>_<BITS>
تعداد بیت‌های مورد استفاده برای کلید رمزنگاری متقارن، در صورتی که سازوکار احراز هویت از آن استفاده کند.

در فایل amavisd.conf پروتکل و سوکت amavis را به موارد زیر تنظیم کنید:

$protocol = "AM.PDP";                      # Use AM.PDP protocol
$unix_socketname = "$MYHOME/amavisd.sock"; # Listen on Unix socket
### $inet_socket_port = 10024;             # Do not listen on TCP port

سپس دیمن amavisd را (مجدداً) راه‌اندازی کنید.

ورودی‌های زیر را به فایل main.cf در Postfix اضافه کنید:

smtpd_milters = local:<AMAVISD_MILTER.SOCK>
milter_connect_macros = j {client_name} {daemon_name} v
milter_protocol = 6

سپس دیمن Postfix را (مجدداً) راه‌اندازی کنید.

ورودی‌های زیر را به فایل sendmail.mc اضافه کنید:

define(`confMILTER_MACROS_CONNECT',
  confMILTER_MACROS_CONNECT`, {client_resolve}')
define(`confMILTER_MACROS_ENVFROM',
  confMILTER_MACROS_ENVFROM`, r, b')
INPUT_MAIL_FILTER(`amavisd-milter',
  `S=local:<AMAVISD_MILTER.SOCK>, F=T, T=S:10m;R:10m;E:10m')

سپس فایل sendmail.cf را دوباره بسازید، آن را نصب کرده و دیمن sendmail را (مجدداً) راه‌اندازی کنید.

این مثال فرض می‌کند که amavis با کاربر vscan در حال اجرا است. نام واقعی در متغیر $daemon_user در فایل amavisd.conf نمایش داده می‌شود.

برای محدود کردن حداکثر اتصالات هم‌روند به amavis، دستور amavisd-milter را با این گزینه‌ها اجرا کنید:

su - vscan -c "amavisd-milter -m 4"

برای عیب‌یابی، amavisd-milter را در پیش‌زمینه اجرا کرده و سطح اشکال‌زدایی را روی مقدار مناسب تنظیم کنید:

su - vscan -c "amavisd-milter -f -d 4"

سطوح اشکال‌زدایی عبارتند از:

•
1 - خطا نیستند بلکه وضعیت‌های غیرمنتظره هستند (مانند قطع اتصال و غیره).
•
2 - وضعیت‌های اصلی در پردازش پیام.
•
3 - تمام پیام‌های اشکال‌زدایی amavisd-milter.
•
4-9 - اشکال‌زدایی ارتباط میلتر (تنظیم smfi_setdbg روی 1-6).

•
https://github.com/prehor/amavisd-milter
•
https://www.ijs.si/software/amavisd
•
https://www.sendmail.org

این صفحه راهنما توسط Petr Rehor نوشته شده و بر پایه کارهای اولیه Jerzy Sakol است.

مشکلات را می‌توان با استفاده از گیت‌هاب در آدرس زیر گزارش داد:

برای اطلاعات دقیق و کامل درباره نحوه گزارش مشکلات، لطفاً راهنمای مشارکت را در نشانی زیر ببینید:

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

اگر به مشکلی برخوردید، قبل از ایجاد یک مورد جدید، ابتدا مسائل (issues) گیت‌هاب را بررسی کنید. بسیار محتمل است که شخص دیگری با همین مشکل مواجه شده و قبلاً حل شده باشد.

Version 1.7.2