آموزش نصب و پیکربندی Postfix به‌عنوان سرور SMTP فقط برای ارسال ایمیل در Ubuntu 24.04 و Ubuntu 26.04

مقدمه

در بسیاری از پروژه‌های لینوکسی، برنامه‌ها و سرویس‌ها نیاز دارند ایمیل‌هایی مانند اعلان‌های سیستمی، گزارش خطا، نسخه‌های پشتیبان، اطلاعیه‌های مانیتورینگ یا پیام‌های تأیید را ارسال کنند. برای این منظور نیازی به راه‌اندازی یک سرور ایمیل کامل نیست و استفاده از یک SMTP Server فقط برای ارسال ایمیل (Send-Only SMTP Server) گزینه‌ای سبک‌تر، سریع‌تر و ساده‌تر محسوب می‌شود.

Postfix یکی از محبوب‌ترین Mail Transfer Agent (MTA)های لینوکس است که امنیت بالا، مصرف منابع کم و پیکربندی ساده‌ای دارد. در این آموزش، Postfix را به گونه‌ای پیکربندی می‌کنیم که تنها برنامه‌های محلی سرور قادر به ارسال ایمیل باشند و هیچ اتصال SMTP خارجی پذیرفته نشود.

همچنین برای افزایش امنیت، از گواهینامه رایگان Let’s Encrypt جهت رمزنگاری ارتباط SMTP استفاده خواهیم کرد و در پایان نیز نکات مهمی برای جلوگیری از اسپم شدن ایمیل‌ها بررسی می‌کنیم.

در پایان این آموزش، یک سرور Send-Only SMTP ایمن و آماده استفاده روی Ubuntu 24.04 یا Ubuntu 26.04 خواهید داشت.


پیش‌نیازها

قبل از شروع این آموزش، موارد زیر باید آماده باشند:

  • یک سرور با Ubuntu 24.04 LTS یا Ubuntu 26.04
  • دسترسی به کاربر دارای مجوز sudo
  • یک دامنه ثبت‌شده (مانند example.com)
  • تنظیم رکورد A دامنه به IP سرور
  • تنظیم صحیح Hostname سرور

برای مشاهده Hostname فعلی:

hostnamectl

در صورت نیاز می‌توانید آن را تغییر دهید:

sudo hostnamectl set-hostname mail.example.com

سپس فایل hosts را نیز ویرایش کنید:

sudo nano /etc/hosts

نمونه:

127.0.0.1 localhost
127.0.1.1 mail.example.com mail

در پایان سیستم را یک بار ریستارت یا سرویس hostname را مجدداً بارگذاری کنید.


مرحله ۱ — به‌روزرسانی سیستم و نصب Postfix

ابتدا لیست بسته‌ها را به‌روزرسانی کنید:

sudo apt update
sudo apt upgrade -y

سپس Postfix و ابزار Mailutils را نصب کنید:

sudo apt install postfix mailutils -y

در هنگام نصب، پنجره پیکربندی Postfix نمایش داده می‌شود.

در قسمت General type of mail configuration گزینه زیر را انتخاب کنید:

Internet Site

سپس در قسمت System mail name نام دامنه خود را وارد کنید:

example.com

اگر این پنجره نمایش داده نشد، هر زمان می‌توانید دوباره آن را اجرا کنید:

sudo dpkg-reconfigure postfix

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

systemctl status postfix

در صورت اجرای صحیح، خروجی باید مشابه زیر باشد:

Active: active (running)

اکنون Postfix روی سیستم نصب شده و آماده پیکربندی است.


مرحله ۲ — بررسی فایل پیکربندی Postfix

تمام تنظیمات اصلی Postfix داخل فایل زیر قرار دارد:

/etc/postfix/main.cf

قبل از هرگونه تغییر، بهتر است از فایل نسخه پشتیبان تهیه کنید:

sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.bak

سپس فایل را باز کنید:

sudo nano /etc/postfix/main.cf

در ادامه آموزش، تنظیمات مختلف این فایل را مرحله‌به‌مرحله تغییر خواهیم داد تا Postfix تنها به‌عنوان یک سرور ارسال ایمیل عمل کند.


مرحله ۳ — پیکربندی Postfix برای ارسال ایمیل فقط از سرور (Send-Only)

