راه‌اندازی، پیکربندی و عیب‌یابی Mail Server با Postfix و Dovecot

راهنمای جامع و عملی برای راه‌اندازی یک Mail Server واقعی با Postfix و Dovecot؛ از پیکربندی DNS، SPF، DKIM و DMARC تا TLS، SMTP AUTH، Auto Configuration و بررسی Gmail Deliverability. این مقاله بر اساس تجربه واقعی استقرار یک Mail Server تولیدی نوشته شده است و خطاهای رایج، روش‌های تست و محدودیت‌های واقعی را پوشش می‌دهد.

معماری Mail Server با Postfix و Dovecot: مسیر ایمیل از DNS و SMTP ورودی به Postfix، سپس LMTP به Dovecot و ذخیره در Maildir، و مسیر خروجی از Mail Client به SMTP Submission و DKIM
معماری کامل Mail Server: از دریافت ایمیل از اینترنت توسط Postfix و تحویل به Dovecot از طریق LMTP، تا ذخیره در Maildir و خواندن با IMAP؛ و مسیر ارسال از Mail Client تا SMTP Submission و DKIM Signing

فهرست مطالب

دسترسی سریع به بخش‌های این راهنما

۱. Mail Server چیست و از چه اجزایی تشکیل می‌شود؟

یک Mail Server واقعی فقط «نصب Postfix» نیست. یک سامانه‌ی ایمیل از چندین سرویس مستقل تشکیل می‌شود که هرکدام نقش مشخصی دارند: دریافت ایمیل از اینترنت، تحویل آن به Mailbox، امکان خواندن آن از طریق Mail Client و ارسال ایمیل کاربران به اینترنت.

اجزای اصلی یک Mail Server:

  • MTA (Mail Transfer Agent): مسئول انتقال ایمیل بین سرورها و تحویل آن به Mailbox. نمونه‌ها: Postfix، Exim، Sendmail.
  • MDA/LDA (Mail Delivery Agent): مسئول تحویل ایمیل از MTA به Mailbox کاربر. در این مقاله از Dovecot LMTP استفاده می‌کنیم.
  • SMTP: پروتکل استاندارد برای ارسال و انتقال ایمیل.
  • IMAP: پروتکل استاندارد برای خواندن ایمیل از Mailbox.
  • Mailbox Storage: محلی که پیام‌ها ذخیره می‌شوند؛ در این مقاله از Maildir استفاده می‌کنیم.
  • DNS: بدون آن، هیچ سروری نمی‌داند ایمیل را به کجا بفرستد و هیچ گیرنده‌ای نمی‌تواند authenticity فرستنده را بررسی کند.
  • TLS: برای رمزنگاری ارتباط بین Client و Server و بین Server‌ها.

در این مقاله از Postfix به عنوان MTA و Dovecot به عنوان IMAP Server و MDA استفاده می‌کنیم. این ترکیب یکی از رایج‌ترین و پایدارترین معماری‌های Mail Server در دنیای لینوکس است.

۲. معماری و مسیر حرکت ایمیل

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

۲.۱. مسیر Inbound (دریافت ایمیل)

Internet
   ↓
DNS (MX Record)
   ↓
Postfix (SMTP port 25)
   ↓
Dovecot (LMTP)
   ↓
Maildir (Mailbox)
   ↓
IMAP (Client)

وقتی یک سرور خارجی می‌خواهد به کاربران شما ایمیل بفرستد، ابتدا از DNS رکورد MX دامنه‌ی شما را می‌پرسد. سپس با Postfix روی پورت ۲۵ (SMTP) ارتباط برقرار می‌کند. Postfix پیام را دریافت می‌کند و از طریق LMTP آن را به Dovecot تحویل می‌دهد. Dovecot پیام را در Maildir کاربر ذخیره می‌کند. کاربر نهایتاً از طریق IMAP پیام را می‌خواند.

۲.۲. مسیر Outbound (ارسال ایمیل)

Mail Client
   ↓
SMTP Submission (port 587 + STARTTLS + AUTH)
   ↓
Postfix
   ↓
DKIM Signing
   ↓
Internet
   ↓
Recipient Mail Server

وقتی کاربر می‌خواهد ایمیل بفرستد، Mail Client با پورت ۵۸۷ (Submission) به Postfix وصل می‌شود، احراز هویت می‌کند و پیام را می‌فرستد. Postfix پیام را امضا (DKIM) می‌کند و به سرور گیرنده ارسال می‌کند.

