MSMTPD(1) General Commands Manual MSMTPD(1)

msmtpd - یک سرور کمینه SMTP

msmtpd [option...]

برنامه msmtpd یک سرور کمینه SMTP است که ایمیل‌ها را برای تحویل به msmtp (یا برنامه‌ای دیگر) هدایت (pipe) می‌کند. می‌توان از آن برای سرویس‌های سیستمی که انتظار یک سرور SMTP بر روی میزبان محلی دارند استفاده کرد، یا توسط کاربران نهایی به عنوان روشی برای مدیریت ایمیل‌های خروجی از طریق msmtp همراه با کلاینت‌های ایمیلی که بر استفاده از SMTP اصرار دارند به کار گرفته شود. بخش «مثال‌ها (EXAMPLES)» در زیر شامل نمونه‌هایی برای هر دو مورد کاربرد است.
برنامه msmtpd به طور پیش‌فرض روی 127.0.0.1 و پورت 25 گوش فرا می‌دهد، اما همچنین می‌تواند بدون سوکت‌های شبکه اختصاصی خود در حالت inetd اجرا شود، جایی که یک نشست SMTP منفرد را روی ورودی / خروجی استاندارد مدیریت می‌کند.
در رشته‌ای که دستوری را مشخص می‌کند که msmtpd هر ایمیل را به آن پایپ می‌کند، اولین رخداد %F با نشانی فرستنده پاکت (envelope from) جایگزین خواهد شد. علاوه بر این، تمام گیرندگان ایمیل به عنوان آرگومان ضمیمه خواهند شد. این دستور نباید در خروجی استاندارد بنویسد، چرا که این کار نشست SMTP را مختل می‌کند.
اگر دستوری که ایمیل به آن هدایت شده است خطایی گزارش دهد، این مورد به طور معمول توسط msmtpd به عنوان یک شکست دائمی گزارش می‌شود (کد وضعیت سرور SMTP شماره 554). این دستور می‌تواند به صورت اختیاری با استفاده از کدهای بازگشتی تعریف‌شده در sysexits.h خطاهای موقت را اعلام کند، مثلاً 75 برای EX_TEMPFAIL. این موارد سپس به عنوان خطاهای موقت توسط msmtpd گزارش می‌شوند (کد وضعیت سرور SMTP شماره 451)، که به این معنی است که کلاینت باید بعداً دوباره تلاش کند.
برای جلوگیری از سوءاستفاده، msmtpd تنها تعداد محدودی نشست هم‌زمان SMTP را مجاز می‌داند، و اگر احراز هویت فعال باشد و خطای احراز هویت رخ دهد، درخواست‌های احراز هویت بعدی در هر نشست SMTP (برای مدت زمان محدودی) تنها پس از یک تأخیر کوتاه پاسخ داده خواهند شد.

چاپ اطلاعات نسخه
چاپ راهنما
شروع یک نشست SMTP منفرد روی stdin/stdout
گوش دادن روی نشانی IPv6 یا IPv4 مشخص‌شده به جای 127.0.0.1
گوش دادن روی شماره پورت مشخص‌شده به جای 25
تنظیم ثبت لاگ: none (پیش‌فرض)، syslog، یا ثبت در فایل مشخص‌شده.
هدایت (pipe) ایمیل‌ها به cmd به جای msmtp. اطمینان حاصل کنید که این دستور را با -- پایان دهید تا گزینه‌ها از آرگومان‌ها جدا شوند.
الزام احراز هویت با این نام کاربری. گذرواژه از طریق دستور passwordeval داده‌شده بازیابی می‌شود (این سازوکار دقیقاً مانند passwordeval در msmtp عمل می‌کند) یا اگر مشخص نشده باشد، از جاکلیدی (keyring) یا در صورت عدم موفقیت، از طریق اعلان ورودی (prompt) دریافت خواهد شد.