به‌صورت پیش‌فرض، Postfix می‌تواند برای دریافت ایمیل نیز پیکربندی شود؛ اما در این آموزش هدف ما ایجاد یک SMTP Server فقط برای ارسال ایمیل است. بنابراین باید Postfix را طوری تنظیم کنیم که تنها درخواست‌های محلی (localhost) را بپذیرد و هیچ اتصال SMTP از خارج سرور قبول نشود.

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

sudo nano /etc/postfix/main.cf

محدود کردن رابط‌های شبکه

دستور زیر را پیدا کنید:

inet_interfaces = all

آن را به مقدار زیر تغییر دهید:

inet_interfaces = loopback-only

یا در برخی نسخه‌های جدید Postfix می‌توانید از مقدار زیر استفاده کنید:

inet_interfaces = localhost

با این تنظیم، Postfix فقط روی رابط Loopback گوش می‌دهد و هیچ اتصال SMTP از شبکه یا اینترنت پذیرفته نخواهد شد.


تنظیم دامنه‌های محلی

سپس گزینه mydestination را پیدا کنید.

ممکن است مشابه نمونه زیر باشد:

mydestination = $myhostname, example.com, localhost.localdomain, localhost

آن را به مقدار زیر تغییر دهید:

mydestination = localhost.$mydomain, localhost, $myhostname

این تنظیم باعث می‌شود Postfix فقط ایمیل‌های مربوط به میزبان محلی را پردازش کند.


تنظیم نام میزبان

در ادامه، مقدار myhostname را بررسی کنید.

اگر وجود ندارد، آن را اضافه کنید:

myhostname = mail.example.com

تنظیم دامنه اصلی

در صورت نیاز مقدار mydomain را نیز مشخص کنید:

mydomain = example.com

تعیین فرستنده پیش‌فرض

برای اینکه ایمیل‌های ارسالی از دامنه اصلی شما ارسال شوند، مقدار زیر را بررسی کنید:

myorigin = $mydomain

در صورت نبودن این گزینه، آن را به انتهای فایل اضافه کنید.


استفاده از نام دامنه اصلی (اختیاری)

اگر سرور شما روی یک زیردامنه مانند mail.example.com قرار دارد اما می‌خواهید گیرنده ایمیل را از آدرس example.com مشاهده کند، می‌توانید تنظیم زیر را اضافه کنید:

masquerade_domains = example.com

این گزینه باعث حذف زیردامنه از آدرس فرستنده می‌شود.


ذخیره تغییرات

پس از اعمال تنظیمات، فایل را ذخیره کرده و از ویرایشگر خارج شوید.

اگر از Nano استفاده می‌کنید:

  1. کلید Ctrl + O را فشار دهید.
  2. کلید Enter را بزنید.
  3. سپس Ctrl + X را فشار دهید.

در پایان این مرحله، Postfix فقط به‌عنوان یک Send-Only SMTP Server عمل خواهد کرد و امکان دریافت اتصال SMTP از خارج سرور را نخواهد داشت.


مرحله ۴ — راه‌اندازی مجدد Postfix و ارسال اولین ایمیل آزمایشی

پس از اعمال تغییرات در فایل main.cf، باید سرویس Postfix را مجدداً راه‌اندازی کنید تا تنظیمات جدید اعمال شوند.


راه‌اندازی مجدد سرویس

دستور زیر را اجرا کنید:

sudo systemctl restart postfix

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


فعال کردن اجرای خودکار هنگام بوت

برای اینکه Postfix پس از هر بار راه‌اندازی مجدد سرور به‌صورت خودکار اجرا شود، دستور زیر را وارد کنید:

sudo systemctl enable postfix

بررسی وضعیت سرویس

اکنون وضعیت سرویس را بررسی کنید:

sudo systemctl status postfix

خروجی باید مشابه زیر باشد:

● postfix.service - Postfix Mail Transport Agent
     Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled)
     Active: active (running)

اگر وضعیت Active: active (running) نمایش داده شود، Postfix به‌درستی در حال اجرا است.


بررسی صحت فایل پیکربندی

قبل از ارسال ایمیل، بهتر است تنظیمات Postfix را بررسی کنید.

برای نمایش تنظیمات فعال، دستور زیر را اجرا کنید:

postconf

برای مشاهده فقط گزینه‌هایی که تغییر داده‌اید:

postconf -n

نمونه خروجی:

inet_interfaces = loopback-only
mydestination = localhost.$mydomain, localhost, $myhostname
myhostname = mail.example.com
myorigin = $mydomain

