SPAWN(8) System Manager's Manual SPAWN(8)

spawn - اجراکننده دستورات خارجی در Postfix

spawn [generic Postfix daemon options] command_attributes...


دیمن spawn(8) بر یک سوکت جریانی (stream socket) از نوع TCP یا UNIX-domain که در master.cf با نوع سرویس inet یا unix پیکربندی شده است، نظارت می‌کند.

این دیمن هنگام برقراری هر اتصال، یک دستور خارجی را اجرا می‌کند (spawn)، به‌طوری که توصیف‌کننده‌های فایل ورودی، خروجی و خطای استاندارد آن به کلاینت راه دور متصل می‌شوند.

فرآیند دستور تابع محدودیت زمانی تعیین‌شده با پارامتر transport_time_limit (پیش‌فرض: command_time_limit) است که در آن transport برابر با فیلد نام سرویس در master.cf می‌باشد. فرآیندی که از این محدودیت زمانی فراتر رود، سیگنال SIGKILL دریافت خواهد کرد.

سرویس دیمن spawn(8) معمولاً در تعریف سرویس خود در master.cf دارای محدودیت فرآیند (process limit) بزرگ‌تر از ۱ است، تا تعداد فرآیندها متناسب با تقاضا افزایش یابد.

ویژگی‌های دستور خارجی در فایل master.cf در انتهای تعریف سرویس مشخص می‌شوند. نحو آن به شرح زیر است:

دستور خارجی با دسترسی‌های username مشخص‌شده اجرا می‌شود. نرم‌افزار از اجرای دستورات با دسترسی‌های ریشه (root) یا با دسترسی‌های مالک سامانه ایمیل خودداری می‌کند. اگر groupname مشخص شود، شناسه گروه (group ID) متناظر به جای شناسه گروه username استفاده می‌شود.
دستوری که باید اجرا شود. این ویژگی باید به عنوان آخرین ویژگی دستور مشخص گردد. دستور مستقیماً اجرا می‌شود، یعنی بدون تفسیر نویسه‌های فرامعمول شل (shell meta characters) توسط یک مفسر دستورات شل.

اگر یکی از آرگومان‌های دستور باید حاوی فاصله سفید باشد، یا اگر یک آرگومان دستور باید با "{" آغاز شود، آرگومان را درون "{" و "}" محصور کنید. این قالب، فاصله‌های سفید بعد از "{" بیرونی و قبل از "}" بیرونی را نادیده می‌گیرد. مثال:



argv=/bin/sh -c { shell syntax here }


دیمن spawn(8) خروج‌های غیرعادی فرآیندهای فرزند را گزارش می‌کند. مشکلات در syslogd(8) یا postlogd(8) ثبت می‌شوند.

دیمن spawn(8) برای اجرای دستورات خارجی در قالب کاربر مشخص‌شده، به دسترسی ریشه (root) نیاز دارد. بنابراین از نظر امنیتی حساس است.

با این حال، دیمن spawn(8) داده‌ای را از یا درباره کلاینت‌های سرویس یا دستورات خارجی دریافت نمی‌کند، و بنابراین در برابر حملات مبتنی بر داده (data-driven) آسیب‌پذیر نیست.

تغییرات در main.cf به‌طور خودکار اعمال می‌شوند، زیرا فرآیندهای spawn(8) تنها برای مدت زمان محدودی اجرا می‌گردند. برای تسریع در اعمال تغییرات از دستور "postfix reload" استفاده کنید.

متن زیر تنها خلاصه‌ای از پارامترها را ارائه می‌دهد. برای جزئیات بیشتر شامل مثال‌ها به postconf(5) مراجعه کنید.

در متن زیر، transport نخستین فیلد ورودی در فایل master.cf است.

یک مقدار جایگزین ویژه روش انتقال برای مقدار پارامتر command_time_limit، که در آن transport نام روش انتقال تحویل پیام در master.cf است.

مکان پیش‌فرض فایل‌های پیکربندی main.cf و master.cf در Postfix.
حداکثر زمانی که یک فرآیند دیمن Postfix مجاز است برای رسیدگی به یک درخواست صرف کند، پیش از آن‌که توسط تایمر نگهبان داخلی (watchdog) متوقف شود.
فهرست متغیرهای محیطی که یک فرآیند Postfix به فرآیندهای غیر Postfix صادر می‌کند.
محدودیت زمانی برای ارسال یا دریافت اطلاعات از طریق یک کانال ارتباطی داخلی.
حساب کاربری یونیکس که مالک صف Postfix و اکثر فرآیندهای دیمن Postfix است.
حداکثر مدت زمانی که یک فرآیند دیمن بیکار Postfix برای یک اتصال ورودی منتظر می‌ماند پیش از آن‌که به صورت داوطلبانه خاتمه یابد.
حداکثر تعداد اتصالات ورودی که یک فرآیند دیمن Postfix پیش از توقف داوطلبانه به آن‌ها سرویس می‌دهد.
شناسه فرآیند (PID) یک دستور یا فرآیند دیمن Postfix.
نام فرآیند یک دستور یا فرآیند دیمن Postfix.
مکان دایرکتوری سطح بالای صف Postfix.
تسهیلات syslog برای ثبت وقایع Postfix.
پیشوندی که به ابتدای نام فرآیند در رکوردهای syslog افزوده می‌شود، به‌طوری که برای مثال "smtpd" به "prefix/smtpd" تبدیل می‌شود.

موجود در Postfix نسخه 3.3 و بالاتر:

نام سرویس در master.cf برای یک فرآیند دیمن Postfix.

postconf(5), configuration parameters
master(8), process manager
postlogd(8), Postfix logging
syslogd(8), system logging

مجوز Secure Mailer باید همراه با این نرم‌افزار توزیع شود.

Wietse Venema
IBM T.J. Watson Research
P.O. Box 704
Yorktown Heights, NY 10598, USA
Wietse Venema
Google, Inc.
111 8th Avenue
New York, NY 10011, USA