۳. طراحی Hostname و Domain

یکی از رایج‌ترین اشتباهات در راه‌اندازی Mail Server، قاطی کردن مفهوم Hostname و Domain است. این دو مفاهیم متفاوتی هستند:

  • Domain: دامنه‌ای که ایمیل‌ها به آن تعلق دارند؛ مثل example.com.
  • Mail Hostname: نامی که Mail Server با آن معرفی می‌شود؛ مثل mail.example.com.
  • OS Hostname: نام سیستم‌عامل سرور؛ مثل srv-01. این نام لزوماً با Mail Hostname یکی نیست.
  • PTR Hostname: نامی که Reverse DNS به IP سرور نسبت می‌دهد؛ بهتر است با Mail Hostname یکی باشد.

نکته‌ی مهم: OS Hostname و Mail Hostname می‌توانند متفاوت باشند. آنچه اهمیت دارد این است که Postfix با myhostname به‌درستی معرفی شود و PTR با Mail Hostname هماهنگ باشد.

اما توصیه‌ی عمومی این است که این نام‌ها را تا حد امکان ساده و قابل پیش‌بینی نگه دارید:

Mail Hostname:  mail.example.com
PTR:            SERVER_IP → mail.example.com
Forward DNS:    mail.example.com → SERVER_IP

۴. پیش‌نیازهای DNS

بدون DNS صحیح، Mail Server شما کار نخواهد کرد. حتی اگر Postfix و Dovecot بی‌نقص پیکربندی شده باشند، ایمیل‌ها یا ارسال نمی‌شوند یا در Spam فرود می‌آیند.

۴.۱. رکوردهای ضروری DNS

نوع رکورد مثال کاربرد
A mail.example.com → SERVER_IP آدرس IPv4 سرور
AAAA mail.example.com → IPv6 آدرس IPv6 (اختیاری اما توصیه‌شده)
MX example.com → mail.example.com نشانی سرور دریافت ایمیل
PTR SERVER_IP → mail.example.com Reverse DNS (توسط provider تنظیم می‌شود)
TXT (SPF) v=spf1 mx -all اعلام سرورهای مجاز ارسال ایمیل
TXT (DKIM) selector._domainkey.example.com کلید عمومی DKIM
TXT (DMARC) _dmarc.example.com سیاست DMARC

۴.۲. Reverse DNS (PTR)

PTR رکوردی است که IP را به یک Hostname نگاشت می‌کند. این رکورد معمولاً توسط VPS Provider یا Datacenter تنظیم می‌شود و شما نمی‌توانید آن را از طریق DNS Zone خود تغییر دهید.

PTR برای Mail Server اهمیت زیادی دارد. بسیاری از سرورهای گیرنده (از جمله Gmail) بررسی می‌کنند که آیا IP فرستنده PTR معتبری دارد یا نه. اگر PTR نداشته باشد یا با Forward DNS هماهنگ نباشد، احتمال Spam شدن ایمیل به‌شدت افزایش می‌یابد.

Forward-Reverse Consistency به این معناست که:

PTR:      SERVER_IP → mail.example.com
Forward:  mail.example.com → SERVER_IP

اگر این دو با هم هماهنگ نباشند، برخی سرورها ممکن است ایمیل شما را رد کنند یا در Spam قرار دهند.

۵. نصب و پیکربندی Postfix

Postfix یکی از محبوب‌ترین MTAهای لینوکس است. نصب آن روی اکثر توزیع‌ها ساده است:

# Debian / Ubuntu
apt install postfix

# RHEL / CentOS / Rocky
dnf install postfix

۵.۱. تنظیمات پایه

مهم‌ترین پارامترهای Postfix در /etc/postfix/main.cf:

myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost
inet_interfaces = all
inet_protocols = ipv4
  • myhostname: نامی که Postfix با آن معرفی می‌شود. باید با PTR هماهنگ باشد.
  • mydomain: دامنه‌ی اصلی Mail Server.
  • myorigin: دامنه‌ای که در هدر From ایمیل‌های محلی ظاهر می‌شود.
  • mydestination: دامنه‌هایی که Postfix به عنوان «محلی» تحویل می‌دهد.

۵.۲. SMTP Submission روی پورت ۵۸۷