اگر مقادیر نمایش داده‌شده با تنظیمات شما مطابقت داشته باشند، می‌توانید مرحله بعد را انجام دهید.


ارسال اولین ایمیل آزمایشی

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

echo "This is a test email sent from Postfix." | mail -s "Postfix Test" you@example.com

به جای you@example.com آدرس ایمیل واقعی خود را وارد کنید.

نمونه:

echo "SMTP test from Ubuntu Server" | mail -s "Postfix Test" myname@gmail.com

بررسی صندوق ورودی

چند دقیقه صبر کنید و سپس صندوق ورودی ایمیل خود را بررسی کنید.

اگر ایمیل را مشاهده نکردید:

  • پوشه Spam یا Junk را نیز بررسی کنید.
  • در این مرحله طبیعی است که برخی سرویس‌های ایمیل، پیام را به‌عنوان Spam تشخیص دهند؛ زیرا هنوز TLS، SPF، DKIM و DMARC را پیکربندی نکرده‌ایم.

در مراحل بعدی این موارد را اضافه خواهیم کرد تا اعتبار ایمیل‌های ارسالی افزایش یابد.


بررسی صف ایمیل‌ها

اگر ایمیل ارسال نشد، ابتدا صف Postfix را بررسی کنید:

mailq

یا:

postqueue -p

اگر صف خالی باشد، خروجی مشابه زیر خواهد بود:

Mail queue is empty

بررسی لاگ‌ها

در صورت بروز مشکل، لاگ‌های Postfix بهترین منبع برای عیب‌یابی هستند:

sudo journalctl -u postfix -f

یا:

sudo tail -f /var/log/mail.log

نکته: در Ubuntu 24.04 و نسخه‌های جدیدتر، اگر فایل /var/log/mail.log وجود نداشته باشد، معمولاً لاگ‌ها از طریق systemd-journald مدیریت می‌شوند و دستور journalctl روش پیشنهادی برای مشاهده آن‌ها است.


در پایان این مرحله، از اجرای صحیح Postfix و امکان ارسال ایمیل اطمینان حاصل کرده‌اید.


مرحله ۵ — فوروارد کردن ایمیل‌های سیستمی به آدرس ایمیل شخصی

سیستم‌عامل لینوکس و بسیاری از سرویس‌ها، پیام‌های مهمی مانند خطاها، هشدارهای امنیتی، گزارش کران‌جاب‌ها (Cron Jobs) و اعلان‌های مدیریتی را برای کاربر root ارسال می‌کنند. اگر این ایمیل‌ها به یک آدرس واقعی فوروارد نشوند، ممکن است هرگز از آن‌ها مطلع نشوید.

در این مرحله، ایمیل‌های ارسال‌شده به کاربر root را به آدرس ایمیل شخصی خود هدایت می‌کنید.


ویرایش فایل aliases

فایل aliases را باز کنید:

sudo nano /etc/aliases

به‌صورت پیش‌فرض، محتوای فایل مشابه زیر است:

# See man 5 aliases for format

postmaster: root

در انتهای فایل، خط زیر را اضافه کنید:

root: your-email@example.com

به‌جای your-email@example.com آدرس ایمیل واقعی خود را وارد کنید.

نمونه:

root: admin@example.com

ذخیره تغییرات

پس از پایان ویرایش، فایل را ذخیره کنید.

اگر از Nano استفاده می‌کنید:

  • Ctrl + O
  • Enter
  • Ctrl + X

بروزرسانی پایگاه داده Aliasها

پس از هر بار ویرایش فایل aliases باید پایگاه داده آن را بازسازی کنید:

sudo newaliases

اگر دستور بدون خطا اجرا شود، تنظیمات جدید فعال خواهند شد.


آزمایش فوروارد ایمیل

اکنون یک ایمیل آزمایشی برای کاربر root ارسال کنید:

echo "Root mail forwarding test" | mail -s "Postfix Alias Test" root

چند دقیقه بعد باید این پیام را در صندوق ورودی ایمیلی که در فایل aliases مشخص کرده‌اید دریافت کنید.


بررسی صف ایمیل

اگر ایمیل دریافت نشد، ابتدا صف Postfix را بررسی کنید:

mailq

یا:

postqueue -p

در صورت خالی بودن صف، خروجی مشابه زیر خواهد بود:

Mail queue is empty

بررسی لاگ‌های ارسال

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

sudo journalctl -u postfix -f

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

