How to enable an SMTP email server on Hetzner cloud server?
آموزش گام به گام فعال‌سازی سرور ایمیل SMTP بر روی سرور ابری هتزنر و جلوگیری از اسپم شدن ایمیل‌ها با تنظیمات مناسب دامنه و هاست.

How to enable an SMTP email server on Hetzner cloud server?

This article will teach you how to set up an SMTP email server on a Hetzner cloud server and prevent emails from being spammed. Send secure and reliable emails with the correct DNS and authentication settings.
0 Shares
0
0
0
0
  1. چطور یک سرور SMTP روی هتزنر راه‌اندازی کنیم که ایمیل ارسال کند و اسپم نشود؟
  2. معماری پیشنهادی و نکات اولیه
  3. مراحل آماده‌سازی سرور ارسال (هتزنر)
    1. نصب بسته‌های پایه (Debian/Ubuntu)
    2. تنظیم hostname و PTR
    3. پیکربندی TLS با Let’s Encrypt
    4. تنظیمات پایه Postfix (گزیده main.cf)
    5. فعال‌سازی SASL با Dovecot (برای اعتبارسنجی کاربران ارسال‌کننده)
  4. DKIM، SPF و DMARC — پیکربندی DNS
    1. تولید کلید DKIM با OpenDKIM
    2. رکورد SPF
    3. رکورد DMARC
  5. دریافت ایمیل روی سرور دیگر و مدیریت Bounce
    1. نحوه تنظیم MX برای دریافت
    2. کانفیگ Return-Path و مدیریت Bounce
    3. نمونه روند پردازش bounce با flanker (پایتون)
  6. جلوگیری از اسپم شدن — بهترین شیوه‌ها
    1. تنظیمات فنی
    2. سیاست‌های محتوا و لیست‌ها
  7. کنترل نرخ ارسال، صف و جلوگیری از ریپوتیشن منفی
  8. تست و ابزارها برای بررسی deliverability
  9. مثال کامل روند: ارسال از اپلیکیشن A با استفاده از هتزنر به‌عنوان relay
  10. نکات امنیتی و عملیاتی تکمیلی
  11. ابزارهای متن‌باز پیشنهادی برای اتوماسیون (رایگان)
  12. پیوند با خدمات شرکت (۸۵+ لوکیشن و سرویس‌ها)
  13. نکته پایانی

چطور یک سرور SMTP روی هتزنر راه‌اندازی کنیم که ایمیل ارسال کند و اسپم نشود؟

در این راهنما قدم‌به‌قدم پیاده‌سازی SMTP روی یک سرور ابری هتزنر برای ارسال ایمیل و نگاشت دریافت ایمیل روی سرور دیگر توضیح داده می‌شود. همچنین تنظیمات مهم DNS (SPF، DKIM، DMARC، PTR)، احراز هویت (SASL/TLS)، مدیریت Bounce و unsubscribe و توصیه‌های عملی برای جلوگیری از قرار گرفتن در فهرست سیاه پوشش داده می‌شود.

معماری پیشنهادی و نکات اولیه

Proposed architecture:

  • سرور ارسال (Hetzner Cloud): نصب Postfix + OpenDKIM + OpenDMARC + TLS — مسئول ارسال ایمیل (SMTP relay).
  • سرور دریافت (مثلاً VPS یا هاست شما): MX رکوردها به این سرور اشاره می‌کنند؛ مسئول تحویل و دریافت ورودی‌ها (POP/IMAP/Dovecot یا سرویس ایمیل شما).
  • صندوق مخصوص Bounce و Unsubscribe: بازگشتی‌ها به یک آدرس اختصاصی فرستاده شوند و آن صندوق توسط سروری که دریافت را انجام می‌دهد، پردازش گردد.
  • کاربران/اپلیکیشن‌ها: با استفاده از SMTP AUTH (یا مجوز مبتنی بر IP) روی سرور هتزنر احراز هویت می‌کنند تا اجازه رله داشته باشند.

مراحل آماده‌سازی سرور ارسال (هتزنر)

نصب بسته‌های پایه (Debian/Ubuntu)

مثال برای اوبونتو/دبیان:

sudo apt update
sudo apt install -y postfix dovecot-core dovecot-imapd opendkim opendkim-tools opendmarc certbot postfix-policyd-spf-python rspamd

تنظیم hostname و PTR

تنظیم hostname روی سرور ارسال و ثبت Reverse DNS در پنل هتزنر ضروری است.

sudo hostnamectl set-hostname mail.example.com

نکات تنظیمات Postfix: Amount myhostname را برابر mail.example.com قرار دهید و در پنل هتزنر برای IP معکوس مقدار mail.example.com را ثبت کنید.

پیکربندی TLS با Let’s Encrypt

صدور گواهی و ارجاع آن در تنظیمات Postfix:

sudo certbot certonly --standalone -d mail.example.com

In main.cf مقادیر زیر را اضافه کنید:

smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
smtpd_use_tls = yes
smtp_tls_security_level = may
smtpd_tls_security_level = may

