دليل إعداد SPF و DKIM و DMARC
دليل شامل لإعداد سجلات 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 (Sender Policy Framework)؟
SPF هو سجل DNS يحدد الخوادم المصرح لها بإرسال بريد إلكتروني نيابة عن نطاقك. يتحقق خادم البريد المستلم مما إذا كان البريد الوارد قادمًا من عنوان IP محدد في سجل SPF.
إنشاء سجل 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"
آليات SPF
| الآلية | الوصف |
|---|---|
ip4: | عنوان IPv4 محدد أو كتلة CIDR |
ip6: | عنوان IPv6 محدد أو كتلة CIDR |
include: | تضمين سجل SPF لنطاق آخر |
a | السماح بـ IP في سجل A للنطاق |
mx | السماح بالخوادم في سجل MX للنطاق |
all | السياسة لجميع المصادر الأخرى |
مؤهلات SPF
+all → Pass (السماح للجميع — غير موصى به)
~all → SoftFail (وضع علامة على غير المصرح لهم دون رفض)
-all → Fail (رفض غير المصرح لهم — موصى به)
?all → Neutral (بدون فحص)
استخدم دائمًا -all أو على الأقل ~all في سجل SPF. استخدام +all يجعل نطاقك عرضة للانتحال.
اختبار سجل SPF
# استعلام سجل SPF باستخدام dig
dig TXT example.com +short
# استعلام باستخدام nslookup
nslookup -type=TXT example.com
أدوات عبر الإنترنت:
ما هو DKIM (DomainKeys Identified Mail)؟
DKIM هو بروتوكول يضيف توقيعًا رقميًا للرسائل الصادرة، مما يتحقق من عدم تعديل الرسالة أثناء النقل. يوقع الخادم المرسل بالمفتاح الخاص، ويتحقق الخادم المستلم باستخدام المفتاح العام في DNS.
إنشاء زوج مفاتيح DKIM
أنشئ زوج مفاتيح 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'
تكوين DKIM مع Postfix (OpenDKIM)
تثبيت 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
إضافة سجل DKIM في DNS
أضف المفتاح العام المُنشأ كسجل TXT في DNS:
default._domainkey IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhki...(المفتاح_العام)..."
يجب أن تكون مفاتيح DKIM بحجم 2048 بت. المفاتيح بحجم 1024 بت لم تعد تعتبر آمنة.
التكامل مع Postfix
أضف إلى تكوين 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
# استعلام سجل DKIM من DNS
dig TXT default._domainkey.example.com +short
# أداة اختبار OpenDKIM
opendkim-testkey -d example.com -s default -vvv
ما هو DMARC؟
يجمع DMARC بين نتائج SPF و DKIM، مما يمنح مالكي النطاقات القدرة على تعيين سياسات مصادقة البريد الإلكتروني وتلقي التقارير. يتصرف الخادم المستلم وفقًا لسياسة DMARC للرسائل التي تفشل في التحقق من SPF أو DKIM.
إنشاء سجل DMARC
أضف كسجل 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"
مستويات سياسة DMARC
| السياسة | الوصف | الاستخدام |
|---|---|---|
p=none | الإبلاغ فقط، بدون إجراء | المرحلة الأولى — المراقبة |
p=quarantine | إرسال إلى مجلد البريد العشوائي | حماية متوسطة |
p=reject | رفض البريد بالكامل | حماية كاملة |
استراتيجية التنفيذ التدريجي لـ DMARC
التنفيذ التدريجي لـ 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 قبل الانتقال إلى الحماية الكاملة.
مقالات ذات صلة
إعداد خادم البريد: Postfix و Dovecot
دليل شامل لإعداد Postfix MTA و Dovecot IMAP/POP3 وتكوين SSL/TLS ودعم النطاقات الافتراضية وتصفية البريد العشوائي و Docker Mail Server.
دليل إزالة البريد الإلكتروني من القائمة السوداء
دليل فحص القائمة السوداء وطلبات الإزالة وإجراءات Spamhaus/Barracuda/SORBS وإدارة سمعة IP.