sudo tail -f /var/log/mail.log

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

status=sent

چرا این مرحله مهم است؟

بسیاری از ابزارهای لینوکسی مانند:

  • Cron
  • Logrotate
  • Fail2Ban
  • AIDE
  • Monit
  • سیستم‌های مانیتورینگ
  • اسکریپت‌های بکاپ

اعلان‌های خود را به کاربر root ارسال می‌کنند. با فوروارد کردن این ایمیل‌ها به آدرس شخصی خود، می‌توانید از بروز خطاها، هشدارهای امنیتی و گزارش‌های مهم سرور در سریع‌ترین زمان ممکن مطلع شوید.


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


مرحله ۶ — دریافت گواهینامه SSL رایگان از Let’s Encrypt

در این مرحله، یک گواهینامه TLS/SSL رایگان از Let’s Encrypt دریافت می‌کنید تا ارتباط SMTP رمزنگاری شود. رمزنگاری ایمیل‌های خروجی علاوه بر افزایش امنیت، اعتبار پیام‌های ارسالی را نیز نزد سرویس‌هایی مانند Gmail، Outlook و Yahoo افزایش می‌دهد.

پیش‌نیاز

قبل از ادامه، مطمئن شوید:

  • دامنه شما به IP سرور اشاره می‌کند.
  • پورت 80 از طریق فایروال باز است.
  • دامنه از اینترنت قابل دسترس است.

نصب Certbot

ابتدا فهرست بسته‌ها را به‌روزرسانی کنید:

sudo apt update

سپس Certbot را نصب کنید:

sudo apt install certbot -y

بررسی نسخه نصب‌شده:

certbot --version

نمونه خروجی:

certbot 3.x.x

باز کردن پورت HTTP

اگر از UFW استفاده می‌کنید، پورت 80 را باز کنید:

sudo ufw allow 80/tcp

بررسی قوانین فایروال:

sudo ufw status

نمونه خروجی:

80/tcp ALLOW Anywhere

دریافت گواهینامه

اگر هیچ وب‌سروری مانند Nginx یا Apache روی سرور اجرا نمی‌شود، دستور زیر را اجرا کنید:

sudo certbot certonly \
--standalone \
--key-type ecdsa \
--agree-tos \
--email admin@example.com \
-d mail.example.com

پارامترها:

  • --standalone اجرای یک وب‌سرور موقت برای تأیید مالکیت دامنه
  • --key-type ecdsa تولید کلید مدرن و سریع‌تر ECDSA
  • --agree-tos پذیرش قوانین Let’s Encrypt
  • --email ایمیل مدیر سرور
  • -d دامنه موردنظر

اگر نسخه Certbot شما از ECDSA پشتیبانی نکند، می‌توانید از کلید RSA استفاده کنید:

sudo certbot certonly \
--standalone \
--key-type rsa \
--agree-tos \
--email admin@example.com \
-d mail.example.com

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

در صورت موفقیت، پیامی مشابه زیر مشاهده خواهید کرد:

Successfully received certificate.

همچنین فایل‌های گواهینامه در مسیر زیر ذخیره می‌شوند:

/etc/letsencrypt/live/mail.example.com/

بررسی فایل‌های گواهینامه

برای مشاهده فایل‌ها:

sudo ls -l /etc/letsencrypt/live/mail.example.com/

خروجی مشابه زیر خواهد بود:

cert.pem
chain.pem
fullchain.pem
privkey.pem

مهم‌ترین فایل‌ها عبارت‌اند از:

فایل کاربرد
fullchain.pem گواهینامه کامل
privkey.pem کلید خصوصی

این دو فایل را در مرحله بعد به Postfix معرفی خواهیم کرد.


بررسی اعتبار گواهینامه

برای مشاهده اطلاعات گواهینامه:

sudo openssl x509 \
-in /etc/letsencrypt/live/mail.example.com/fullchain.pem \
-noout -dates

نمونه خروجی:

notBefore=...
notAfter=...

این اطلاعات نشان می‌دهد گواهینامه از چه تاریخی معتبر است و چه زمانی منقضی می‌شود.


نکته مهم

اگر روی سرور Nginx یا Apache در حال اجرا است، دستور --standalone با خطا مواجه می‌شود؛ زیرا Certbot نمی‌تواند پورت 80 را اشغال کند.