تنظیمات پایه Postfix (گزیده main.cf)

نمونه‌ی گزیده‌ای از تنظیمات مهم در main.cf:

myhostname = mail.example.com
myorigin = /etc/mailname
mydestination = localhost
relay_domains =
mynetworks = 127.0.0.0/8
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_helo_required = yes

Explanation: reject_unauth_destination از استفاده سرور شما به‌عنوان open relay جلوگیری می‌کند؛ فقط کاربران مجاز یا ماشین‌های شناخته‌شده می‌توانند رله کنند.

فعال‌سازی SASL با Dovecot (برای اعتبارسنجی کاربران ارسال‌کننده)

In the file /etc/dovecot/conf.d/10-master.conf Section service auth را به این شکل تنظیم کنید:

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }
}

برای احراز هویت می‌توانید از passwd محلی، پایگاه داده SQL یا LDAP استفاده کنید. سپس سرویس‌ها را ریستارت کنید:

sudo systemctl restart dovecot postfix

DKIM، SPF و DMARC — پیکربندی DNS

تولید کلید DKIM با OpenDKIM

مثال ایجاد کلید DKIM روی سرور ارسال:

sudo mkdir /etc/opendkim/keys/example.com
sudo opendkim-genkey -b 2048 -d example.com -s mail -D /etc/opendkim/keys/example.com

File mail.txt تولید می‌شود؛ محتوی رکورد TXT که باید در DNS اضافه شود: selector = mailmail._domainkey.example.com.

نمونه تنظیمات /etc/opendkim.conf (گزیده):

Domain                  example.com
KeyFile                 /etc/opendkim/keys/example.com/mail.private
Selector                mail
AutoRestart             yes
Socket                  local:/var/spool/postfix/opendkim/opendkim.sock

و در /etc/postfix/main.cf Add:

milter_default_action = accept
smtpd_milters = unix:/var/spool/postfix/opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters

رکورد SPF

در DNS دامنه نمونه:

example.com. IN TXT "v=spf1 ip4:YOUR_HETZNER_IP include:spf.protection.example ?all"

یا سخت‌گیرانه‌تر:

"v=spf1 ip4:YOUR_HETZNER_IP -all"

Recommendation: در آغاز از ~all Or ?all استفاده کنید تا اشکالات اولیه باعث ریجکت کامل نشود و سپس سخت‌گیرانه‌تر کنید.

رکورد DMARC

نمونه DMARC در DNS:

_dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; pct=100; adkim=s; aspf=s"

Note: برای شروع می‌توانید p=none بگذارید تا گزارش‌ها را ببینید، سپس p=quarantine Or p=reject Activate.

دریافت ایمیل روی سرور دیگر و مدیریت Bounce

نحوه تنظیم MX برای دریافت

مثال رکورد MX در DNS:

example.com. IN MX 10 mail-receive.example.org

نکته: MX باید به سرور دریافت اشاره کند؛ ارسال‌کننده شما از هتزنر برای ایمیل خروجی استفاده می‌کند — بنابراین رکورد SPF/DKIM برای دامنه ارسال تنظیم شده باشد.

کانفیگ Return-Path و مدیریت Bounce

چند نکته مهم:

  • Return-Path باید برای مدیریت بازگشتی‌ها مشخص باشد؛ بهتر است به یک ساب‌دامین اختصاصی مثل bounce.example.com اشاره کند.
  • برای هر ایمیل می‌توانید از VERP استفاده کنید: envelope-from="[email protected]" تا بازگشت دقیق‌تر مشخص شود.

پردازش bounces — روند پیشنهادی:

  1. یک آدرس [email protected] بسازید و MX آن را به سروری که پردازش می‌کند اشاره دهید.
  2. آن سرور با fetchmail / getmail یا مستقیم IMAP صندوق را واکشی کند و با اسکریپت‌های پردازش bounce اقدام نماید.
  3. برای پارس کردن bounce می‌توانید از ابزارهایی مانند flanker Or Mail::Delivery::BounceParser Use.

نمونه روند پردازش bounce با flanker (پایتون)

ابتدا نصب:

pip install flanker

نمونه اسکریپت ساده (خواندن از stdin و پردازش):

from flanker import mime
from flanker.utils import bounces
import sys

raw = sys.stdin.read()
msg = mime.from_string(raw)
bounce = bounces.parse(raw)
# classify and store bounce info in database or suppression list

با دسته‌بندی hard bounce (خطاهای 5xx) و soft bounce (4xx) می‌توانید سیاست‌های حذف یا تلاش مجدد اعمال کنید.

جلوگیری از اسپم شدن — بهترین شیوه‌ها

تنظیمات فنی

  • PTR همخوان با myhostname و A رکورد باشد.
  • SPF, DKIM, DMARC فعال و DKIM امضا کند.
  • HELO/SMTP banner با hostname منطبق باشد.
  • TLS فعال و smtpd_tls_auth_only = yes برای جلوگیری از ارسال رمزنگاری‌نشده.
  • اجتناب از آی‌پی‌های با سابقه بد و استفاده از rDNS مناسب.

