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

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

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

وقت القراءة: 20 دقيقة البريد الإلكتروني
mailpostfixdovecotsmtpimapsslتصفية-البريد-العشوائيdocker
الكاتب
REXE Teknoloji Network & Security Team
المحرر
REXE Teknoloji Technical Editorial
أول نشر
آخر تحديث

إعداد خادم البريد: 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 يوفر إدارة أسهل.

الأسئلة الشائعة

هل يجب إعداد خادم بريد خاص أم استخدام خدمة خارجية؟

الخادم الخاص يوفر تحكمًا كاملاً لكنه يتطلب صيانة. لعدد قليل من المستخدمين ذوي المعرفة التقنية، قد يكون الخادم الخاص مناسبًا. للمؤسسات الكبيرة يُنصح بخدمات مثل Google Workspace.

لماذا تذهب رسائلي إلى مجلد البريد العشوائي؟

قد يكون ذلك بسبب سجلات SPF وDKIM وDMARC المفقودة أو الخاطئة، أو عدم وجود سجل PTR، أو وجود IP في القائمة السوداء.

لماذا سجل PTR (DNS العكسي) مهم؟

يحل سجل PTR عنوان IP إلى اسم النطاق. ترفض العديد من خوادم البريد أو تصنف كبريد عشوائي الرسائل من خوادم بدون سجل PTR.

Docker Mail Server أم التثبيت اليدوي؟

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

ما المنافذ التي يجب فتحها لخادم البريد؟

SMTP: 25، Submission: 587، SMTPS: 465، IMAPS: 993، POP3S: 995. يُنصح بإغلاق المنافذ غير المشفرة (110، 143).

مقالات ذات صلة

دليل إعداد SPF و DKIM و DMARC

دليل شامل لإعداد سجلات SPF وتوقيع DKIM وسياسات DMARC وسجلات DNS وأدوات الاختبار لتحسين إمكانية تسليم البريد الإلكتروني وأمانه.

15 دقيقة
spfdkimdmarc
حركة الشبكةالداخل Gbpsالخارج Gbps