در این حالت، یکی از راهکارهای زیر را انتخاب کنید:

  • سرویس وب را به‌صورت موقت متوقف کنید.
  • از پلاگین مخصوص Nginx یا Apache در Certbot استفاده کنید.

در پایان این مرحله، گواهینامه SSL معتبر روی سرور شما ایجاد شده و آماده استفاده توسط Postfix است.


مرحله ۷ — فعال‌سازی TLS در Postfix

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


باز کردن فایل تنظیمات Postfix

فایل اصلی تنظیمات را باز کنید:

sudo nano /etc/postfix/main.cf

تنظیم فایل‌های گواهینامه

بخش مربوط به TLS را پیدا کنید. ممکن است مقادیری مشابه زیر داشته باشد:

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

آن را با مسیر گواهینامه Let’s Encrypt جایگزین کنید:

smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem

فعال کردن TLS

در ادامه، تنظیمات زیر را به فایل اضافه کنید یا در صورت وجود، مقادیر آن‌ها را تغییر دهید:

smtpd_tls_security_level = may
smtp_tls_security_level = may
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

توضیح تنظیمات:

  • smtpd_tls_security_level: در صورت پشتیبانی کلاینت، اتصال رمزنگاری می‌شود.
  • smtp_tls_security_level: ارتباط Postfix با سایر سرورهای ایمیل نیز از TLS استفاده می‌کند.
  • smtp_tls_CApath: مسیر گواهینامه‌های مرجع سیستم.
  • smtp_tls_session_cache_database: افزایش کارایی ارتباطات TLS.

غیرفعال کردن پروتکل‌های قدیمی

برای افزایش امنیت، پروتکل‌های منسوخ را غیرفعال کنید:

smtp_tls_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
smtp_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1

انتخاب Cipherهای امن

برای استفاده از الگوریتم‌های رمزنگاری قوی، تنظیمات زیر را اضافه کنید:

smtp_tls_mandatory_ciphers = high
smtp_tls_ciphers = high
tls_high_cipherlist = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384

ثبت گزارش TLS

برای اینکه در صورت بروز مشکل بتوانید وضعیت TLS را بررسی کنید، ثبت گزارش را فعال کنید:

smtp_tls_loglevel = 1
smtp_tls_note_starttls_offer = yes

بررسی صحت تنظیمات

قبل از راه‌اندازی مجدد سرویس، بهتر است تنظیمات Postfix را بررسی کنید:

postfix check

اگر خروجی‌ای نمایش داده نشد، یعنی فایل پیکربندی بدون خطا است.


راه‌اندازی مجدد Postfix

اکنون سرویس را ریستارت کنید:

sudo systemctl restart postfix

و وضعیت آن را بررسی کنید:

sudo systemctl status postfix

باید وضعیت زیر را مشاهده کنید:

Active: active (running)

آزمایش ارسال ایمیل رمزنگاری‌شده

اکنون یک ایمیل آزمایشی ارسال کنید:

echo "TLS Test Email" | mail -s "Postfix TLS Test" you@example.com

پس از دریافت ایمیل، در Gmail می‌توانید از مسیر زیر جزئیات آن را مشاهده کنید:

Show Original → بررسی وجود عبارت:

TLS

یا:

Encrypted by TLS

وجود این عبارت نشان می‌دهد ایمیل از طریق ارتباط رمزنگاری‌شده ارسال شده است.


بررسی لاگ‌های TLS

برای مشاهده وضعیت TLS هنگام ارسال ایمیل:

sudo journalctl -u postfix -f

در صورت موفقیت، پیام‌هایی مشابه زیر مشاهده خواهید کرد:

Trusted TLS connection established
status=sent

با انجام این مرحله، ارتباط SMTP سرور شما رمزنگاری شده و ایمیل‌های خروجی با امنیت بیشتری ارسال می‌شوند.


مرحله ۸: دریافت گواهی SSL/TLS رایگان از Let’s Encrypt

برای اینکه ایمیل‌های ارسالی از سرور رمزنگاری شوند و احتمال اسپم شدن آن‌ها کاهش یابد، باید برای دامنه خود یک گواهی TLS معتبر دریافت کنید. ساده‌ترین روش استفاده از Certbot و سرویس Let’s Encrypt است.

نصب Certbot

ابتدا فهرست مخازن را به‌روزرسانی کرده و Certbot را نصب کنید:

sudo apt update
sudo apt install certbot -y

باز کردن پورت 80 در فایروال

