
مقدمه پستفیکس (Postfix) یک عامل انتقال ایمیل (Mail Transfer Agent یا MTA) متنباز و محبوب است که میتوان از آن برای مسیریابی و تحویل ایمیلها در سیستمهای لینوکسی استفاده کرد.
در این راهنما، با نحوه نصب و پیکربندی Postfix روی یک سرور اوبونتو آشنا خواهید شد. سپس، با نصب s-nail (یک عامل کاربر ایمیل یا MUA که به عنوان کلاینت ایمیل نیز شناخته میشود)، آزمایش میکنید که آیا Postfix میتواند ایمیلها را به درستی مسیریابی کند یا خیر.
توجه داشته باشید که هدف این آموزش، راهاندازی سریع Postfix با حداقل امکانات اولیه ایمیل است. در پایان این راهنما شما یک سرور ایمیل تمامعیار نخواهید داشت، اما برخی از اجزای بنیادی چنین سیستمی را برای شروع کار در اختیار خواهید داشت.
نکات کلیدی:
- امنیت از طریق ایزولهسازی: پستفیکس اجزای مختلف را به عنوان پردازشهای جداگانه با حداقل دسترسیهای سیستمی اجرا میکند.
- حالت فقط ارسال (Send-Only): برای اکثر استقرارهای مدرن، پیکربندی Postfix به عنوان یک سرور SMTP فقط ارسال، عملیتر از اجرای یک سرور ایمیل کامل است و خطرات امنیتی و پیچیدگی مدیریت را کاهش میدهد.
- مسدودی پورت ۲۵: ارائهدهندگان فضای ابری معمولاً ترافیک خروجی پورت 25 را مسدود میکنند، بنابراین استفاده از سرویسهای رله SMTP (مانند SendGrid) برای تحویل قابل اعتماد ایمیل از سرورهای ابری ضروری است.
- رمزنگاری TLS: فعالسازی رمزنگاری TLS با STARTTLS برای تحویل ایمیل حیاتی است، زیرا ارائهدهندگان بزرگ ایمیل (مثل جیمیل و اوتلوک) پیامهای رمزنگارینشده را رد کرده یا به عنوان اسپم علامتگذاری میکنند.
- رکوردهای DNS: پیکربندی صحیح DNS شامل رکوردهای SPF، DKIM و DMARC به اندازه TLS برای اطمینان از رسیدن ایمیلها به صندوق ورودی گیرنده (به جای پوشه اسپم) مهم است.
- فرمت Maildir: این فرمت هر ایمیل را به عنوان یک فایل مجزا ذخیره میکند که قابلیت اطمینان بالاتری دارد و از مشکلات قفلگذاری فایل (که در فرمت سنتی mbox وجود دارد) جلوگیری میکند.
پیشنیازها راهاندازی و نگهداری سرور ایمیل شخصی پیچیده و زمانبر است. برای اکثر کاربران، استفاده از سرویسهای ایمیل پولی منطقیتر است. اگر اصرار به راهاندازی سرور شخصی دارید، ابتدا باید موارد زیر را داشته باشید:
- یک سرور اوبونتو (ترجیحاً نسخه 24.04) که به عنوان سرور ایمیل Postfix شما عمل کند. این سرور باید دارای یک کاربر غیر روت (non-root) با دسترسی sudo و فایروال پیکربندیشده با UFW باشد. میتوانید راهنمای راهاندازی اولیه سرور در پارمین کلود (Parmin Cloud) را دنبال کنید.
- یک نام دامنه کاملاً واجد شرایط (FQDN) که به سرور اوبونتو شما اشاره داشته باشد. میتوانید با مراجعه به مستندات دامنهها و شبکه DNS در پارمین کلود، راهنماییهای لازم برای تنظیم نام دامنه خود را دریافت کنید. اگر قصد دارید ایمیلها را از یک موقعیت خارجی دریافت کنید، باید مطمئن شوید که یک رکورد MX نیز به سرور ایمیل شما اشاره دارد.
- نکته: این آموزش فرض میکند که شما در حال پیکربندی هاستی با FQDN برابر با
mail.example.comهستید. در صورت لزوم، حتماًexample.comیاmail.example.comرا با FQDN واقعی خود جایگزین کنید.
پستفیکس چیست؟
پستفیکس یک MTA متنباز است که ایمیلها را در سیستمهای لینوکسی مسیریابی و تحویل میدهد. وظیفه Postfix دریافت پیامهای ایمیل و تحویل آنها به مقصد نهایی است؛ چه این مقصد روی همان سرور باشد و چه روی سرورهای ایمیل ریموت در سراسر اینترنت. تمام این ارتباطات با استفاده از پروتکل ساده انتقال ایمیل (SMTP) انجام میشود.
پستفیکس در اواخر دهه 1990 در IBM Research توسط Wietse Venema به عنوان جایگزینی امنتر و راحتتر برای Sendmail (که در آن زمان MTA غالب بود) توسعه یافت. Venema، Postfix را با تمرکز بر امنیت طراحی کرد و ویژگیهایی مانند تفکیک امتیازات (جایی که اجزای مختلف با حداقل دسترسیهای سیستمی اجرا میشوند) و معماری ماژولار را در آن پیادهسازی کرد.
سیستمهای ایمیل چگونه کار میکنند؟
یک سیستم ایمیل کامل دارای سه مؤلفه اصلی است:
- عامل انتقال ایمیل (MTA): این نقش Postfix است. MTA مسئول بخش «سرور به سرور» در تحویل ایمیل است.
- عامل کاربر ایمیل (MUA): این کلاینت ایمیلی است که کاربران با آن تعامل دارند (مثل s-nail، Outlook، Thunderbird و غیره).
- عامل تحویل ایمیل (MDA): ابزارهایی مانند Dovecot که مرحله نهایی ذخیره پیامهای دریافتی در صندوق پستی کاربران را بر عهده دارند و دسترسی به آنها را از طریق پروتکلهایی مانند IMAP یا POP3 فراهم میکنند.
مرحله ۱ — نصب Postfix
پستفیکس در مخازن پیشفرض اوبونتو موجود است، بنابراین میتوانید آن را با APT نصب کنید.
ابتدا کش پکیج محلی خود را بهروزرسانی کنید:
سپس پکیج postfix را نصب کنید. متغیر محیطی DEBIAN_PRIORITY=low باعث میشود تا در طول نصب، پیکربندیهای اضافی از شما پرسیده شود:
در طول نصب، یک صفحه پیکربندی تعاملی در ترمینال شما ظاهر میشود. به سوالات به شکل زیر پاسخ دهید:
- General type of mail configuration?: گزینه
Internet Siteرا انتخاب کنید. - System mail name: این نام دامنه پایه است. اگر نام هاست سرور شما
mail.example.comاست، این مقدار را رویexample.comتنظیم کنید. - Root and postmaster mail recipient: حساب کاربری لینوکسی که ایمیلهای ارسالی به
root@وpostmaster@را دریافت میکند. از نام کاربری اصلی خود استفاده کنید. - Other destinations to accept mail for: مقادیر پیشفرض کافی است.
- Force synchronous updates on mail queue?: گزینه
Noرا برای عملکرد بهتر انتخاب کنید. - Local networks: شبکههایی که مجاز به رله ایمیل از طریق سرور شما هستند. مقدار پیشفرض مناسب است.
- Mailbox size limit: برای حذف محدودیت حجم، عدد
0را وارد کنید. - Local address extension character: کاراکتر پیشفرض
+را بپذیرید. - Internet protocols to use: گزینه
allرا انتخاب کنید.
پس از اتمام نصب، وضعیت سرویس را بررسی کنید:
باید خروجی نشان دهد که سرویس active (running) است.
مرحله ۲ — تغییر پیکربندی Postfix
بسیاری از تنظیمات Postfix در فایل /etc/postfix/main.cf تعریف میشوند. به جای ویرایش مستقیم این فایل، از دستور postconf استفاده میکنیم.
ابتدا محل صندوق پستی کاربر خود را تنظیم کنید. در این راهنما از فرمت Maildir استفاده میکنیم که هر پیام را در یک فایل جداگانه ذخیره میکند:
سپس، مکان فایل virtual_alias_maps را تنظیم کنید تا بتوانید ایمیلهای ارسالی به آدرسهای دلخواه را به حسابهای کاربری سیستم لینوکس خود نگاشت (Map) کنید:
اکنون فایل مجازی را ایجاد کنید:
آدرسهایی که میخواهید ایمیل آنها را دریافت کنید را به همراه نام کاربری لینوکس وارد کنید. به عنوان مثال:
/etc/postfix/virtual
فایل را ذخیره و ببندید. سپس نقشهبرداری را اعمال کنید:
برای اعمال تغییرات، Postfix را ریاستارت کنید:
اگر از UFW استفاده میکنید، ترافیک SMTP را مجاز کنید:
مرحله ۳ — نصب کلاینت ایمیل و راهاندازی ساختار Maildir
برای تعامل با ایمیلهای تحویلشده، پکیج s-nail را نصب میکنیم:
پیش از اجرای کلاینت، چند تنظیم را در فایل پیکربندی آن انجام دهید:
در انتهای فایل، گزینههای زیر را اضافه کنید:
/etc/s-nail.rc
فایل را ذخیره کنید. اکنون برای ایجاد ساختار Maildir در دایرکتوری خانه خود، یک ایمیل测试 به خودتان بفرستید:
(به جای sammy از نام کاربری خود استفاده کنید).
برای اطمینان از ایجاد دایرکتوری:
مرحله ۴ — تست کلاینت
کلاینت را باز کنید:
ایمیل init را خواهید دید. کلید ENTER را بزنید تا نمایش داده شود. برای بازگشت به لیست پیامها h را تایپ کنید. برای حذف پیام d و برای خروج q را تایپ کنید.
برای تست ارسال ایمیل به یک آدرس خارجی، یک فایل متنی تستی بسازید:
متن دلخواه خود را وارد کرده و فایل را ذخیره کنید. سپس آن را با دستور زیر ارسال کنید:
ایمیل باید در صندوق ورودی مقصد ظاهر شود. (اگر ظاهر نشد، پوشه اسپم را بررسی کنید).
پیکربندی Postfix به عنوان سرور SMTP فقط ارسال (Send-Only)
در بسیاری از موارد، شما فقط نیاز دارید که Postfix ایمیلهای خروجی را ارسال کند و نیازی به دریافت ایمیل ندارید. این تنظیم برای اپلیکیشنهای وب و سیستمهای مانیتورینگ ایدهآل است.
مرحله ۱ — محدود کردن Postfix به Localhost برای اینکه Postfix فقط به رابطهای محلی گوش دهد:
مرحله ۲ — غیرفعال کردن تحویل دامنه محلی برای جلوگیری از دریافت ایمیل برای هیچ دامنهای:
مرحله ۳ — ریاستارت Postfix
مرحله ۴ — بررسی پیکربندی برای اطمینان از اینکه Postfix فقط روی localhost گوش میدهد:
خروجی باید نشان دهد که Postfix به 127.0.0.1:25 متصل است و نه به 0.0.0.0:25.
پیکربندی رله SMTP (توصیه شده)
از آنجایی که ارائهدهندگان فضای ابری (مانند پارمین کلود یا سایر سرویسها) معمولاً ترافیک خروجی پورت 25 را مسدود میکنند، بهتر است از یک سرویس رله SMTP مانند SendGrid یا Mailgun استفاده کنید.
برای پیکربندی رله:
(آدرس smtp.example.com را با آدرس ارائهدهنده سرویس رله خود جایگزین کنید).
سپس Postfix را ریاستارت کنید. توجه داشته باشید که اکثر سرویسهای رله نیاز به احراز هویت (SASL) و رمزنگاری TLS دارند که باید بر اساس مستندات ارائهدهنده، آنها را پیکربندی کنید.
فعالسازی رمزنگاری TLS برای SMTP امن
سرورهای ایمیل مدرن انتظار ارتباط رمزنگاریشده با STARTTLS دارند.
مرحله ۱ — نصب گواهینامه SSL از Let’s Encrypt برای دریافت گواهی استفاده کنید:
مرحله ۲ — پیکربندی TLS در Postfix مسیر گواهی و کلید را به Postfix نشان دهید:
فعالسازی TLS اختیاری (Opportunistic) برای ارتباطات ورودی و خروجی:
مرحله ۳ — ریاستارت سرویس
مرحله ۴ — تمدید خودکار گواهی برای اینکه Postfix پس از هر بار تمدید گواهی (هر 90 روز) ریاستارت شود، یک Hook ایجاد کنید:
محتوای زیر را در آن قرار دهید:
سپس به آن مجوز اجرا بدهید:
رفع مشکلات (Troubleshooting) و بررسی صف ایمیل
برای بررسی لاگهای Postfix میتوانید از دستورات زیر استفاده کنید:
بررسی صف ایمیل (Mail Queue): اگر ایمیلها ارسال نمیشوند، ممکن است در صف منتظر باشند. برای مشاهده صف:
برای تلاش مجدد در ارسال ایمیلهای موجود در صف:
مشکل رایج: مسدود بودن پورت 25 اگر ایمیلها با خطای Connection timed out در صف باقی میمانند، احتمالاً ارائهدهنده سرور شما پورت 25 را مسدود کرده است. در این صورت حتماً از روش رله SMTP (پورت 587) استفاده کنید.
مشکل رایج: رسیدن ایمیلها به پوشه اسپم اگر ایمیلها ارسال میشوند اما در پوشه اسپم گیرنده میروند، باید رکوردهای DNS خود را بررسی و تنظیم کنید:
- SPF: یک رکورد TXT در DNS ایجاد کنید تا نشان دهد کدام سرورها مجاز به ارسال ایمیل از دامنه شما هستند.
- DKIM: ایمیلها را به صورت крипتوگرافیک امضا کنید.
- PTR (Reverse DNS): مطمئن شوید آدرس IP سرور شما به نام هاست (FQDN) برگشت میخورد. این کار معمولاً از طریق پنل ارائهدهنده سرور (مانند پارمین کلود) انجام میشود.
نتیجهگیری
شما اکنون Postfix را روی سرور اوبونتو خود نصب و پیکربندی کردهاید. شما با نحوه ارسال و دریافت ایمیل محلی، پیکربندی سرور به حالت Send-Only، فعالسازی TLS برای ارتباطات امن و نحوه رفع مشکلات رایج آشنا شدید.
برای استفاده در محیط پروداکشن، حتماً باید رکوردهای احراز هویت فرستنده (SPF، DKIM، DMARC) را در DNS تنظیم کنید. با این پایه و اساس، اکنون میتوانید Postfix را برای اپلیکیشنهای خود مستقر کنید یا آن را با ابزارهایی مانند Dovecot برای دسترسی IMAP/POP3 ترکیب کنید تا یک سرور ایمیل کامل بسازید.
از همراهی شما با پارمین کلود سپاسگزاریم.