پورت ۲۵ برای تبادل ایمیل بین سرورهاست. برای ارسال ایمیل توسط کاربران، باید پورت ۵۸۷ (Submission) فعال شود. این پورت نیازمند SMTP AUTH و STARTTLS است.

# /etc/postfix/master.cf
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

۵.۳. جلوگیری از Open Relay

Open Relay یعنی سرور شما ایمیل‌های کاربران ناشناس را بدون احراز هویت ارسال کند. این یک فاجعه‌ی امنیتی است و باعث می‌شود IP شما در blacklist قرار بگیرد.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination

بعد از هر تغییر، با postfix check و systemctl reload postfix تنظیمات را اعمال کنید. برای تست Open Relay از ابزارهایی مثل swaks یا سرویس‌های آنلاین استفاده کنید.

۶. نصب و پیکربندی Dovecot

Dovecot مسئول IMAP، authentication و تحویل نهایی پیام به Mailbox است. نصب:

apt install dovecot-core dovecot-imapd dovecot-lmtpd

۶.۱. فعال‌سازی IMAP و LMTP

# /etc/dovecot/dovecot.conf
protocols = imap lmtp

۶.۲. Authentication و Virtual Users

برای Mail Server واقعی، معمولاً از Virtual Users استفاده می‌شود؛ یعنی کاربران سیستمی نیستند و فقط در یک فایل یا دیتابیس تعریف می‌شوند.

# /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login

# /etc/dovecot/conf.d/auth-passwdfile.conf.ext
passdb {
  driver = passwd-file
  args = scheme=ARGON2ID username_format=%u /etc/dovecot/users
}

userdb {
  driver = passwd-file
  args = username_format=%u /etc/dovecot/users
  default_fields = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}

۶.۳. Maildir و LMTP

# /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/var/mail/vhosts/%d/%n

# /etc/dovecot/conf.d/10-master.conf
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
}

۶.۴. TLS در Dovecot

# /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
ssl_min_protocol = TLSv1.2

۷. ساخت Mailbox و Virtual User

ساخت Mailbox از Auto Configuration جداست. Auto Configuration فقط تنظیمات را به Client می‌گوید، اما Mailbox را نمی‌سازد. Mailbox باید توسط Administrator ساخته شود.

مراحل ساخت یک Mailbox نمونه مثل info@example.com:

# 1. ساخت هش رمز عبور
doveadm pw -s ARGON2ID

# 2. افزودن کاربر به /etc/dovecot/users
info@example.com:{ARGON2ID}$argon2id$v=19$m=65536,t=3,p=1$...

# 3. افزودن mapping در /etc/postfix/vmailbox
info@example.com    example.com/info/Maildir/

# 4. ساخت mapping
postmap /etc/postfix/vmailbox

# 5. ساخت دایرکتوری Maildir و تنظیم ownership
mkdir -p /var/mail/vhosts/example.com/info/Maildir
chown -R vmail:vmail /var/mail/vhosts/example.com
chmod -R 700 /var/mail/vhosts/example.com

# 6. Reload سرویس‌ها
systemctl reload dovecot
systemctl reload postfix

دقت کنید که رمز عبور باید حتماً به‌صورت hash ذخیره شود، نه plaintext.

۸. TLS و پورت‌های SMTP و IMAP

برای Mail Server، TLS یک گزینه نیست؛ یک ضرورت است. بدون TLS، رمز عبور کاربران به‌صورت plaintext منتقل می‌شود و ایمیل‌ها قابل شنود هستند.

پورت سرویس نوع TLS کاربرد
25 SMTP STARTTLS (اختیاری) تبادل ایمیل بین سرورها
587 Submission STARTTLS (اجباری) ارسال ایمیل توسط کاربران
465 SMTPS Implicit TLS ارسال ایمیل با TLS از ابتدا
993 IMAPS Implicit TLS خواندن ایمیل با TLS از ابتدا

تفاوت STARTTLS و Implicit TLS: در STARTTLS، ارتباط ابتدا plaintext شروع می‌شود و سپس به TLS ارتقا می‌یابد. در Implicit TLS، ارتباط از همان ابتدا TLS است.

۹. SPF، DKIM و DMARC

این سه استاندارد، پایه‌ی Email Authentication هستند. اما باید توجه داشت که موفق بودن آن‌ها تضمین‌کننده‌ی Inbox Placement نیست.

