إعداد خادم البريد: Postfix و Dovecot
دليل شامل لإعداد Postfix MTA و Dovecot IMAP/POP3 وتكوين SSL/TLS ودعم النطاقات الافتراضية وتصفية البريد العشوائي و Docker Mail Server.
دليل شامل لإعداد سجلات SPF وتوقيع DKIM وسياسات DMARC وسجلات DNS وأدوات الاختبار لتحسين إمكانية تسليم البريد الإلكتروني وأمانه.
تعتمد إمكانية تسليم البريد الإلكتروني وموثوقيته على التكوين الصحيح لـ DNS. تمنع بروتوكولات SPF (Sender Policy Framework) و DKIM (DomainKeys Identified Mail) و DMARC (Domain-based Message Authentication, Reporting & Conformance) وصول رسائلك إلى مجلد البريد العشوائي وتحمي من انتحال النطاق (spoofing).
في هذا الدليل، سنقوم بتكوين سجلات SPF و DKIM و DMARC خطوة بخطوة لتأمين بنية إرسال البريد الإلكتروني على خادم REXE الخاص بك.
SPF هو سجل DNS يحدد الخوادم المصرح لها بإرسال بريد إلكتروني نيابة عن نطاقك. يتحقق خادم البريد المستلم مما إذا كان البريد الوارد قادمًا من عنوان IP محدد في سجل SPF.
أضفه كسجل TXT في لوحة إدارة DNS:
@ IN TXT "v=spf1 ip4:عنوان_IP_الخادم -all"
إذا كنت تستخدم عدة خوادم:
@ IN TXT "v=spf1 ip4:عنوان_IP_1 ip4:عنوان_IP_2 include:_spf.google.com -all"
| الآلية | الوصف |
|---|---|
ip4: | عنوان IPv4 محدد أو كتلة CIDR |
ip6: | عنوان IPv6 محدد أو كتلة CIDR |
include: | تضمين سجل SPF لنطاق آخر |
a | السماح بـ IP في سجل A للنطاق |
mx | السماح بالخوادم في سجل MX للنطاق |
all | السياسة لجميع المصادر الأخرى |
+all → Pass (السماح للجميع — غير موصى به)
~all → SoftFail (وضع علامة على غير المصرح لهم دون رفض)
-all → Fail (رفض غير المصرح لهم — موصى به)
?all → Neutral (بدون فحص)
استخدم دائمًا -all أو على الأقل ~all في سجل SPF. استخدام +all يجعل نطاقك عرضة للانتحال.
# استعلام سجل SPF باستخدام dig
dig TXT example.com +short
# استعلام باستخدام nslookup
nslookup -type=TXT example.com
أدوات عبر الإنترنت:
DKIM هو بروتوكول يضيف توقيعًا رقميًا للرسائل الصادرة، مما يتحقق من عدم تعديل الرسالة أثناء النقل. يوقع الخادم المرسل بالمفتاح الخاص، ويتحقق الخادم المستلم باستخدام المفتاح العام في DNS.
أنشئ زوج مفاتيح RSA بحجم 2048 بت باستخدام OpenSSL:
# إنشاء المفتاح الخاص
openssl genrsa -out dkim_private.pem 2048
# استخراج المفتاح العام
openssl rsa -in dkim_private.pem -pubout -out dkim_public.pem
# تحويل المفتاح العام إلى تنسيق DNS
cat dkim_public.pem | grep -v '^-' | tr -d '\n'
تثبيت OpenDKIM:
sudo apt update
sudo apt install opendkim opendkim-tools -y
إنشاء المفاتيح:
sudo mkdir -p /etc/opendkim/keys/example.com
sudo opendkim-genkey -b 2048 -d example.com -D /etc/opendkim/keys/example.com -s default -v
sudo chown -R opendkim:opendkim /etc/opendkim
ملف تكوين OpenDKIM (/etc/opendkim.conf):
AutoRestart Yes
AutoRestartRate 10/1h
SyslogSuccess Yes
LogWhy Yes
Canonicalization relaxed/simple
Mode sv
SubDomains no
OversignHeaders From
KeyTable refile:/etc/opendkim/key.table
SigningTable refile:/etc/opendkim/signing.table
ExternalIgnoreList /etc/opendkim/trusted.hosts
InternalHosts /etc/opendkim/trusted.hosts
Socket inet:8891@localhost
ملف جدول المفاتيح (/etc/opendkim/key.table):
default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private
ملف جدول التوقيع (/etc/opendkim/signing.table):
*@example.com default._domainkey.example.com
ملف المضيفين الموثوقين (/etc/opendkim/trusted.hosts):
127.0.0.1
localhost
example.com
أضف المفتاح العام المُنشأ كسجل TXT في DNS:
default._domainkey IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhki...(المفتاح_العام)..."
يجب أن تكون مفاتيح DKIM بحجم 2048 بت. المفاتيح بحجم 1024 بت لم تعد تعتبر آمنة.
أضف إلى تكوين Postfix (/etc/postfix/main.cf):
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = $smtpd_milters
أعد تشغيل الخدمات:
sudo systemctl restart opendkim
sudo systemctl restart postfix
# استعلام سجل DKIM من DNS
dig TXT default._domainkey.example.com +short
# أداة اختبار OpenDKIM
opendkim-testkey -d example.com -s default -vvv
يجمع DMARC بين نتائج SPF و DKIM، مما يمنح مالكي النطاقات القدرة على تعيين سياسات مصادقة البريد الإلكتروني وتلقي التقارير. يتصرف الخادم المستلم وفقًا لسياسة DMARC للرسائل التي تفشل في التحقق من SPF أو DKIM.
أضف كسجل TXT في DNS:
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com; ruf=mailto:dmarc-forensic@example.com; fo=1; adkim=r; aspf=r; pct=100"
| السياسة | الوصف | الاستخدام |
|---|---|---|
p=none | الإبلاغ فقط، بدون إجراء | المرحلة الأولى — المراقبة |
p=quarantine | إرسال إلى مجلد البريد العشوائي | حماية متوسطة |
p=reject | رفض البريد بالكامل | حماية كاملة |
التنفيذ التدريجي لـ DMARC هو النهج الأكثر أمانًا:
# المرحلة 1: المراقبة (2-4 أسابيع)
_dmarc IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com; fo=1"
# المرحلة 2: الحجر (2-4 أسابيع)
_dmarc IN TXT "v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc@example.com"
# المرحلة 3: زيادة الحجر
_dmarc IN TXT "v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc@example.com"
# المرحلة 4: الحماية الكاملة
_dmarc IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com; ruf=mailto:dmarc-forensic@example.com"
يمكنك استخدام أدوات مجانية مثل dmarcian.com أو postmarkapp.com/dmarc أو easydmarc.com لتحليل تقارير DMARC.
تحقق من جميع سجلات أمان البريد الإلكتروني دفعة واحدة:
# فحص SPF
dig TXT example.com +short | grep spf
# فحص DKIM
dig TXT default._domainkey.example.com +short
# فحص DMARC
dig TXT _dmarc.example.com +short
# فحص سجل MX
dig MX example.com +short
أرسل بريدًا تجريبيًا من سطر الأوامر:
# اختبار مفصل باستخدام swaks
sudo apt install swaks -y
swaks --to test@gmail.com --from info@example.com --server localhost --tls
| الخطأ | السبب | الحل |
|---|---|---|
| SPF PermError | أكثر من 10 استعلامات DNS | قلل عدد include، ادمج كتل IP |
| DKIM fail | عدم تطابق المفاتيح | المفتاح العام في DNS يجب أن يتطابق مع المفتاح الخاص على الخادم |
| DMARC fail | خطأ في محاذاة SPF و DKIM | نطاق رأس From يجب أن يتطابق مع نطاق SPF/DKIM |
| Softfail | استخدام ~all في سجل SPF | استبدل بـ -all |
| Body hash mismatch | تم تعديل البريد أثناء النقل | اضبط canonicalization على relaxed/relaxed |
يشكل ثلاثي SPF و DKIM و DMARC أساس أمان البريد الإلكتروني. التكوين الصحيح لهذه البروتوكولات الثلاثة يحسن إمكانية تسليم البريد، ويمنع انتحال النطاق، ويحمي سمعة علامتك التجارية. طبّق DMARC تدريجيًا، وحلل التقارير، وتأكد من أن جميع مصادر الإرسال المشروعة متوافقة مع SPF و DKIM قبل الانتقال إلى الحماية الكاملة.
تقنيًا نعم، لكن الرسائل المرسلة من نطاقات بدون سجلات SPF ستنتهي على الأرجح في البريد العشوائي أو سيتم رفضها. مزودو الخدمة الكبار مثل Gmail و Outlook يفرضون فحوصات SPF.
يجب استخدام مفتاح RSA بحجم 2048 بت كحد أدنى. المفاتيح بحجم 1024 بت لم تعد تعتبر آمنة. بعض المزودين يدعمون مفاتيح 4096 بت، لكن 2048 بت هو الخيار الأكثر شيوعًا بسبب قيود حجم سجل DNS TXT.
غير موصى به. ابدأ بـ p=none للمراقبة، حلل التقارير، تأكد من أن جميع مصادر الإرسال المشروعة متوافقة مع SPF و DKIM، ثم انتقل تدريجيًا إلى quarantine و reject.
يسمح معيار SPF بحد أقصى 10 استعلامات DNS. كل آلية include و a و mx تُحسب كاستعلام واحد. تجاوز هذا الحد يؤدي إلى خطأ SPF PermError. يمكنك تقليل عدد الاستعلامات بتحديد عناوين IP مباشرة.
تحقق من أن سجلات SPF و DKIM و DMARC مُعدة بشكل صحيح. تأكد من أن سجل DNS العكسي (PTR) يتطابق مع اسم مضيف الخادم. تحقق مما إذا كان عنوان IP الخاص بك مدرجًا في القائمة السوداء على mxtoolbox.com/blacklists.aspx. تجنب الكلمات المحفزة للبريد العشوائي في محتوى الرسائل.
دليل شامل لإعداد Postfix MTA و Dovecot IMAP/POP3 وتكوين SSL/TLS ودعم النطاقات الافتراضية وتصفية البريد العشوائي و Docker Mail Server.
دليل فحص القائمة السوداء وطلبات الإزالة وإجراءات Spamhaus/Barracuda/SORBS وإدارة سمعة IP.