اگر از UFW استفاده می‌کنید، باید پورت HTTP را برای اعتبارسنجی دامنه باز کنید:

sudo ufw allow 80/tcp

بررسی وضعیت فایروال:

sudo ufw status

باید خروجی مشابه زیر مشاهده کنید:

80/tcp                     ALLOW       Anywhere
80/tcp (v6)                ALLOW       Anywhere (v6)

دریافت گواهی SSL

اکنون دستور زیر را اجرا کنید:

sudo certbot certonly \
--standalone \
--agree-tos \
--preferred-challenges http \
--rsa-key-size 4096 \
-d example.com

پارامترها:

  • --standalone یک وب‌سرور موقت برای تأیید دامنه اجرا می‌کند.
  • --preferred-challenges http از اعتبارسنجی HTTP استفاده می‌کند.
  • --rsa-key-size 4096 کلید ۴۰۹۶ بیتی تولید می‌کند.
  • -d example.com دامنه شما را مشخص می‌کند.

به جای example.com دامنه واقعی خود را وارد کنید.

در طول نصب، ایمیل مدیر سرور را وارد کنید.


بررسی نتیجه

در صورت موفقیت، پیامی مشابه زیر مشاهده خواهید کرد:

Congratulations!

Your certificate and chain have been saved at:

/etc/letsencrypt/live/example.com/fullchain.pem

Your key file has been saved at:

/etc/letsencrypt/live/example.com/privkey.pem

این دو فایل در مرحله بعد برای فعال کردن TLS در Postfix استفاده خواهند شد.


بررسی فایل‌های گواهی

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

sudo ls -l /etc/letsencrypt/live/example.com/

خروجی تقریباً مشابه زیر خواهد بود:

cert.pem
chain.pem
fullchain.pem
privkey.pem
README

وجود فایل‌های fullchain.pem و privkey.pem نشان می‌دهد گواهی با موفقیت صادر شده است.


مرحله ۱۰: ارسال اولین ایمیل آزمایشی

اکنون که Postfix، گواهی TLS و تنظیمات اصلی را انجام داده‌اید، زمان آن رسیده است که عملکرد سرور SMTP را آزمایش کنید و مطمئن شوید ایمیل‌ها به‌درستی ارسال می‌شوند.


ارسال ایمیل آزمایشی

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

echo "This is a test email from Postfix on Ubuntu 24.04/26.04." | mail -s "Postfix Test Email" your_email@example.com

به جای your_email@example.com آدرس ایمیل واقعی خود را وارد کنید.

برای مثال:

echo "Postfix is working correctly." | mail -s "SMTP Test" admin@example.com

بررسی دریافت ایمیل

چند دقیقه صبر کنید و صندوق ورودی ایمیل خود را بررسی نمایید.

اگر ایمیل را مشاهده نکردید:

  • پوشه Spam یا Junk را بررسی کنید.
  • لاگ‌های Postfix را مشاهده کنید:
sudo journalctl -u postfix -f

یا

sudo tail -f /var/log/mail.log

در Ubuntu 24.04 و نسخه‌های جدیدتر، در بسیاری از سیستم‌ها لاگ‌ها توسط systemd-journald مدیریت می‌شوند؛ بنابراین دستور journalctl معمولاً اطلاعات کامل‌تری نمایش می‌دهد.


مشاهده وضعیت صف ایمیل‌ها

برای بررسی اینکه ایمیلی در صف ارسال باقی مانده است یا خیر:

mailq

یا

postqueue -p

اگر خروجی مشابه زیر دریافت کردید:

Mail queue is empty

یعنی هیچ ایمیلی در صف باقی نمانده است.


ارسال مجدد ایمیل‌های موجود در صف

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

sudo postqueue -f

بررسی وضعیت سرویس Postfix

از فعال بودن سرویس اطمینان حاصل کنید:

sudo systemctl status postfix

نمونه خروجی:

Active: active (running)

در صورت نیاز می‌توانید سرویس را مجدداً راه‌اندازی کنید:

sudo systemctl restart postfix

بررسی اتصال SMTP

برای اطمینان از اینکه Postfix روی پورت SMTP در حال اجرا است:

sudo ss -tlnp | grep :25

نمونه خروجی:

LISTEN 0 100 127.0.0.1:25

از آنجا که در این آموزش سرور را به صورت Send-Only پیکربندی کرده‌ایم، مشاهده آدرس 127.0.0.1:25 کاملاً طبیعی است.


