اوبنتوسرورلینوکس

آموزش نصب و پیکربندی Postfix در اوبونتو 24.04

مقدمه پست‌فیکس (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 را با تمرکز بر امنیت طراحی کرد و ویژگی‌هایی مانند تفکیک امتیازات (جایی که اجزای مختلف با حداقل دسترسی‌های سیستمی اجرا می‌شوند) و معماری ماژولار را در آن پیاده‌سازی کرد.


سیستم‌های ایمیل چگونه کار می‌کنند؟

یک سیستم ایمیل کامل دارای سه مؤلفه اصلی است:

  1. عامل انتقال ایمیل (MTA): این نقش Postfix است. MTA مسئول بخش «سرور به سرور» در تحویل ایمیل است.
  2. عامل کاربر ایمیل (MUA): این کلاینت ایمیلی است که کاربران با آن تعامل دارند (مثل s-nail، Outlook، Thunderbird و غیره).
  3. عامل تحویل ایمیل (MDA): ابزارهایی مانند Dovecot که مرحله نهایی ذخیره پیام‌های دریافتی در صندوق پستی کاربران را بر عهده دارند و دسترسی به آن‌ها را از طریق پروتکل‌هایی مانند IMAP یا POP3 فراهم می‌کنند.

مرحله ۱ — نصب Postfix

پست‌فیکس در مخازن پیش‌فرض اوبونتو موجود است، بنابراین می‌توانید آن را با APT نصب کنید.

ابتدا کش پکیج محلی خود را به‌روزرسانی کنید:

bash
sudo apt update

سپس پکیج postfix را نصب کنید. متغیر محیطی DEBIAN_PRIORITY=low باعث می‌شود تا در طول نصب، پیکربندی‌های اضافی از شما پرسیده شود:

bash
sudo DEBIAN_PRIORITY=low apt install postfix -y

در طول نصب، یک صفحه پیکربندی تعاملی در ترمینال شما ظاهر می‌شود. به سوالات به شکل زیر پاسخ دهید:

  • 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 را انتخاب کنید.

پس از اتمام نصب، وضعیت سرویس را بررسی کنید:

bash
sudo systemctl status postfix

باید خروجی نشان دهد که سرویس active (running) است.


مرحله ۲ — تغییر پیکربندی Postfix

بسیاری از تنظیمات Postfix در فایل /etc/postfix/main.cf تعریف می‌شوند. به جای ویرایش مستقیم این فایل، از دستور postconf استفاده می‌کنیم.

ابتدا محل صندوق پستی کاربر خود را تنظیم کنید. در این راهنما از فرمت Maildir استفاده می‌کنیم که هر پیام را در یک فایل جداگانه ذخیره می‌کند:

bash
sudo postconf -e ‘home_mailbox=Maildir/’

سپس، مکان فایل virtual_alias_maps را تنظیم کنید تا بتوانید ایمیل‌های ارسالی به آدرس‌های دلخواه را به حساب‌های کاربری سیستم لینوکس خود نگاشت (Map) کنید:

bash
sudo postconf -e ‘virtual_alias_maps=hash:/etc/postfix/virtual’

اکنون فایل مجازی را ایجاد کنید:

bash
sudo nano /etc/postfix/virtual

آدرس‌هایی که می‌خواهید ایمیل آن‌ها را دریافت کنید را به همراه نام کاربری لینوکس وارد کنید. به عنوان مثال:

/etc/postfix/virtual

text
contact@example.com sammy
admin@example.com sammy

فایل را ذخیره و ببندید. سپس نقشه‌برداری را اعمال کنید:

bash
sudo postmap /etc/postfix/virtual

برای اعمال تغییرات، Postfix را ری‌استارت کنید:

bash
sudo systemctl restart postfix

اگر از UFW استفاده می‌کنید، ترافیک SMTP را مجاز کنید:

bash
sudo ufw allow Postfix

مرحله ۳ — نصب کلاینت ایمیل و راه‌اندازی ساختار Maildir

برای تعامل با ایمیل‌های تحویل‌شده، پکیج s-nail را نصب می‌کنیم:

bash
sudo apt install s-nail

پیش از اجرای کلاینت، چند تنظیم را در فایل پیکربندی آن انجام دهید:

bash
sudo nano /etc/s-nail.rc

در انتهای فایل، گزینه‌های زیر را اضافه کنید:

/etc/s-nail.rc

text
. . .
set emptystart
set folder=Maildir
set record=+sent

فایل را ذخیره کنید. اکنون برای ایجاد ساختار Maildir در دایرکتوری خانه خود، یک ایمیل测试 به خودتان بفرستید:

bash
echo ‘init’ | s-nail -s ‘init’ -Snorecord sammy

(به جای sammy از نام کاربری خود استفاده کنید).

برای اطمینان از ایجاد دایرکتوری:

bash
ls -R ~/Maildir

مرحله ۴ — تست کلاینت

کلاینت را باز کنید:

bash
s-nail

ایمیل init را خواهید دید. کلید ENTER را بزنید تا نمایش داده شود. برای بازگشت به لیست پیام‌ها h را تایپ کنید. برای حذف پیام d و برای خروج q را تایپ کنید.

برای تست ارسال ایمیل به یک آدرس خارجی، یک فایل متنی تستی بسازید:

bash
nano ~/test_message

متن دلخواه خود را وارد کرده و فایل را ذخیره کنید. سپس آن را با دستور زیر ارسال کنید:

bash
cat ~/test_message | s-nail -s ‘Test email subject line’ -r contact@example.com user@email.com

ایمیل باید در صندوق ورودی مقصد ظاهر شود. (اگر ظاهر نشد، پوشه اسپم را بررسی کنید).


پیکربندی Postfix به عنوان سرور SMTP فقط ارسال (Send-Only)

در بسیاری از موارد، شما فقط نیاز دارید که Postfix ایمیل‌های خروجی را ارسال کند و نیازی به دریافت ایمیل ندارید. این تنظیم برای اپلیکیشن‌های وب و سیستم‌های مانیتورینگ ایده‌آل است.

مرحله ۱ — محدود کردن Postfix به Localhost برای اینکه Postfix فقط به رابط‌های محلی گوش دهد:

bash
sudo postconf -e ‘inet_interfaces=loopback-only’

مرحله ۲ — غیرفعال کردن تحویل دامنه محلی برای جلوگیری از دریافت ایمیل برای هیچ دامنه‌ای:

bash
sudo postconf -e ‘mydestination=’

مرحله ۳ — ری‌استارت Postfix

bash
sudo systemctl restart postfix

مرحله ۴ — بررسی پیکربندی برای اطمینان از اینکه Postfix فقط روی localhost گوش می‌دهد:

bash
sudo ss -tulnp | grep :25

خروجی باید نشان دهد که Postfix به 127.0.0.1:25 متصل است و نه به 0.0.0.0:25.


پیکربندی رله SMTP (توصیه شده)

از آنجایی که ارائه‌دهندگان فضای ابری (مانند پارمین کلود یا سایر سرویس‌ها) معمولاً ترافیک خروجی پورت 25 را مسدود می‌کنند، بهتر است از یک سرویس رله SMTP مانند SendGrid یا Mailgun استفاده کنید.

برای پیکربندی رله:

bash
sudo postconf -e ‘relayhost=[smtp.example.com]:587’

(آدرس smtp.example.com را با آدرس ارائه‌دهنده سرویس رله خود جایگزین کنید).

سپس Postfix را ری‌استارت کنید. توجه داشته باشید که اکثر سرویس‌های رله نیاز به احراز هویت (SASL) و رمزنگاری TLS دارند که باید بر اساس مستندات ارائه‌دهنده، آن‌ها را پیکربندی کنید.


فعال‌سازی رمزنگاری TLS برای SMTP امن

سرورهای ایمیل مدرن انتظار ارتباط رمزنگاری‌شده با STARTTLS دارند.

مرحله ۱ — نصب گواهینامه SSL از Let’s Encrypt برای دریافت گواهی استفاده کنید:

bash
sudo apt install certbot
sudo certbot certonly –standalone -d mail.example.com

مرحله ۲ — پیکربندی TLS در Postfix مسیر گواهی و کلید را به Postfix نشان دهید:

bash
sudo postconf -e ‘smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem’
sudo postconf -e ‘smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem’

فعال‌سازی TLS اختیاری (Opportunistic) برای ارتباطات ورودی و خروجی:

bash
sudo postconf -e ‘smtpd_tls_security_level=may’
sudo postconf -e ‘smtp_tls_security_level=may’
sudo postconf -e ‘smtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt’

مرحله ۳ — ری‌استارت سرویس

bash
sudo systemctl restart postfix

مرحله ۴ — تمدید خودکار گواهی برای اینکه Postfix پس از هر بار تمدید گواهی (هر 90 روز) ری‌استارت شود، یک Hook ایجاد کنید:

bash
sudo nano /etc/letsencrypt/renewal-hooks/deploy/restart-postfix.sh

محتوای زیر را در آن قرار دهید:

bash
#!/bin/bash
systemctl restart postfix

سپس به آن مجوز اجرا بدهید:

bash
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/restart-postfix.sh

رفع مشکلات (Troubleshooting) و بررسی صف ایمیل

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

bash
sudo tail -f /var/log/mail.log
# یا
sudo journalctl -u postfix -f

بررسی صف ایمیل (Mail Queue): اگر ایمیل‌ها ارسال نمی‌شوند، ممکن است در صف منتظر باشند. برای مشاهده صف:

bash
mailq
# یا
sudo postqueue -p

برای تلاش مجدد در ارسال ایمیل‌های موجود در صف:

bash
sudo postqueue -f

مشکل رایج: مسدود بودن پورت 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 ترکیب کنید تا یک سرور ایمیل کامل بسازید.

از همراهی شما با پارمین کلود سپاسگزاریم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

همچنین ببینید
بستن
دکمه بازگشت به بالا