۹.۱. SPF

SPF (Sender Policy Framework) به گیرنده می‌گوید کدام IPها مجاز به ارسال ایمیل از دامنه‌ی شما هستند. SPF در DNS به‌صورت TXT ثبت می‌شود:

example.com.  IN  TXT  "v=spf1 mx -all"

معنی mx این است که «سرورهای MX این دامنه مجاز به ارسال هستند» و -all یعنی «هر IP دیگری رد شود».

SPF فقط Envelope Sender (Return-Path) را بررسی می‌کند، نه هدر From را. به همین دلیل SPF به‌تنهایی کافی نیست.

۹.۲. DKIM

DKIM (DomainKeys Identified Mail) به گیرنده اجازه می‌دهد صحت پیام و دامنه‌ی فرستنده را از طریق امضای دیجیتال بررسی کند.

DKIM از یک جفت کلید استفاده می‌کند: کلید خصوصی روی سرور، کلید عمومی در DNS.

selector._domainkey.example.com.  IN  TXT  "v=DKIM1; k=rsa; p=MIGfMA0G..."

نکته‌ی مهم: DKIM رمزنگاری نیست. DKIM فقط امضای دیجیتال است. محتوای ایمیل همچنان plaintext است (مگر اینکه TLS روی مسیر انتقال وجود داشته باشد).

۹.۳. DMARC

DMARC (Domain-based Message Authentication, Reporting and Conformance) یک لایه‌ی policy روی SPF و DKIM است. DMARC مشخص می‌کند اگر ایمیل از دامنه‌ی شما SPF یا DKIM را پاس نکرد، گیرنده چگونه رفتار کند.

_dmarc.example.com.  IN  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
  • p=none: فقط گزارش بده، کاری نکن (مناسب برای شروع و monitoring).
  • p=quarantine: ایمیل‌های ناموفق را در Spam قرار بده.
  • p=reject: ایمیل‌های ناموفق را رد کن.
  • rua: آدرس دریافت گزارش‌های تجمیعی.

توصیه‌ی عمومی: با p=none شروع کنید، چند هفته گزارش‌ها را بررسی کنید، و سپس به‌تدریج به quarantine و reject مهاجرت کنید. تغییر مستقیم به p=reject بدون monitoring می‌تواند به حذف ایمیل‌های معتبر خودتان منجر شود.

۱۰. Auto Configuration

Auto Configuration به Mail Clientها اجازه می‌دهد بدون تنظیم دستی، سرور IMAP و SMTP را کشف کنند.

نکته‌ی مهم: Auto Configuration با Mailbox Provisioning یکی نیست. Auto Configuration فقط به Client می‌گوید «سرور کجاست و چه تنظیماتی دارد». Mailbox باید قبلاً توسط Administrator ساخته شده باشد.

۱۰.۱. Thunderbird AutoConfig

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

https://autoconfig.example.com/mail/config-v1.1.xml
https://autoconfig.example.com/.well-known/autoconfig/mail/config-v1.1.xml

پاسخ XML شامل تنظیمات IMAP و SMTP است. رمز عبور نباید در XML قرار بگیرد.

۱۰.۲. Outlook Autodiscover

Outlook از endpoint متفاوتی استفاده می‌کند:

https://autodiscover.example.com/autodiscover/autodiscover.xml

۱۰.۳. محدودیت‌ها

وجود endpointهای AutoConfig به این معنی نیست که همه‌ی Mail Clientها الزاماً از آن استفاده می‌کنند. بعضی Clientها (مخصوصاً در موبایل) ممکن است به‌جای AutoConfig، جستجوی SRV یا روش‌های دیگر را ترجیح دهند. بعضی دیگر ممکن است اصلاً از AutoConfig پشتیبانی نکنند و نیاز به تنظیم دستی داشته باشند.

عدم Auto-detection در یک Client به معنی خراب بودن Mail Server نیست.

۱۱. تست SMTP، IMAP و Mail Flow

۱۱.۱. تست DNS

dig MX example.com
dig A mail.example.com
dig -x SERVER_IP
dig TXT example.com
dig TXT selector._domainkey.example.com
dig TXT _dmarc.example.com

۱۱.۲. تست SMTP و TLS

# تست STARTTLS روی پورت 587
openssl s_client -starttls smtp -connect mail.example.com:587

# تست Implicit TLS روی پورت 465
openssl s_client -connect mail.example.com:465

