
1. المقدمة
يعد إعداد خادم SMTP آمن أمرًا بالغ الأهمية لضمان التواصل عبر البريد الإلكتروني بسرية وموثوقية. يوفر Exim، وهو وكيل نقل البريد (MTA) متعدد الاستخدامات لأنظمة Unix-like، تخصيصًا شاملاً وميزات أمان قوية. يقدم هذا الدليل خطوة بخطوة لإعداد وتكوين خادم SMTP آمن باستخدام Exim، مع التركيز على المصادقة، والتشفير، واستراتيجيات الحد من البريد المزعج.
2. المتطلبات المبدئية
قبل البدء، تأكد من توفر العناصر التالية:
- خادم يعمل بنظام تشغيل من نوع Unix (مثل Linux).
- امتيازات root أو sudo لتثبيت وتكوين البرمجيات.
- اسم نطاق مع وصول إداري لإعدادات DNS.
- معرفة أساسية باستخدام سطر الأوامر ومحررات النصوص.
3. تثبيت Exim
لتثبيت Exim على نظامك:
$ sudo apt update
$ sudo apt install exim4 exim4-config exim4-daemon-light
بالنسبة للأنظمة القائمة على Debian، تقوم هذه الأوامر بتثبيت Exim بالإضافة إلى الحزم الخاصة بالتكوين والديمون.
4. تكوين Exim
يتم تكوين Exim بشكل أساسي من خلال ملف /etc/exim4/exim4.conf.localmacros
. استخدم أداة dpkg-reconfigure
لتكوين Exim:
$ sudo dpkg-reconfigure exim4-config
اتبع الإرشادات لتكوين إعدادات خادم البريد، بما في ذلك نوع الخادم، واسم النظام، وعناوين الـ IP للاستماع إليها.
5. تأمين SMTP بالمصادقة
لتجنب الاستخدام غير المصرح به لخادم SMTP الخاص بك، قم بتكوين المصادقة عبر SMTP (SMTP AUTH):
- تفعيل SMTP AUTH في Exim:تأكد من وجود السطور التالية في تكوين Exim الخاص بك:
# تفعيل SMTP AUTH daemon_smtp_ports = 25 : 587
- تكوين المصادقين:حدد آليات المصادقة في ملف تكوين Exim:
begin authenticators # مصادقة النص العادي plain: driver = plaintext public_name = PLAIN server_condition = ${if eq{$auth2}{${lookup{$auth1}lsearch{/etc/exim4/passwd}}}{1}{0}} server_set_id = $auth1 client_send = : $auth1 : $auth2 # مصادقة LOGIN login: driver = plaintext public_name = LOGIN server_condition = ${if eq{$auth2}{${lookup{$auth1}lsearch{/etc/exim4/passwd}}}{1}{0}} server_set_id = $auth1 client_send = : $auth1 : $auth2
استبدل/etc/exim4/passwd
بمسار ملف كلمات المرور الخاص بك. - إنشاء ملف كلمات المرور:أنشئ ملف كلمات مرور يحتوي على أسماء المستخدمين وكلمات المرور:
# touch /etc/exim4/passwd
# chmod 600 /etc/exim4/passwd
أضف بيانات اعتماد المستخدمين بتنسيق:
username:password
6. تنفيذ التشفير TLS
لتأمين الاتصالات عبر البريد الإلكتروني، قم بتكوين النقل عبر طبقة الأمان (TLS):
- تثبيت دعم TLS:تأكد من تثبيت OpenSSL أو GnuTLS على نظامك:
$ sudo apt install openssl
- تكوين Exim لـ TLS:أضف السطور التالية إلى تكوين Exim الخاص بك:
# تفعيل TLS
tls_advertise_hosts = *
tls_certificate = /etc/ssl/certs/exim.crt
tls_privatekey = /etc/ssl/private/exim.key
استبدل مسارات الشهادات والمفاتيح بمواقع ملفاتك الفعلية.
- الحصول على شهادات SSL:للحصول على تشغيل TLS آمن، احصل على شهادات SSL صالحة من جهة شهادة موثوقة (CA).
7. تكوين SPF و DKIM و DMARC
لتحسين أمان البريد الإلكتروني ومنع انتحال الهوية:
- SPF (إطار سياسة المرسل):
- قم بإنشاء سجل DNS من نوع TXT لنطاقك:
v=spf1 mx ~all
يحدد هذا السجل أن خوادم البريد فقط المدرجة في سجلات MX لنطاقك هي المخولة بإرسال رسائل بريد إلكتروني نيابة عن نطاقك.
- DKIM (بريد إلكتروني معرّف بواسطة مفاتيح النطاق):
- قم بتثبيت دعم DKIM:
$ sudo apt install opendkim opendkim-tools
- قم بتكوين Exim لتوقيع رسائل البريد الإلكتروني الصادرة باستخدام DKIM:
# تفعيل DKIM
dkim_domain = yourdomain.com
dkim_selector = mail
dkim_private_key = /etc/opendkim/keys/yourdomain.com/default.private
استبدل yourdomain.com
بنطاقك واضبط مسار ملف المفتاح الخاص.
- DMARC (المصادقة المعتمدة على النطاق، التقارير، والتوافق):
- أضف سجل DMARC إلى إعدادات DNS لنطاقك. يحدد هذا السجل سياستك للتحقق من هوية البريد الإلكتروني والتقارير:
_dmarc.yourdomain.com. IN TXT "v=DMARC1; p=reject; rua=mailto:[email protected]"
تحدد هذه السياسة، على سبيل المثال، رفض الرسائل التي تفشل في اختبارات DMARC وإرسال التقارير إلى [email protected]
.
8. تكوين الحماية من البريد المزعج
إحدى أكبر التحديات في تشغيل خادم SMTP هو الحماية من البريد المزعج. يمكن تكوين Exim لتصفية البريد المزعج باستخدام تقنيات مثل قوائم الحظر الزمنية (RBL)، والترشيح الرمادي (Greylisting)، والتصفية عبر SpamAssassin.
- تكوين قوائم الحظر الزمنية (RBL):
- قم بتكوين Exim لاستخدام قوائم الحظر الزمنية (RBL) لمنع الرسائل الواردة من مصادر البريد المزعج المعروفة:
acl_smtp_rcpt
في تكوين Exim:
deny message = عنوان IP الخاص بك مدرج في قائمة الحظر
domain = !+local_domains
log_message = حظر RBL
condition = ${if match{$sender_host_address}{${lookup{$sender_host_address}lsearch{/etc/exim4/rbl_blacklist}}}}
يمكنك الحفاظ على قائمة RBL محلية أو استخدام قوائم عامة مثل zen.spamhaus.org
أو bl.spamcop.net
.
- تكوين الترشيح الرمادي (Greylisting):
- الترشيح الرمادي يرفض مؤقتًا الرسائل الواردة من المرسلين غير المعروفين، وهو فعال في تقليل البريد المزعج. أضف السطور التالية لتفعيل الترشيح الرمادي في Exim:
delay:
driver = accept
condition = ${if def:h_Received: {${if match{$sender_host_address}{^.*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$}{yes}{no}}}{1}{0}}}
message = تم رفض رسالتك مؤقتًا. يرجى المحاولة مرة أخرى بعد 5 دقائق.
time = 5m
سيؤدي هذا التكوين إلى تأخير قبول الرسائل، مما يجعل من الصعب على مرسلي البريد المزعج إرسال رسائل في الحال.
- تكوين SpamAssassin :
- قم بتثبيت SpamAssassin على الخادم:
$ sudo apt install spamassassin
- قم بتفعيل تكامل SpamAssassin مع Exim عن طريق إضافة ما يلي إلى قسم
acl_check_data
في تكوين Exim:
# استخدام SpamAssassin
spamassassin:
driver = accept
condition = ${if spam{${message_body}}}
message = تم تحديد هذه الرسالة كرسالة مزعجة
سيقوم هذا التكوين بتصفية الرسائل الواردة باستخدام SpamAssassin ووضع علامة عليها كرسائل مزعجة عند اكتشاف ذلك.
9. تكوين الحد من المعدلات والاختناق
لتجنب إساءة استخدام خادم SMTP الخاص بك والتخفيف من هجمات رفض الخدمة (DoS)، من المهم تنفيذ الحد من المعدلات والاختناق.
- تكوين Exim للحد من المعدلات:
- أضف السطور التالية إلى تكوين Exim لتحديد عدد الرسائل المرسلة من الاتصال والمرسل:
smtp_connect_max = 10 smtp_send_max = 100
تحدد هذه المعلمات الحد الأقصى لعدد الاتصالات والرسائل المسموح بها من نفس العميل. قم بتعديلها بناءً على أداء الخادم واستخدامه. - تحديد الاتصال بواسطة عنوان IP:
- حدد عدد الاتصالات المتزامنة المسموح بها إلى خادمك بناءً على عنوان IP المرسل. يمكنك فعل ذلك بإضافة شرط في ACL (قائمة التحكم في الوصول):
deny message = عدد الاتصالات كبير جدًا من عنوان IP الخاص بك condition = ${if >{$acl_connects}{10}{1}{0}}
سيؤدي هذا إلى حظر العملاء الذين يتجاوزون 10 اتصالات في فترة زمنية قصيرة.
10. الاختبار واستكشاف الأخطاء وإصلاحها
بمجرد تكوين الخادم، من المهم اختباره. يمكنك استخدام الطرق التالية للتحقق من إعداد خادم SMTP.
- اختبار المصادقة:
- استخدم أمر
telnet
للتحقق من المصادقة عبر SMTP:
- استخدم أمر
$ telnet localhost 25
EHLO localhost
AUTH LOGIN
ثم، قدم اسم المستخدم وكلمة المرور المشفرة باستخدام base64 للتحقق من المصادقة.
- التحقق من المنافذ المفتوحة:
- تحقق من أن المنافذ الخاصة بـ SMTP (25، 587، 465) مفتوحة:
$ sudo ufw allow 25,587,465/tcp
- استخدم
telnet
أوnc
(netcat) للتحقق مما إذا كان الخادم يقبل الاتصال عبر هذه المنافذ:
$ telnet yourdomain.com 587
- التحقق من سجلات Exim:
- توفر سجلات Exim معلومات حيوية في حال حدوث أخطاء. يمكنك التحقق من ملفات السجلات في Exim لاستكشاف الأخطاء:
$ sudo tail -f /var/log/exim4/mainlog
ستعرض السجلات محاولات الاتصال وأية فشلات في المصادقة.
11. الخاتمة
في هذا الدليل، قمنا بتغطية الخطوات الأساسية لتكوين خادم SMTP آمن باستخدام Exim. من خلال تمكين ميزات مثل المصادقة عبر SMTP، والتشفير عبر TLS، وحماية SPF/DKIM/DMARC، يمكنك ضمان أن خادم SMTP الخاص بك مقاوم للوصول غير المصرح به والهجمات الضارة. كما أن دمج تدابير حماية ضد البريد المزعج، والحد من المعدلات، والمراقبة يعزز بشكل أكبر من أمان وموثوقية خدمات البريد الإلكتروني الخاصة بك.
من الضروري مراقبة أداء الخادم بانتظام ومواكبة التحديثات الأمنية وأفضل الممارسات للحفاظ على صحة البنية التحتية لخادم SMTP.
المراجع:
- الوثائق الرسمية لـ Exim. exim.org
- الوثائق الرسمية لـ SpamAssassin. spamassassin.apache.org
- دليل تكوين OpenDKIM. opendkim.org
- إطار سياسة المرسل SPF. sidn.nl
- بريد إلكتروني معرّف بواسطة مفاتيح النطاق DKIM. dmarc.org
- قوائم الحظر الزمنية (RBL). spamcop.net
- تكوين Exim على Ubuntu. ubuntu.com