انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

إعداد خادم البريد: Postfix و Dovecot

دليل شامل لإعداد Postfix MTA و Dovecot IMAP/POP3 وتكوين SSL/TLS ودعم النطاقات الافتراضية وتصفية البريد العشوائي و Docker Mail Server.

وقت القراءة: 20 دقيقة البريد الإلكتروني
mailpostfixdovecotsmtpimapsslتصفية-البريد-العشوائيdocker

جدول المحتويات

إعداد خادم البريد: Postfix و Dovecot

إعداد خادم البريد الخاص بك يمنحك تحكمًا كاملاً في اتصالات البريد الإلكتروني. يغطي هذا الدليل Postfix MTA وخادم Dovecot IMAP/POP3 وتكوين SSL/TLS ودعم النطاقات الافتراضية وإعداد Docker Mail Server.

إدارة خادم البريد معقدة وتتطلب صيانة مستمرة. يجب مراقبة سمعة IP وتصفية البريد العشوائي وتحديثات الأمان بانتظام.

المتطلبات الأساسية

سجلات DNS

# سجل A — عنوان IP لخادم البريد
mail.example.com    A       185.x.x.x

# سجل MX — توجيه البريد
example.com         MX  10  mail.example.com

# سجل SPF
example.com         TXT     "v=spf1 mx ip4:185.x.x.x -all"

# سجل DNS العكسي (PTR)
185.x.x.x           PTR     mail.example.com

يمكن إعداد سجل PTR (DNS العكسي) من لوحة عملاء REXE أو عبر طلب دعم. قد يتم تصنيف الرسائل المرسلة بدون سجل PTR كبريد عشوائي.

إعداد اسم المضيف

hljs bash
sudo hostnamectl set-hostname mail.example.com
echo "185.x.x.x mail.example.com mail" | sudo tee -a /etc/hosts
hostname -f

تثبيت Postfix (MTA)

hljs bash
sudo apt update
sudo apt install postfix postfix-mysql -y
# اختر "Internet Site" أثناء التثبيت

التكوين الأساسي

hljs ini
# /etc/postfix/main.cf
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost

inet_interfaces = all
inet_protocols = ipv4
mynetworks = 127.0.0.0/8

home_mailbox = Maildir/

# إعدادات TLS
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
smtpd_tls_auth_only = yes

# مصادقة SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

# القيود
smtpd_recipient_restrictions =
    permit_sasl_authenticated,
    permit_mynetworks,
    reject_unauth_destination,
    reject_invalid_hostname,
    reject_non_fqdn_hostname,
    reject_non_fqdn_sender,
    reject_unknown_sender_domain,
    reject_rbl_client zen.spamhaus.org

message_size_limit = 52428800

منفذ Submission (587)

hljs ini
# /etc/postfix/master.cf
submission inet n       -       y       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_auth_only=yes
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

تثبيت Dovecot (IMAP/POP3)

hljs bash
sudo apt install dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd -y

التكوين

hljs bash
# /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp

# /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir

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

# /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

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

شهادة SSL/TLS

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

Docker Mail Server (بديل)

hljs yaml
version: '3.8'
services:
  mailserver:
    image: ghcr.io/docker-mailserver/docker-mailserver:latest
    container_name: mailserver
    hostname: mail.example.com
    ports:
      - "25:25"
      - "465:465"
      - "587:587"
      - "993:993"
    volumes:
      - ./docker-data/dms/mail-data/:/var/mail/
      - ./docker-data/dms/mail-state/:/var/mail-state/
      - ./docker-data/dms/mail-logs/:/var/log/mail/
      - ./docker-data/dms/config/:/tmp/docker-mailserver/
      - /etc/letsencrypt:/etc/letsencrypt:ro
    environment:
      - ENABLE_SPAMASSASSIN=1
      - ENABLE_CLAMAV=1
      - ENABLE_FAIL2BAN=1
      - SSL_TYPE=letsencrypt
    restart: always
hljs bash
docker exec -it mailserver setup email add user@example.com
docker exec -it mailserver setup config dkim
docker compose up -d

تصفية البريد العشوائي

hljs bash
sudo apt install spamassassin spamc -y
sudo systemctl enable spamassassin
sudo systemctl start spamassassin

الاختبار والتحقق

hljs bash
sudo systemctl status postfix
sudo systemctl status dovecot
sudo ss -tlnp | grep -E '25|587|993|995'
echo "رسالة اختبار" | mail -s "اختبار" user@example.com
sudo tail -f /var/log/mail.log
openssl s_client -connect mail.example.com:587 -starttls smtp
openssl s_client -connect mail.example.com:993

بعد إعداد خادم البريد، تحقق من تقييم البريد العشوائي على mail-tester.com. تأكد من تكوين SPF وDKIM وDMARC بشكل صحيح.

الخلاصة

إعداد خادم البريد الخاص يوفر تحكمًا كاملاً لكنه يتطلب صيانة منتظمة. مزيج Postfix + Dovecot يقدم حلاً موثوقًا، بينما Docker Mail Server يوفر إدارة أسهل.