# تست IMAPS روی پورت 993
openssl s_client -connect mail.example.com:993

۱۱.۳. تست با swaks

swaks --to admin@example.com \
      --from info@example.com \
      --server mail.example.com:587 \
      --auth LOGIN \
      --tls

۱۱.۴. تست Inbound و Outbound

دو تست مستقل انجام دهید:

  • Outbound: از Mail Server خود به یک Gmail ارسال کنید.
  • Inbound: از Gmail به Mailbox خود ارسال کنید.

برای Outbound، در Gmail روی «Show original» کلیک کنید و بررسی کنید که SPF، DKIM و DMARC چه وضعیتی دارند.

برای Inbound، لاگ Dovecot/LMTP را بررسی کنید تا ببینید پیام در INBOX ذخیره شده است یا نه.

journalctl -u dovecot -f
tail -f /var/log/mail.log
doveadm search -u info@example.com mailbox INBOX

۱۲. Gmail Deliverability و مشکل Spam

این بخش مهم‌ترین بخش این مقاله است. حتی اگر SPF، DKIM و DMARC شما همه PASS باشند، ممکن است Gmail ایمیل شما را در Spam قرار دهد.

این یک واقعیت است: Authentication ≠ Inbox Placement.

احراز هویت (SPF/DKIM/DMARC) به Gmail می‌گوید «این ایمیل واقعاً از دامنه‌ی ادعاشده آمده است». اما Inbox Placement به Gmail می‌گوید «این ایمیل برای کاربر ارزشمند است».

۱۲.۱. سیگنال‌های Gmail برای فیلترینگ

Gmail (و سایر Providerها) از سیگنال‌های زیادی برای تصمیم‌گیری استفاده می‌کنند، از جمله:

  • Authentication (SPF/DKIM/DMARC)
  • IP Reputation
  • Domain Reputation
  • Sending History
  • Recipient Behavior (باز کردن، پاسخ دادن، گزارش Spam)
  • Message Content
  • Volume Patterns
  • Infrastructure Signals

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

۱۲.۲. بررسی DNSBL

DNSBL (DNS-based Blackhole List) یک لیست از IPهایی است که به‌عنوان منبع Spam شناخته شده‌اند. می‌توانید IP خود را در DNSBLهای معروف بررسی کنید:

# بررسی IP در Spamhaus
dig +short SERVER_IP.zen.spamhaus.org

# بررسی IP در Barracuda
dig +short SERVER_IP.b.barracudacentral.org

اگر پاسخ 127.x.x.x دریافت کردید، IP شما در آن لیست قرار دارد. اگر پاسخ خالی بود، IP شما در آن لیست نیست.

نکته‌ی مهم: نبودن IP در DNSBL به معنی «Reputation خوب» نیست. فقط به این معنی است که در آن لیست خاص نیست.

۱۲.۳. Google Postmaster Tools

Google Postmaster Tools ابزاری رسمی از Google برای مشاهده‌ی داده‌های Deliverability دامنه است. برای استفاده، ابتدا باید مالکیت دامنه را در Google Search Console تأیید کنید.

Postmaster Tools ممکن است برای دامنه‌های جدید یا دامنه‌هایی با حجم ارسال پایین، پیام No data was found نشان دهد. این وضعیت failure نیست و به معنی مشکل در SPF/DKIM/DMARC نیست. فقط به این معنی است که Google هنوز داده‌ی کافی برای نمایش ندارد.

۱۳. عیب‌یابی و Security Hardening

۱۳.۱. Decision Tree عیب‌یابی

Email not received
        |
        +-- DNS problem? ─────────── dig MX / dig A
        |
        +-- SMTP connection? ─────── telnet / openssl
        |
        +-- TLS? ──────────────────── openssl s_client
        |
        +-- Authentication? ──────── doveadm / logs
        |
        +-- SMTP accepted? ───────── mail.log / journalctl
        |
        +-- DKIM? ─────────────────── opendkim-testkey
        |
        +-- SPF? ──────────────────── dig TXT
        |
        +-- DMARC? ────────────────── dig TXT
        |
        +-- Recipient rejected? ──── reply codes
        |
        +-- Spam? ─────────────────── Gmail Show original
        |
        +-- Reputation? ──────────── Postmaster / DNSBL