بررسی رمزنگاری TLS

برای مشاهده اینکه Postfix از گواهی Let’s Encrypt استفاده می‌کند:

postconf | grep smtpd_tls_cert_file

نمونه خروجی:

smtpd_tls_cert_file = /etc/letsencrypt/live/example.com/fullchain.pem

همچنین:

postconf | grep smtpd_tls_key_file

عیب‌یابی سریع

اگر ایمیل ارسال نمی‌شود، موارد زیر را بررسی کنید:

  • سرویس Postfix در حال اجرا باشد.
  • دامنه دارای رکوردهای DNS صحیح (A و PTR) باشد.
  • گواهی TLS معتبر و منقضی نشده باشد.
  • پورت‌های موردنیاز توسط فایروال یا ارائه‌دهنده سرور مسدود نشده باشند.
  • لاگ‌های سیستم هیچ خطای TLS یا SMTP نمایش ندهند.

مرحله ۱۱: افزایش اعتبار ایمیل‌ها با SPF، DKIM و DMARC

تا این مرحله یک سرور SMTP ارسال‌کننده راه‌اندازی کرده‌اید و ایمیل‌ها با TLS رمزنگاری می‌شوند. با این حال، بسیاری از سرویس‌های ایمیل مانند Gmail، Outlook و Yahoo تنها در صورتی ایمیل‌ها را معتبر تشخیص می‌دهند که رکوردهای احراز هویت دامنه نیز به‌درستی تنظیم شده باشند.

در این مرحله سه مکانیزم مهم SPF، DKIM و DMARC را پیکربندی می‌کنیم.


SPF چیست؟

SPF (Sender Policy Framework) مشخص می‌کند چه سرورهایی مجاز به ارسال ایمیل از طرف دامنه شما هستند.

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


ایجاد رکورد SPF

در پنل مدیریت DNS دامنه، یک رکورد TXT ایجاد کنید.

نمونه:

Type Host Value
TXT @ v=spf1 mx a ip4:YOUR_SERVER_IP ~all

به جای:

YOUR_SERVER_IP

آدرس IP عمومی سرور خود را وارد کنید.

برای مثال:

v=spf1 mx a ip4:203.0.113.10 ~all

بررسی رکورد SPF

پس از اعمال DNS می‌توانید بررسی کنید:

dig TXT example.com

یا

host -t TXT example.com

نصب OpenDKIM

برای فعال کردن DKIM ابتدا بسته‌های موردنیاز را نصب کنید.

sudo apt update
sudo apt install opendkim opendkim-tools -y

فعال بودن سرویس را بررسی کنید:

sudo systemctl status opendkim

ایجاد کلید DKIM

دایرکتوری کلیدها را ایجاد کنید:

sudo mkdir -p /etc/opendkim/keys/example.com

سپس:

cd /etc/opendkim/keys/example.com

کلید جدید تولید کنید:

sudo opendkim-genkey -b 2048 -d example.com -s mail

فایل‌های زیر ایجاد می‌شوند:

mail.private
mail.txt

تنظیم مجوز فایل‌ها

sudo chown opendkim:opendkim mail.private

افزودن رکورد DKIM به DNS

فایل زیر را مشاهده کنید:

cat mail.txt

خروجی مشابه زیر خواهد بود:

mail._domainkey IN TXT (
"v=DKIM1;
k=rsa;
p=MIIBIjANBg..."
)

همین مقدار را به‌صورت یک رکورد TXT در DNS دامنه اضافه کنید.


راه‌اندازی مجدد سرویس‌ها

sudo systemctl restart opendkim

سپس:

sudo systemctl restart postfix

تنظیم رکورد DMARC

یک رکورد TXT دیگر ایجاد کنید.

Host:

_dmarc

Value:

v=DMARC1; p=quarantine; rua=mailto:admin@example.com

در صورت تمایل می‌توانید بعد از اطمینان از صحت تنظیمات، مقدار Policy را روی حالت سخت‌گیرانه‌تر قرار دهید:

p=reject

بررسی رکوردهای DNS

می‌توانید با دستور زیر صحت تنظیمات را بررسی کنید:

dig TXT example.com

و:

dig TXT mail._domainkey.example.com

همچنین:

dig TXT _dmarc.example.com

تست اعتبار ایمیل

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

  • Gmail
  • Outlook
  • Yahoo