سیاست‌های محتوا و لیست‌ها

  • Always from double opt-in برای لیست ایمیل استفاده کنید.
  • هر ایمیل باید لینک unsubscribe ساده و قابل‌فهم داشته باشد؛ در header از List-Unsubscribe Use:
List-Unsubscribe: <mailto:[email protected]>, <https://example.com/unsubscribe?email=...>
  • گرم کردن IP (IP warm-up): از روز اول مقدار کم ارسال کنید و به‌تدریج افزایش دهید.
  • حذف یا تگ کردن آدرس‌هایی با bounce یا نرخ شکایت بالا.
  • رعایت قوانین مانند CAN-SPAM و GDPR برای کاربران اروپایی.

کنترل نرخ ارسال، صف و جلوگیری از ریپوتیشن منفی

تنظیمات محدودکننده همزمانی و تاخیر به مقصد در Postfix:

postconf -e "smtp_destination_concurrency_limit = 20"
postconf -e "smtp_destination_rate_delay = 1s"

برای سیاست‌های پیچیده‌تر از policy-daemonها مانند postfwd, policyd Or rspamd Use.

مدیریت صف با دستورات Postfix:

postqueue -p
postsuper -d ALLDeferred

تست و ابزارها برای بررسی deliverability

  • برای تست SMTP از swaks Use:
swaks --to [email protected] --from [email protected] --server mail.example.com --auth LOGIN --auth-user smtpuser --auth-password smtppass --tls
  • بررسی Headers با mail-tester.com and MXToolbox برای بررسی blacklist و SPF/DKIM/DMARC.
  • مانیتورینگ لاگ‌ها با:
tail -f /var/log/mail.log

تحلیل گزارش‌های DMARC از طریق مقادیر rua and ruf کمک می‌کند مشکلات تحویل را پیدا کنید.

مثال کامل روند: ارسال از اپلیکیشن A با استفاده از هتزنر به‌عنوان relay

  1. اپلیکیشن A به mail.example.com:587 وصل می‌شود با کاربر smtp_user و رمز؛ احراز هویت انجام می‌شود.
  2. سرور هتزنر پس از تایید، ایمیل را خارج می‌کند و DKIM امضا می‌کند؛ SPF و PTR نیز تنظیم شده‌اند.
  3. در صورت بازگشت، bounce به [email protected] فرستاده می‌شود؛ MX برای bounce به سروری که پارس را انجام می‌دهد اشاره دارد.
  4. اپلیکیشن لیست suppression را خوانده و برای bounceهای سخت آدرس را غیرفعال می‌کند.

نکات امنیتی و عملیاتی تکمیلی

  • اطمینان حاصل کنید پورت 25 خروجی روی سرور باز باشد (هتزنر گاهی محدودیت‌های شبکه‌ای دارد).
  • برای جلوگیری از سوءاستفاده، authentication اجباری باشد؛ هرگز server را به‌عنوان open relay نگه ندارید.
  • لاگ‌ها را به سیستم مانیتورینگ (ELK/Graylog) ارسال کنید تا spikeهای ارسال یا پاسخ‌های خطا تحلیل شوند.
  • در صورت حجم بالای ارسال از IP اختصاصی استفاده کنید و آن IP را به‌تدریج گرم کنید.

ابزارهای متن‌باز پیشنهادی برای اتوماسیون (رایگان)

  • Postfix (SMTP)
  • Dovecot (SASL / IMAP)
  • OpenDKIM / OpenDMARC
  • Rspamd برای فیلترینگ و امتیازدهی
  • fetchmail / getmail برای واکشی bounces
  • flanker یا Mail::Delivery::BounceParser برای پردازش bounce
  • postfwd / policyd برای نرخ‌دهی و سیاست‌ها

پیوند با خدمات شرکت (۸۵+ لوکیشن و سرویس‌ها)

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

  • More than 85 locations جهانی برای انتخاب دیتاسنتر.
  • سرور ابری با عملکرد بالا و IP اختصاصی برای ایمیل مارکتینگ و سرویس‌های SMTP.
  • سرور ضد DDoS، VPSهای متنوع و پشتیبانی تنظیمات شبکه و امنیت.

نکته پایانی

اگر آماده راه‌اندازی هستید، می‌توانید پلن‌های سرور ابری، IP اختصاصی و خدمات مدیریت DNS و امنیت را بررسی کنید یا با تیم فنی تماس گرفته و درخواست پیکربندی اختصاصی، پیاده‌سازی DKIM/DMARC و مدیریت Bounce نمایید. تیم پشتیبانی در دسترس است تا راهنمایی فنی و کمک‌های لازم ارائه کند.

You May Also Like
amazon-web-service-API

Amazon (AWS) APIs and Services: Everything You Need to Know

In today's world where information technology is growing rapidly, the use of cloud infrastructure has become one of the main needs of businesses. Amazon Web Services, or AWS for short, is one of the largest and most powerful cloud service providers in the world. In this article, we will introduce what API is, the role of API in AWS, and then the most important Amazon services.