۱۳.۲. Security Hardening

  • جلوگیری از Open Relay (اجباری)
  • فایروال و بستن پورت‌های غیرضروری
  • TLS اجباری روی Submission و IMAPS
  • استفاده از Argon2 یا Bcrypt برای هش رمز عبور
  • حفاظت از Private Key DKIM
  • Filesystem Permissions مناسب روی Maildir
  • Rate Limiting و Brute-force Protection (fail2ban)
  • Logging و Monitoring
  • Backup منظم از Mailboxها و Configurationها
  • Patching منظم سیستم‌عامل و سرویس‌ها

۱۳.۳. Production Checklist

[ ] A / AAAA Record
[ ] MX Record
[ ] PTR Record
[ ] Forward-Reverse Consistency
[ ] TLS Certificate
[ ] SMTP (25)
[ ] Submission (587)
[ ] IMAPS (993)
[ ] SMTP AUTH
[ ] Postfix
[ ] Dovecot
[ ] LMTP
[ ] Mailbox
[ ] SPF
[ ] DKIM
[ ] DMARC
[ ] No Open Relay
[ ] Firewall
[ ] DNSBL Check
[ ] Inbound Test
[ ] Outbound Test
[ ] Gmail Test
[ ] Postmaster Tools
[ ] Monitoring
[ ] Backup

جمع‌بندی

راه‌اندازی یک Mail Server واقعی، فراتر از نصب Postfix و Dovecot است. این فرآیند شامل طراحی صحیح DNS، پیکربندی امن، احراز هویت دقیق و درک عمیق از تفاوت بین Authentication و Deliverability است.

حتی اگر تمام تنظیمات فنی شما بی‌نقص باشد، ممکن است ایمیل‌ها در Spam قرار بگیرند. این به معنی اشتباه در کار شما نیست؛ به این معنی است که Email Deliverability یک موضوع پیچیده و چندعاملی است که به reputation، sending history و سیگنال‌های متعددی وابسته است.

بهترین رویکرد این است که با monitoring مستمر، بررسی گزارش‌های DMARC، استفاده از Google Postmaster Tools و رعایت Best Practiceها، به‌تدریج reputation دامنه و IP خود را بهبود دهید.

سوالات متداول

آیا SPF به‌تنهایی برای جلوگیری از Spam کافی است؟

خیر. SPF فقط Envelope Sender را بررسی می‌کند و به‌تنهایی نمی‌تواند از جعل هدر From جلوگیری کند. برای محافظت کامل، به DKIM و DMARC نیز نیاز دارید.

DKIM چه کاری انجام می‌دهد؟

DKIM با استفاده از یک جفت کلید (خصوصی روی سرور، عمومی در DNS) پیام را امضا می‌کند. گیرنده با بررسی امضا می‌تواند صحت پیام و دامنه‌ی فرستنده را تأیید کند. DKIM رمزنگاری نیست.

DMARC چه تفاوتی با SPF و DKIM دارد؟

DMARC یک لایه‌ی policy روی SPF و DKIM است. DMARC مشخص می‌کند اگر ایمیل از دامنه‌ی شما SPF یا DKIM را پاس نکرد، گیرنده چگونه رفتار کند (none / quarantine / reject). همچنین DMARC alignment بین دامنه‌ی From و دامنه‌ی SPF/DKIM را بررسی می‌کند.

چرا ایمیل با SPF/DKIM/DMARC PASS باز هم به Spam می‌رود؟

چون Authentication فقط یکی از سیگنال‌های فیلترینگ است. Gmail و سایر Providerها از IP Reputation، Domain Reputation، Sending History، رفتار گیرنده، محتوای پیام و سیگنال‌های دیگر نیز استفاده می‌کنند. موفق بودن Authentication تضمین‌کننده‌ی Inbox Placement نیست.

PTR برای Mail Server ضروری است؟

بله، در عمل ضروری است. بسیاری از سرورهای گیرنده (از جمله Gmail) بررسی می‌کنند که IP فرستنده PTR معتبر و هماهنگ با Forward DNS داشته باشد. بدون PTR، احتمال Spam شدن ایمیل به‌شدت افزایش می‌یابد.

تفاوت پورت 25 و 587 چیست؟

پورت 25 برای تبادل ایمیل بین سرورها (Server-to-Server) استفاده می‌شود و معمولاً نیازی به احراز هویت ندارد. پورت 587 برای Submission (ارسال ایمیل توسط کاربران) استفاده می‌شود و نیازمند STARTTLS و SMTP AUTH است.