سپس در بخش Show Original یا View Source ایمیل، وضعیت موارد زیر را بررسی کنید:

SPF: PASS
DKIM: PASS
DMARC: PASS

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


مرحله ۱۲: نگهداری، افزایش امنیت و بهینه‌سازی Postfix

تبریک! اکنون یک سرور Send-Only SMTP مبتنی بر Postfix روی Ubuntu 24.04 یا Ubuntu 26.04 در اختیار دارید که از TLS برای رمزنگاری ایمیل‌های خروجی استفاده می‌کند و با SPF، DKIM و DMARC نیز اعتبارسنجی شده است. در این مرحله، چند اقدام تکمیلی را برای افزایش امنیت، پایداری و نگهداری آسان‌تر سرور انجام می‌دهیم.


بررسی وضعیت سرویس‌ها

ابتدا از فعال بودن سرویس‌های موردنیاز مطمئن شوید:

sudo systemctl status postfix

در صورت استفاده از OpenDKIM:

sudo systemctl status opendkim

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

sudo systemctl is-enabled postfix

فعال‌سازی بروزرسانی خودکار سیستم

برای دریافت خودکار بروزرسانی‌های امنیتی Ubuntu، بسته Unattended Upgrades را نصب کنید:

sudo apt install unattended-upgrades -y

سپس آن را فعال کنید:

sudo dpkg-reconfigure unattended-upgrades

تمدید خودکار گواهی Let’s Encrypt

بررسی کنید که تایمر Certbot فعال باشد:

systemctl list-timers | grep certbot

همچنین می‌توانید فرآیند تمدید را آزمایش کنید:

sudo certbot renew --dry-run

اگر خروجی بدون خطا بود، تمدید خودکار نیز به‌درستی انجام خواهد شد.


بررسی لاگ‌های ایمیل

در صورت بروز مشکل، لاگ‌های Postfix بهترین محل برای عیب‌یابی هستند.

در Ubuntu 24.04 و نسخه‌های جدید:

sudo journalctl -u postfix

برای مشاهده لحظه‌ای لاگ‌ها:

sudo journalctl -u postfix -f

در برخی توزیع‌ها نیز فایل زیر وجود دارد:

sudo tail -f /var/log/mail.log

مشاهده صف ایمیل‌ها

برای بررسی صف ارسال:

mailq

یا

postqueue -p

اگر لازم بود همه ایمیل‌های موجود در صف مجدداً ارسال شوند:

sudo postqueue -f

تهیه نسخه پشتیبان از تنظیمات

پیشنهاد می‌شود فایل‌های مهم Postfix را در محل امنی نگهداری کنید.

sudo tar -czf postfix-backup.tar.gz \
/etc/postfix \
/etc/opendkim \
/etc/aliases

در صورت استفاده از گواهی Let’s Encrypt:

sudo tar -czf letsencrypt-backup.tar.gz \
/etc/letsencrypt

محدود کردن دسترسی به SMTP

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

بررسی مقدار:

postconf inet_interfaces

باید خروجی مشابه زیر باشد:

inet_interfaces = loopback-only

آزمایش ارسال ایمیل

در پایان یک ایمیل دیگر ارسال کنید:

echo "SMTP Server is working correctly." | mail -s "Final Test" your_email@example.com

سپس بررسی کنید که:

  • ایمیل دریافت شده باشد.
  • پیام رمزنگاری شده باشد.
  • SPF برابر PASS باشد.
  • DKIM برابر PASS باشد.
  • DMARC برابر PASS باشد.

نتیجه‌گیری

در این آموزش یک سرور Send-Only SMTP با استفاده از Postfix روی Ubuntu 24.04 و Ubuntu 26.04 راه‌اندازی کردید. در طول مراحل این مقاله:

  • Postfix را نصب و پیکربندی کردید.
  • ارسال ایمیل را تنها به برنامه‌های محلی محدود کردید.
  • گواهی TLS رایگان از Let’s Encrypt دریافت کردید.
  • ارتباط SMTP را رمزنگاری کردید.
  • ارسال ایمیل را آزمایش کردید.
  • ایمیل‌های سیستمی را به یک آدرس خارجی هدایت کردید.
  • رکوردهای SPF، DKIM و DMARC را برای افزایش اعتبار دامنه تنظیم کردید.
  • تنظیمات نگهداری، پشتیبان‌گیری و عیب‌یابی سرور را انجام دادید.

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

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

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

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

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