استفاده از msmtpd به عنوان یک سرویس سیستمی
تنها از یک رابط محلی برای گوش دادن استفاده کنید. msmtpd را با دسترسی‌ها و مجوزهای کاربری مناسب اجرا کنید (مثلاً از CAP_NET_BIND_SERVICE برای اتصال به پورت 25 به جای اجرا به عنوان ریشه استفاده کنید، یا از قابلیت‌های سرویس inetd در systemd بهره ببرید). توجه داشته باشید که دستور هدایت‌شده تحت همان کاربری اجرا خواهد شد که msmtpd اجرا می‌شود. ثبت گزارش در syslog را با --log=syslog فعال کنید.
مثال برای مدیریت msmtpd با start-stop-daemon:
# start msmtpd
start-stop-daemon --start --pidfile /var/run/msmtpd.pid --make-pidfile --chuid msmtpd --background --exec /usr/local/bin/msmtpd -- --command '/usr/local/bin/msmtp -f %F --'
# stop msmtpd
start-stop-daemon --stop --pidfile /var/run/msmtpd.pid --remove-pidfile --quiet --signal TERM
استفاده از msmtpd برای مدیریت ایمیل‌های خروجی در یک کلاینت ایمیل مبتنی بر SMTP
برخی کلاینت‌های ایمیل نمی‌توانند ایمیل‌های خروجی را با برنامه‌ای مانند msmtp ارسال کنند و در عوض بر استفاده از یک سرور SMTP اصرار دارند. می‌توانید msmtpd را طوری پیکربندی کنید که آن سرور SMTP باشد و ایمیل‌های خروجی شما را به msmtp تحویل دهد.
(به همین ترتیب، برخی کلاینت‌های ایمیل نمی‌توانند ایمیل‌های دریافتی را از صندوق پستی محلی دریافت کنند و بر استفاده از سرور POP3 یا IMAP اصرار دارند. شما می‌توانید mpopd را به گونه‌ای پیکربندی کنید که آن سرور POP3 باشد و ایمیل‌های دریافتی را از صندوق پستی محلی ارائه دهد. بخش مربوطه را در راهنمای mpop ببینید.)
برای این منظور، msmtpd باید روی یک پورت غیرممتاز (بدون دسترسی ریشه)، مثلاً 2500 گوش دهد. علاوه بر این، msmtpd باید نیازمند احراز هویت باشد زیرا در غیر این صورت هر کسی که به آن متصل شود می‌تواند با استفاده از حساب شما ایمیل بفرستد، حتی اگر صرفاً سایر کاربران یا فرآیندهای روی ماشین محلی شما باشند.
بیایید از نام کاربری msmtpd-user برای این منظور استفاده کنیم. شما دو راه برای مدیریت گذرواژه دارید:

ذخیره گذرواژه در جاکلیدی (keyring) خود، مثلاً با secret-tool store --label=msmtpd host localhost service smtp user msmtpd-user. در این حالت، از گزینه --auth=msmtpd-user در msmtpd استفاده کنید.
ذخیره گذرواژه در یک فایل رمزگذاری‌شده و استفاده از سازوکار passwordeval. مثال برای gpg: msmtpd ... --auth=msmtpd-user,'gpg -q -d ~/.msmtpd-password.gpg'

دستور کامل در این صورت (با استفاده از جاکلیدی) عبارت است از: msmtpd --port=2500 --auth=msmtpd-user --command='/path/to/your/msmtp -f %F --'
سپس نرم‌افزار کلاینت ایمیل باید پیکربندی شود تا از localhost روی پورت 2500 برای ایمیل‌های خروجی از طریق SMTP استفاده کند و با کاربر msmtpd-user و گذرواژه‌ای که انتخاب کرده‌اید احراز هویت انجام دهد. کلاینت ایمیل احتمالاً اخطار خواهد داد که سرور SMTP از TLS پشتیبانی نمی‌کند، اما در این مورد خاص مشکلی وجود ندارد زیرا تمام ارتباطات بین کلاینت ایمیل شما و msmtpd روی ماشین محلی باقی می‌ماند.
این پیکربندی با چندین حساب ایمیل نیز به خوبی کار می‌کند. برنامه msmtp حساب مناسب را بر اساس نشانی envelope-from داده‌شده به آن از طریق -f %F انتخاب خواهد کرد. شما نیازی به چندین نمونه از msmtpd برای این منظور ندارید، و بنابراین تنها به یک سرور SMTP در پیکربندی کلاینت ایمیل خود احتیاج خواهید داشت.

msmtp(1)

2021-09