آیا باید از پورت 465 استفاده کنم؟

پورت 465 (SMTPS) از Implicit TLS استفاده می‌کند، یعنی ارتباط از همان ابتدا TLS است. این پورت برای Mail Clientهای قدیمی‌تر مفید است. برای Clientهای مدرن، پورت 587 توصیه می‌شود.

چرا Gmail Postmaster Tools می‌گوید No data؟

Postmaster Tools برای دامنه‌های جدید یا دامنه‌هایی با حجم ارسال پایین، ممکن است داده‌ای نشان ندهد. این وضعیت failure نیست و به معنی مشکل در SPF/DKIM/DMARC نیست. Google باید داده‌ی کافی جمع‌آوری کند تا نمایش دهد.

آیا نبودن IP در blacklist یعنی Reputation خوب است؟

خیر. نبودن در DNSBL فقط به این معنی است که IP شما در آن لیست خاص نیست. Reputation یک مفهوم پیچیده‌تر است و به Sending History، رفتار گیرندگان و سیگنال‌های دیگر وابسته است.

آیا Auto Configuration روی همه‌ی Mail Clientها کار می‌کند؟

خیر. بعضی Clientها مثل Thunderbird از AutoConfig پشتیبانی می‌کنند، بعضی دیگر مثل Outlook از Autodiscover استفاده می‌کنند، و بعضی از Clientهای موبایل ممکن است اصلاً Auto-detection نداشته باشند و نیاز به تنظیم دستی داشته باشند.

Postfix و Dovecot چه تفاوتی دارند؟

Postfix یک MTA (Mail Transfer Agent) است و مسئول انتقال ایمیل بین سرورها و تحویل آن به Mailbox است. Dovecot یک IMAP Server و MDA (Mail Delivery Agent) است و مسئول authentication، IMAP و تحویل نهایی پیام به Mailbox است. این دو مکمل یکدیگرند.

چگونه Mail Server را مرحله‌به‌مرحله عیب‌یابی کنم؟

از DNS شروع کنید: بررسی A، MX و PTR. سپس SMTP connection، TLS، authentication، SPF/DKIM/DMARC. در ادامه SMTP acceptance را در log بررسی کنید. اگر همه‌چیز درست بود اما ایمیل در Spam رفت، به DNSBL، IP Reputation، Domain Reputation و Postmaster Tools مراجعه کنید.

واژه‌نامه

MTA
Mail Transfer Agent — سرویسی که ایمیل را بین سرورها منتقل و به Mailbox تحویل می‌دهد. مثل Postfix.
MDA / LDA
Mail Delivery Agent — سرویسی که ایمیل را از MTA دریافت و به Mailbox کاربر تحویل می‌دهد. مثل Dovecot LMTP.
SMTP
Simple Mail Transfer Protocol — پروتکل استاندارد ارسال و انتقال ایمیل.
IMAP
Internet Message Access Protocol — پروتکل استاندارد خواندن ایمیل از Mailbox.
LMTP
Local Mail Transfer Protocol — نسخه‌ی محلی SMTP که برای تحویل ایمیل از Postfix به Dovecot استفاده می‌شود.
Maildir
یک فرمت ذخیره‌سازی ایمیل که هر پیام را در یک فایل جداگانه ذخیره می‌کند.
SPF
Sender Policy Framework — استانداردی که مشخص می‌کند کدام IPها مجاز به ارسال ایمیل از یک دامنه هستند.
DKIM
DomainKeys Identified Mail — استانداردی که با امضای دیجیتال، صحت پیام را تأیید می‌کند.
DMARC
Domain-based Message Authentication, Reporting and Conformance — لایه‌ی policy روی SPF و DKIM.
PTR
Pointer Record — رکورد Reverse DNS که IP را به Hostname نگاشت می‌کند.
DNSBL
DNS-based Blackhole List — لیستی از IPهایی که به‌عنوان منبع Spam شناخته شده‌اند.
STARTTLS
مکانیزمی که یک ارتباط plaintext را به TLS ارتقا می‌دهد.
Inbox Placement
نرخ تحویل ایمیل به Inbox (نه Spam) گیرنده.
Reputation
اعتبار یک IP یا دامنه از دید Providerهای ایمیل.

منابع