-
- 16 مهر 1404
- سیستم عامل لینوکس
در این آموزش، بهصورت گامبهگام یاد میگیرید چطور یک سرور ایمیل کامل روی Ubuntu راهاندازی کنید که با Gmail، Outlook و سایر سرویسها بهدرستی کار کند و امتیاز کامل از سایتهایی مثل mail-tester.com بگیرد.
توجه: فرض میکنیم دامنه pyler.ir و hostname سرور mail.pyler.ir و آی پی ثابت سرور 91.91.91.91 است — در مثالها آنها را با نام دامنهٔ خودت جایگزین کن.
🔹 مفاهیم پایهٔ امنیت ایمیل (درک قبل از تنظیم)
وقتی شما ایمیلی از info@pyler.ir برای کسی (مثلاً Gmail) میفرستید، آن گیرنده باید بتواند تشخیص دهد که آیا واقعاً این ایمیل از دامنه pyler.ir آمده یا از یک شخص جعلکننده (spoofed sender).
برای این تشخیص، سه فناوری اصلی وجود دارد:
| فناوری | هدف | بررسی در کجا | مثال نتیجه در Gmail |
|---|---|---|---|
| SPF (Sender Policy Framework) | تعیین اینکه چه سرورهایی مجاز به ارسال ایمیل از طرف دامنه هستند | DNS TXT رکورد | spf=pass |
| DKIM (DomainKeys Identified Mail) | امضا دیجیتال محتوا برای جلوگیری از جعل یا تغییر ایمیل | هدر ایمیل | dkim=pass |
| DMARC (Domain-based Message Authentication, Reporting & Conformance) | تعیین سیاست نهایی: اگر SPF و DKIM رد شدند چه شود + ارسال گزارشها | DNS TXT رکورد | dmarc=pass |
🧩 SPF چیست و چگونه کار میکند؟
SPF مثل یک «لیست سفید» در DNS است که میگوید چه IPهایی اجازه دارند از طرف دامنه شما ایمیل بفرستند.
مثلاً:
pyler.ir. TXT "v=spf1 mx ip4:91.91.91.91 -all"
توضیح:
-
v=spf1→ نسخه SPF -
mx→ تمام سرورهایی که در رکورد MX هستند مجازند -
ip4:91.91.91.91→ این IP مجاز است -
-all→ هر چیز دیگری ممنوع است (reject)
📘 وقتی Gmail ایمیل شما را دریافت میکند، آدرس IP فرستنده را نگاه میکند و با SPF دامنه مقایسه میکند:
اگر IP در لیست باشد → spf=pass
اگر نباشد → spf=fail (و ممکن است ایمیل اسپم یا رد شود)
🔐 DKIM چیست و چرا مهم است؟
DKIM (DomainKeys Identified Mail) ایمیل شما را دیجیتالی امضا میکند تا گیرنده بداند که:
-
ایمیل واقعاً از سرور مجاز شما آمده است.
-
محتوای ایمیل در مسیر تغییر نکرده است.
نحوه کار به زبان ساده:
-
در سرور خود یک کلید خصوصی (Private Key) تولید میکنی — فقط سرور تو آن را دارد.
-
یک کلید عمومی (Public Key) در DNS دامنه منتشر میکنی.
-
هنگام ارسال ایمیل، سرور شما با کلید خصوصی بخشی از ایمیل را امضا میکند.
-
گیرنده (مثل Gmail) امضا را میگیرد و با کلید عمومی از DNS بررسی میکند.
اگر امضا درست باشد → dkim=pass
نمونهٔ رکورد DNS:
mail._domainkey.pyler.ir. TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."
در اینجا:
-
mail= نام Selector (میگوید از کدام کلید استفاده شده) -
p== کلید عمومی -
v=DKIM1; k=rsa= نسخه و نوع الگوریتم
در هدر ایمیل شما خطی مشابه این دیده میشود:
DKIM-Signature: v=1; a=rsa-sha256; d=pyler.ir; s=mail; bh=...; b=...
📊 DMARC چیست و چرا لازم است؟
DMARC در واقع ترکیبی از SPF و DKIM است، اما با «قانون» و «گزارشگیری».
DMARC در DNS نوشته میشود و به سرویسهای گیرنده (مثل Gmail, Outlook) میگوید:
اگر SPF و DKIM هر دو رد شدند، با ایمیل چه کنیم؟
و گزارشهای خطا را به کجا بفرستیم؟
نمونه رکورد:
"dmarc.pyler.ir. TXT "v=DMARC1; p=quarantine; rua=mailto:postmaster@pyler.ir; pct=100"
توضیح:
-
v=DMARC1→ نسخه پروتکل -
p=quarantine→ سیاست (میتواند یکی از اینها باشد):-
none→ فقط گزارش بده، کاری نکن -
quarantine→ ایمیل مشکوک را اسپم کن -
reject→ کاملاً رد کن
-
-
rua=→ آدرس ایمیل برای دریافت گزارشهای Aggregate (خلاصهٔ روزانه از سرورهای گیرنده) -
pct=→ درصد اجرای سیاست (۱۰۰٪ یعنی برای همهٔ ایمیلها)
✅ اگر SPF یا DKIM یکی پاس شود و با دامنهٔ فرستنده همخوان باشد → dmarc=pass
🧠 ارتباط بین SPF، DKIM و DMARC (مثال عملی)
فرض کنیم از info@pyler.ir ایمیلی به Gmail میفرستید:
| سیستم | بررسی چه چیزی | نتیجه |
|---|---|---|
| SPF | IP فرستنده در رکورد DNS هست؟ | ✅ Pass |
| DKIM | امضا معتبر است؟ کلید در DNS وجود دارد؟ | ✅ Pass |
| DMARC | SPF/DKIM یکی Pass و دامنهاش با From یکی است؟ | ✅ Pass |
در این حالت Gmail در هدر ایمیل نشان میدهد:
Authentication-Results: spf=pass; dkim=pass; dmarc=pass
و ایمیل شما به Inbox میرود، نه Spam.
اما اگر SPF و DKIM fail شوند:
spf=fail; dkim=fail; dmarc=fail (p=reject)
ایمیل به Spam میرود یا کلاً رد میشود.
🧰 OpenDKIM و OpenDMARC چیستند؟
OpenDKIM
-
برنامهای است که در سرور نصب میکنی تا امضاهای DKIM را تولید (در حالت ارسال) و بررسی (در حالت دریافت) کند.
-
Postfix هنگام ارسال هر ایمیل، پیام را به OpenDKIM میفرستد (از طریق پورت 8891).
-
OpenDKIM با کلید خصوصی امضا را اضافه میکند.
OpenDMARC
-
برنامهای است که پیامهای دریافتی را بررسی میکند تا بفهمد آیا SPF/DKIM معتبرند و DMARC باید چه سیاستی اعمال کند.
-
Postfix ایمیل را بعد از دریافت به OpenDMARC میدهد (پورت 8893).
-
میتواند گزارشهای DMARC را برایتان ارسال کند تا ببینید چه کسی از دامنهٔ شما جعل کرده است.
💡 معرفی SMTP
SMTP مخفف Simple Mail Transfer Protocol است، یعنی پروتکل انتقال سادهی ایمیل. این پروتکل یکی از استانداردهای اصلی برای ارسال ایمیل در اینترنت است. وظیفهی SMTP این است که ایمیلها را از کلاینت (فرستنده) به سرور ایمیل یا از یک سرور ایمیل به سرور دیگر منتقل کند.
بهطور خلاصه:
-
SMTP پروتکلی است که برای ارسال ایمیلها استفاده میشود.
-
معمولاً روی پورت 25، 465 (با SSL) یا 587 (با TLS) کار میکند.
-
کلاینتهای ایمیل مثل Outlook یا سرویسهای ارسال ایمیل در وب از SMTP برای فرستادن پیامها به سرور استفاده میکنند.
مثلاً وقتی با جیمیل یک ایمیل میفرستی، جیمیل از پروتکل SMTP برای تحویل آن به سرور مقصد استفاده میکند.
🖥 معرفی SMTPD
smtpd در واقع به معنی SMTP Daemon است، یعنی برنامهای که به عنوان سرور دریافتکنندهی SMTP عمل میکند.
به زبان ساده، وقتی SMTP فرستنده است، smtpd گیرنده است.
-
smtpd روی سرور اجرا میشود و منتظر میماند تا درخواستهای SMTP از کلاینتها را دریافت کند.
-
وظیفهی آن دریافت و پردازش ایمیلهای ورودی است، مثلاً از یک فرستندهی خارجی یا از یک کاربر داخلی.
-
معمولاً به عنوان بخشی از نرمافزارهایی مثل Postfix، Exim، Sendmail یا OpenSMTPD استفاده میشود.
به عبارت دیگر:
-
SMTP = پروتکل ارتباطی برای ارسال ایمیل
-
smtpd = برنامه (سرور) که از آن پروتکل استفاده میکند تا ایمیلها را دریافت و پردازش کند
🔁 تفاوت خلاصه
| ویژگی | SMTP | SMTPD |
|---|---|---|
| نوع | پروتکل | سرویس/برنامه (Daemon) |
| نقش | فرستنده | گیرنده |
| استفاده | برای ارسال ایمیل | برای دریافت ایمیل |
| اجرا میشود در | کلاینت یا سرور ارسالکننده | سرور دریافتکننده |
| مثالها | کلاینت جیمیل، Outlook | Postfix smtpd، OpenSMTPD |
اگر بخواهیم با مثالی توضیح دهیم:
وقتی شما ایمیلی از کامپیوترتان میفرستید، برنامهی شما از SMTP استفاده میکند تا پیام را بفرستد. در سمت دیگر، سرور گیرنده یک smtpd دارد که منتظر است تا آن پیام را دریافت کند.
🧱 سایر مفاهیم مهم در مقاله
1️⃣ MTA (Mail Transfer Agent)
سرویسی که وظیفه ارسال و دریافت ایمیلها را بین سرورها دارد.
در اینجا: Postfix
2️⃣ MDA (Mail Delivery Agent)
ایمیلی که دریافت شده را تحویل mailbox محلی میدهد.
در اینجا: Postfix خودش یا Dovecot (در حالت virtual users)
3️⃣ IMAP / POP3
پروتکلهایی برای خواندن ایمیل توسط کلاینتها (Outlook, Thunderbird, موبایل)
-
IMAP: همیشه با سرور sync است.
-
POP3: ایمیلها را دانلود میکند و معمولاً حذف میکند.
4️⃣ SASL Authentication
روش احراز هویت کاربر هنگام ارسال ایمیل (مثلاً از طریق پورت 587).
Dovecot معمولاً backend آن را فراهم میکند تا Postfix بتواند کاربران را چک کند.
5️⃣ TLS / STARTTLS
رمزنگاری ارتباط ایمیل برای جلوگیری از شنود.
Let’s Encrypt گواهی TLS رایگان برای mail.pyler.ir میدهد.
🔍 خلاصهٔ ساده برای حفظ کردن
| نام | نقش | محل تنظیم | نکته کلیدی |
|---|---|---|---|
| SPF | مجوز IP برای ارسال | DNS TXT | فقط IP مجازها را بگذار |
| DKIM | امضای دیجیتال ایمیل | OpenDKIM + DNS | لازم برای اعتبار محتوا |
| DMARC | سیاست و گزارشگیری | DNS TXT | SPF/DKIM را enforce میکند |
| OpenDKIM | امضاکنندهٔ ایمیلها | سرور (پورت 8891) | کلید خصوصی را نگه میدارد |
| OpenDMARC | بررسیکنندهٔ ورودیها | سرور (پورت 8893) | لاگ و گزارش تولید میکند |
فهرست مطالب
-
مقدمه و معماری کلی
-
پیشنیازها و برنامهریزی DNS
-
نصب بستههای پایه (Postfix, Dovecot, OpenDKIM, OpenDMARC, Rspamd)
-
پیکربندی Postfix (main.cf و master.cf) — توضیح پارامترها
-
پیکربندی Dovecot (auth، mail_location، TLS)
-
راهاندازی SASL (Dovecot auth / SMTP auth)
-
انتخاب Maildir یا mbox و مهاجرت
-
تنظیم OpenDKIM (تولید کلیدها، KeyTable، SigningTable)
-
تنظیم OpenDMARC (قوانین، ignore hosts)
-
اتصال Milterها به Postfix و ترتیب پردازش (Rspamd, OpenDKIM,
-
TLS: گواهی Let’s Encrypt، تنظیمات ارسال و دریافت امن
-
DNS عملی: A, MX, PTR, SPF, DKIM TXT, DMARC TXT (نمونه رکوردها برای Cloudflare)
-
تستها: openssl, swaks, dig, mail-tester، بررسی headerها
-
امنیت و نگهداری (Fail2Ban، بکآپ، چرخش کلید DKIM، مانیتورینگ)
-
نکات نهایی و چکلیست تکمیلی
1 — مقدمه و معماری کلی
یک Mail Server واقعی چند جزء دارد:
-
MTA (Mail Transfer Agent) — ارسال/دریافت ایمیل، معمولاً Postfix.
-
MDA (Mail Delivery Agent) — تحویل محلی، یا Postfix خودش.
-
IMAP/POP3 server — برای کلاینتها، معمولاً Dovecot.
-
Milterها — برای امضا/بررسی/اسکن (OpenDKIM, OpenDMARC, Rspamd)
-
SMTP Submission — پورت 587 (مشتریان باید از آن استفاده کنند با SMTP AUTH + STARTTLS)
-
TLS — رمزنگاری انتقال با Let’s Encrypt
-
DNS — A, MX, PTR, SPF, DKIM, DMARC
-
(اختیاری) Webmail — Roundcube/RainLoop
هدف: ایمیلهایی که از سرور شما میروند، توسط گیرندهها (Gmail/Outlook) معتبر شناخته شوند (SPF/DKIM/DMARC PASS) و مسیر انتقال با TLS امن باشد.
2 — پیشنیازها و برنامهریزی DNS
قبل از نصب:
-
یک سرور Ubuntu (22.04 یا 24.04) با IP استاتیک IPv4 (و اختیاری IPv6).
-
دسترسی root یا sudo.
-
کنترل پنل DNS دامنه (Cloudflare/Registrar).
-
پورتهای لازم باز و قابل دسترسی:
-
ورودی: 25 (SMTP), 587 (Submission), 465 (SMTPS optional), 993 (IMAPS), 995 (POP3S optional)
-
خروجی: پورت 25 باید باز باشد تا سایر سرویسها به شما ایمیل تحویل دهند — توجه به محدودیتهای دیتاسنتر.
-
برنامهریزی DNS اولیه (قبل از چیزهای دیگر)
-
A record:
mail.pyler.ir. A 91.91.91.91 -
MX record:
pyler.ir. MX 10 mail.pyler.ir. -
PTR (reverse DNS): در پنل دیتاسنتر/ISP برای IP، PTR را به
mail.pyler.irست کن. (حیاتی برای Gmail) -
SPF (موقتی): یک TXT:
v=spf1 mx ip4:91.91.91.91 -all -
(بعد از تولید) DKIM TXT و DMARC TXT را اضافه خواهیم کرد.
3 — نصب بستهها
sudo apt update sudo apt install -y postfix dovecot-core dovecot-imapd dovecot-pop3d opendkim opendkim-tools opendmarc rspamd swaks
-
هنگام نصب Postfix: انتخاب
Internet Siteوmail.pyler.irبه عنوان system mail name. -
Rspamd اختیاری است ولی برای ضداسپم مفید است.
4 — پیکربندی Postfix (main.cf و master.cf)
فایل: /etc/postfix/main.cf — نمونه کامل (توضیحات پس از آن):
# Basic identity
myhostname = mail.pyler.ir
mydomain = pyler.ir
myorigin = /etc/mailname
mail_name = Postfix
# Interfaces
inet_interfaces = all
inet_protocols = ipv4
# Destinations
mydestination = $myhostname, pyler.ir, localhost.pyler.ir, localhost
# Mailbox
home_mailbox = Maildir/
mailbox_size_limit = 0
recipient_delimiter = +
# Networks
mynetworks = 127.0.0.0/8 [::1]/128
# SASL via Dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
# TLS for incoming
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.pyler.ir/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.pyler.ir/privkey.pem
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 1
# TLS for outgoing
smtp_use_tls = yes
smtp_tls_security_level = may
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_loglevel = 1
# Milters (OpenDKIM, OpenDMARC, Rspamd)
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:11332, inet:127.0.0.1:8891, inet:127.0.0.1:8893
non_smtpd_milters = $smtpd_milters
# Misc
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
توضیح کلیدها
-
inet_protocols = ipv4— اگر نمیخواهی IPv6 استفاده شود؛ اگر استفاده میکنی حتماً PTR و DNS IPv6 را ست کن. -
home_mailbox = Maildir/— توصیه میشود Maildir برای سازگاری با Dovecot استفاده شود. -
smtpd_sasl_*— Postfix را وادار به استفاده از Dovecot برای احراز هویت میکند. -
smtpd_tls_auth_only = yes— فقط با TLS اجازهٔ AUTH بده. خوب برای امنیت. -
smtp_tls_security_level = may— اگر مقصد STARTTLS داشته باشد از TLS استفاده میکند.encryptاجباری میکند و ممکن است باعث عدم تحویل به سرویسهای قدیمی شود. -
smtpd_milters— ترتیب مهم است: معمولاً Rspamd (11332) قبل از OpenDKIM (8891) یا بعد؟ معمولاً Rspamd بهعنوان content filter قبل از DKIM پیکربندی میشود یا بهصورت جداگانه؛ اما مهم این است که milterها در main.cf فهرست شده باشند تا Postfix به آنها وصل شود.
بعد از ویرایش:
sudo postmap /etc/aliases
sudo systemctl restart postfix
همچنین در /etc/postfix/master.cf مطمئن شو که submission فعال است (پورت 587):
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
5 — پیکربندی Dovecot (auth و mail_location)
فایلهای کلیدی:
-
/etc/dovecot/conf.d/10-mail.conf -
/etc/dovecot/conf.d/10-auth.conf -
/etc/dovecot/conf.d/10-master.conf -
/etc/dovecot/conf.d/10-ssl.conf
نمونههای مهم
/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login
!include auth-system.conf.ext
auth_username_format = %n
/etc/dovecot/conf.d/10-master.conf (برای Postfix auth socket)
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
}
/etc/dovecot/conf.d/10-ssl.conf
ssl = required ssl_cert = </etc/letsencrypt/live/mail.pyler.ir/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.pyler.ir/privkey.pem
بعد:
sudo systemctl restart dovecot
6 — SASL/Auth (Dovecot برای Postfix)
-
اطمینان حاصل کن که کاربر ایمیل وجود دارد:
sudo adduser info
-
یا اگر از virtual users / SQL استفاده میکنی، باید passwd و userdb تنظیم شوند.
-
برای تست auth:
doveadm auth test info
-
برای تست از بیرون (swaks):
swaks --to someone@example.com --from postmaster@pyler.ir --server mail.pyler.ir --port 587 --auth LOGIN --auth-user postmaster@pyler.ir --auth-password YOUR_PASS --tls
7 — Maildir vs mbox — کدام بهتر است؟
-
Maildir: هر ایمیل یک فایل است، مناسب IMAP و Dovecot، کمتر در معرض corruption است. پیشنهاد میشود.
-
mbox: همه ایمیلها در یک فایل، سادهتر برای برخی ابزارها، ولی خطرناک در concurrency.
برای Maildir:
-
در
main.cf:home_mailbox = Maildir/ -
برای کاربر جدید:
sudo mkdir -p /home/info/Maildir/{cur,new,tmp}
sudo chown -R info:info /home/info/Maildir
8 — OpenDKIM: تولید کلید، KeyTable، SigningTable، TrustedHosts
تولید کلید:
sudo mkdir -p /etc/opendkim/keys/pyler.ir
cd /etc/opendkim/keys/pyler.ir
sudo opendkim-genkey -s mail -d pyler.ir
sudo chown opendkim:opendkim mail.private
sudo chmod 600 mail.private
فایلهای تولیدشده: mail.private (private key) و mail.txt (رکورد DNS public key)
KeyTable (/etc/opendkim/KeyTable)
mail._domainkey.pyler.ir pyler.ir:mail:/etc/opendkim/keys/pyler.ir/mail.private
SigningTable (/etc/opendkim/SigningTable)
*@pyler.ir mail._domainkey.pyler.ir
TrustedHosts (/etc/opendkim/TrustedHosts)
127.0.0.1 localhost mail.pyler.ir
opendkim.conf (نمونه)
Syslog yes
SyslogSuccess yes
Canonicalization relaxed/simple
OversignHeaders From
UserID opendkim
UMask 007
Socket inet:8891@127.0.0.1
PidFile /run/opendkim/opendkim.pid
KeyTable /etc/opendkim/KeyTable
SigningTable /etc/opendkim/SigningTable
TrustedHosts /etc/opendkim/TrustedHosts
پس از تنظیم:
sudo systemctl restart opendkim
لاگ opendkim در /var/log/mail.log یا syslog ثبت میشود. به دنبال پیامهایی مانند:
opendkim[PID]: DKIM-Signature field added (s=mail, d=pyler.ir)
9 — OpenDMARC تنظیم و ignore hosts
/etc/opendmarc.conf — نمونه:
AuthservID mail.pyler.ir
PidFile /run/opendmarc/opendmarc.pid
Socket inet:8893@127.0.0.1
Syslog true
TrustedAuthservIDs mail.pyler.ir
IgnoreHosts /etc/opendmarc/ignore.hosts
محتوای /etc/opendmarc/ignore.hosts:
127.0.0.1localhostmail.pyler.ir91.91.91.91
سپس:
sudo systemctl restart opendmarc
OpenDMARC بیشتر برای لاگ و گزارش DMARC استفاده میشود. اگر از localhost ایمیل میآید و خودت خودت را میفرستی، معمولاً میخواهی اینها را ignore کنی تا false positive نداشته باشی.
10 — اتصال Milters به Postfix (ترتیب، نکات)
در main.cf:
smtpd_milters = inet:127.0.0.1:11332, inet:127.0.0.1:8891, inet:127.0.0.1:8893
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
-
ترتیب میتواند مهم باشد — معمولاً Rspamd (content filter) ابتدا پیام را بررسی و امتیاز میدهد، سپس OpenDKIM امضا میکند یا بالعکس بسته به نیاز.
-
اگر milterها درست کار نمیکنند، Postfix ممکن است ایمیلها را امضا نکند. بررسی کن
postconf | grep milterخروجی درست داشته باشد.
11 — TLS (Let’s Encrypt) برای server-side و client-side
نصب Certbot و گرفتن گواهی
sudo apt install certbot python3-certbot-nginx sudo certbot certonly --standalone -d mail.pyler.ir
-
یا اگر Nginx/Apache دارید از plugin آن استفاده کن.
-
تنظیم
smtpd_tls_cert_fileوsmtpd_tls_key_fileدر main.cf وssl_cert/ssl_keyدر Dovecot.
نکته برای Renewal
sudo certbot renew --dry-run
و Cron job یا systemd timer برای renew خودکار.
12 — DNS عملی: نمونه رکوردها (Cloudflare)
A
mail.pyler.ir. A 91.91.91.91
MX
pyler.ir. MX 10 mail.pyler.ir.
SPF (TXT)
pyler.ir. TXT "v=spf1 mx ip4:91.91.91.91 -all"
DKIM (TXT — نام در Cloudflare فقط mail._domainkey)
mail._domainkey TXT "v=DKIM1; k=rsa; p=MIIBIjANBgkq...AB"
DMARC (TXT — نام _dmarc)
_dmarc TXT "v=DMARC1; p=quarantine; rua=mailto:postmaster@pyler.ir; pct=100"
در Cloudflare اطمینان حاصل کن Proxy (آیکون ابر) غیرفعال باشد برای رکوردهای A و MX و DKIM (نه proxied).
13 — تستها و بررسیها (دستورها + اینکه چه خروجی باید ببینی)
بررسی پورتها و سرویسها
sudo ss -tlnp | egrep 'postfix|dovecot|opendkim|opendmarc|rspamd'
تست TLS/ STARTTLS
openssl s_client -connect mail.pyler.ir:587 -starttls smtp
openssl s_client -connect mail.pyler.ir:993
در خروجی دنبال 250-STARTTLS و TLSv1.3 باش.
تست SMTP AUTH با swaks
swaks --to you@gmail.com --from info@pyler.ir --server mail.pyler.ir --port 587 --auth LOGIN --auth-user info --auth-password YOUR_PASSWORD --tls
بررسی رکورد DKIM از DNS
dig txt mail._domainkey.pyler.ir +short
ارسال تست به mail-tester
-
به https://www.mail-tester.com برو، آدرس ایمیل موقت بگیر و از سرور خودت یک ایمیل ارسال کن (از SMTP سرورت).
-
بررسی کن SPF/DKIM/DMARC همه PASS شوند.
مشاهده header ایمیل در Gmail → Show original
-
دنبال خطوط:
DKIM-Signature: v=1; a=rsa-sha256; d=pyler.ir; s=mail; ...
Authentication-Results: mx.google.com; spf=pass; dkim=pass; dmarc=pass
14 — امنیت، نگهداری و عملیات روزمره
Fail2Ban
-
نصب و تنظیم برای جلوگیری از brute-force راههای SMTP و IMAP:
sudo apt install fail2ban
-
اضافه کن فیلترهای postfix/dovecot.
بکآپ
-
بکآپ کلید DKIM (
/etc/opendkim/keys/pyler.ir/mail.private) و/etc/postfix,/etc/dovecot,/etc/opendkim، و certs.
چرخش DKIM
-
هر سال یا در صورت خطر چرخش کلید انجام بده: تولید selector جدید و اضافه رکورد DNS جدید، سپس تغییر KeyTable.
مانیتورینگ
-
مانیتور لاگها:
sudo tail -F /var/log/mail.log -
ایمیلهای گزارش DMARC را تحلیل کن —
ruaآدرسها را بررسی کن.
امنیت: محدودیت rate, tls_auth_only, strong ciphers
-
در Postfix میتوانی
smtpd_tls_protocols = !SSLv2,!SSLv3و cipher suite محدود کنی. از TLSv1.2+ و TLSv1.3 استفاده کن.
15 — چکلیست نهایی پیش از Production
-
A و MX ست شده و Propagate شده
-
PTR روی IP تنظیم شده (IPv4)
-
Postfix روی پورتهای 25,587 گوش میدهد
-
Dovecot روی 993 (IMAPS) گوش میدهد
-
TLS (Let’s Encrypt) نصب و valid است (
openssl s_clientok) -
OpenDKIM کلید تولید شده و KeyTable/SigningTable تنظیم شده
-
DKIM TXT در DNS اضافه شده و dig آن را برمیگرداند
-
OpenDMARC پیکربندی شده (IgnoreHosts مناسب)
-
mail-tester: SPF/DKIM/DMARC PASS
-
Fail2Ban پایه راهاندازی شده
-
مانیتورینگ و بکآپ تنظیم شده
مثالهای مفید (کپی کن و اجرا کن)
تولید DKIM و قرار دادن رکورد DNS (خلاصه)
sudo mkdir -p /etc/opendkim/keys/pyler.ir
cd /etc/opendkim/keys/pyler.ir
sudo opendkim-genkey -s mail -d pyler.ir
sudo chown opendkim:opendkim mail.private
# سپس محتوای mail.txt را در DNS به عنوان TXT برای name=mail._domainkey کپی کن
سریع تست ارسال با swaks
swaks --to test@your-mail-tester-address.com \
--from info@pyler.ir \
--server mail.pyler.ir --port 587 \
--auth LOGIN --auth-user info --auth-password YOURPASS --tls
دیدن لاگ realtime
sudo tail -F /var/log/mail.log
جمعبندی و توصیههای نهایی
-
تمرکز کن روی DNS (PTR/SPF/DKIM/DMARC) و TLS — این سه عامل تعیینکنندهٔ deliverability به Gmail و Hotmail هستند.
-
تنظیمات نرمافزاری در سرور، مخصوصاً اتصال Postfix ↔ OpenDKIM ↔ OpenDMARC، باید دقیق و بدون خطا باشد — لاگها بهترین دوست شما هستند.
-
برای کاربر نهایی: اگر میخواهی از Outlook ایمیل بفرستد و DKIM روی آن لحاظ شود، Outlook باید با SMTP سرور شما (mail.pyler.ir) تنظیم شود تا Postfix ایمیل را امضا کند.
-
از mail-tester برای بررسی نهایی استفاده کن و گزارشهای DMARC را به آدرس مدیریتی بفرست.
نظر خود را اینجا بنویسید