ديف أوبس

إعداد خادم بريد متكامل

كيفية إعداد خادوم بريد إلكتروني باستخدام Postfix، Dovecot، MySQL وSpamAssassin

في عالم الاتصالات الحديثة، يعتبر البريد الإلكتروني من أهم وسائل التواصل، سواء على الصعيد الشخصي أو المؤسساتي. ولتوفير نظام بريد إلكتروني متكامل وفعال، يحتاج المستخدم أو المسؤول إلى إعداد خادم بريد إلكتروني متكامل يشمل استقبال الرسائل وإرسالها، مع ضمان الحماية من الرسائل المزعجة (Spam) وتأمين الحسابات. في هذا المقال، سنعرض بشكل مفصل كيفية إعداد خادم بريد إلكتروني باستخدام مجموعة برمجيات مفتوحة المصدر هي: Postfix كخادم SMTP لإرسال البريد، وDovecot كخادم IMAP/POP3 لاستقبال البريد، وMySQL كقاعدة بيانات لإدارة المستخدمين، وSpamAssassin كأداة للكشف عن الرسائل المزعجة.

مقدمة حول مكونات النظام

  • Postfix: هو خادم بريد إلكتروني مسؤول عن إرسال واستقبال الرسائل عبر بروتوكول SMTP. يتميز Postfix بالأداء العالي، والمرونة، والأمان.

  • Dovecot: هو خادم بريد إلكتروني يُستخدم لتقديم خدمات الوصول إلى البريد عبر بروتوكولات IMAP وPOP3، مع دعم متقدم للتوثيق والتشفير.

  • MySQL: قاعدة بيانات تُستخدم لإدارة معلومات المستخدمين مثل أسماء الحسابات، كلمات المرور، وعناوين البريد الإلكتروني، مما يتيح إدارة مركزية وسهولة التوسع.

  • SpamAssassin: أداة للكشف عن الرسائل المزعجة تعتمد على مجموعة من القواعد والخوارزميات لتقييم الرسائل وتصنيفها كرسائل مزعجة أو طبيعية.

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

قبل البدء في إعداد الخادم، يجب التأكد من توفر نظام تشغيل يعتمد على لينكس (مثل أوبونتو أو ديبيان) مع صلاحيات الجذر (root) أو صلاحيات sudo. كما يجب تحديث النظام إلى آخر إصدار لضمان التوافق والأمان.

يمكن استخدام الأمر التالي لتحديث النظام على توزيعات ديبيان وأوبونتو:

bash
sudo apt update && sudo apt upgrade -y

تثبيت الحزم الأساسية

لتنصيب الحزم المطلوبة من Postfix، Dovecot، MySQL، وSpamAssassin، يمكن استخدام الأمر التالي:

bash
sudo apt install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-pop3d dovecot-mysql mysql-server spamassassin spamc -y
  • postfix-mysql وdovecot-mysql هما الحزم المسؤولة عن ربط Postfix وDovecot مع قاعدة البيانات MySQL.

  • spamc هو عميل لـ SpamAssassin.

إعداد MySQL لإدارة البريد الإلكتروني

إنشاء قاعدة البيانات والمستخدمين

نبدأ بإنشاء قاعدة بيانات مخصصة للبريد الإلكتروني، وإضافة الجداول اللازمة لإدارة الحسابات والمجالات البريدية.

  1. الدخول إلى MySQL:

bash
sudo mysql -u root -p
  1. إنشاء قاعدة بيانات باسم mailserver:

sql
CREATE DATABASE mailserver;
  1. إنشاء مستخدم خاص بإدارة البريد، ومنحه الصلاحيات:

sql
CREATE USER 'mailuser'@'localhost' IDENTIFIED BY 'كلمة_المرور_القوية'; GRANT ALL PRIVILEGES ON mailserver.* TO 'mailuser'@'localhost'; FLUSH PRIVILEGES;
  1. إنشاء الجداول الأساسية لإدارة المجالات والمستخدمين:

sql
USE mailserver; CREATE TABLE virtual_domains ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE virtual_users ( id INT NOT NULL AUTO_INCREMENT, domain_id INT NOT NULL, password VARCHAR(106) NOT NULL, email VARCHAR(100) NOT NULL, PRIMARY KEY (id), UNIQUE KEY email (email), FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE virtual_aliases ( id INT NOT NULL AUTO_INCREMENT, domain_id INT NOT NULL, source VARCHAR(100) NOT NULL, destination VARCHAR(100) NOT NULL, PRIMARY KEY (id), FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

هذه الجداول تمثل المجالات البريدية، المستخدمين المرتبطين بهذه المجالات، والaliases (تحويلات البريد).

إضافة مجال ومستخدم بريد

لإضافة مجال (Domain) جديد:

sql
INSERT INTO virtual_domains (name) VALUES ('example.com');

لإضافة مستخدم جديد، يجب تشفير كلمة المرور بصيغة متوافقة مع Dovecot (مثلاً باستخدام doveadm):

bash
doveadm pw -s SHA512-CRYPT

ستظهر لك النتيجة التي تمثل كلمة المرور المشفرة، على سبيل المثال:

perl
{SHA512-CRYPT}$6$somehashvalue...

ثم نستخدم هذا الناتج لإضافة مستخدم في قاعدة البيانات:

sql
INSERT INTO virtual_users (domain_id, password, email) VALUES (1, '{SHA512-CRYPT}$6$somehashvalue...', '[email protected]');

إعداد Postfix

تكوين Postfix لاستخدام MySQL

يجب تعديل ملفات تكوين Postfix لتجعلها تعتمد على MySQL لإدارة المجالات والمستخدمين.

  1. إنشاء ملف /etc/postfix/mysql-virtual-domains-maps.cf:

ini
user = mailuser password = كلمة_المرور_القوية hosts = localhost dbname = mailserver query = SELECT 1 FROM virtual_domains WHERE name='%s'
  1. إنشاء ملف /etc/postfix/mysql-virtual-users-maps.cf:

ini
user = mailuser password = كلمة_المرور_القوية hosts = localhost dbname = mailserver query = SELECT 1 FROM virtual_users WHERE email='%s'
  1. إنشاء ملف /etc/postfix/mysql-virtual-alias-maps.cf:

ini
user = mailuser password = كلمة_المرور_القوية hosts = localhost dbname = mailserver query = SELECT destination FROM virtual_aliases WHERE source='%s'

تعديل ملف /etc/postfix/main.cf

تضمين الإعدادات التالية:

ini
myhostname = mail.example.com mydomain = example.com myorigin = $mydomain inet_interfaces = all inet_protocols = ipv4 mydestination = localhost virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-domains-maps.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-users-maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf virtual_mailbox_base = /var/mail/vhosts virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_transport = dovecot smtpd_tls_cert_file = /etc/ssl/certs/mailserver.crt smtpd_tls_key_file = /etc/ssl/private/mailserver.key smtpd_use_tls = yes smtpd_tls_auth_only = yes 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
  • virtual_uid_maps و virtual_gid_maps يحددان المستخدم والمجموعة التي ستملك البريد الإلكتروني.

  • من الضروري إنشاء المستخدم والمجموعة vmail بنفس UID وGID المشار إليهما.

إنشاء المستخدم والمجلد

bash
sudo groupadd -g 5000 vmail sudo useradd -g vmail -u 5000 vmail -d /var/mail/vhosts -m sudo mkdir -p /var/mail/vhosts/example.com sudo chown -R vmail:vmail /var/mail/vhosts

إعداد Dovecot

Dovecot هو المسؤول عن السماح للمستخدمين بالوصول إلى بريدهم عبر بروتوكولات IMAP وPOP3.

تكوين التوثيق باستخدام MySQL

إنشاء ملف /etc/dovecot/dovecot-sql.conf.ext:

ini
driver = mysql connect = host=127.0.0.1 dbname=mailserver user=mailuser password=كلمة_المرور_القوية default_pass_scheme = SHA512-CRYPT password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';

تعديل ملفات التكوين الأساسية

في ملف /etc/dovecot/conf.d/10-mail.conf:

ini
mail_location = maildir:/var/mail/vhosts/%d/%n mail_uid = 5000 mail_gid = 5000

في ملف /etc/dovecot/conf.d/10-auth.conf:

makefile
disable_plaintext_auth = yes auth_mechanisms = plain login !include auth-sql.conf.ext

في ملف /etc/dovecot/conf.d/10-master.conf تحت قسم service auth:

swift
service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } }

تفعيل IMAP وPOP3

في ملف /etc/dovecot/conf.d/20-imap.conf و /etc/dovecot/conf.d/20-pop3.conf:

تأكد من أن البروتوكولات مفعلة:

ini
protocols = imap pop3

إعداد SpamAssassin

SpamAssassin هو نظام مفتوح المصدر للكشف عن الرسائل المزعجة.

تفعيل الخدمة

على توزيعات ديبيان وأوبونتو، يمكن تفعيل الخدمة كالتالي:

bash
sudo systemctl enable spamassassin sudo systemctl start spamassassin

تكوين Postfix لاستخدام SpamAssassin

لدمج SpamAssassin مع Postfix، عادة ما يتم استخدام برنامج وسيط مثل Amavis أو SpamAss-Milter. ولكن يمكن إعداد SpamAssassin كخدمة منفصلة تعالج البريد الصادر.

مثال بسيط لتفعيل SpamAssassin مع Amavis:

bash
sudo apt install amavisd-new sudo systemctl enable amavis sudo systemctl start amavis

ثم تعديل ملف /etc/postfix/master.cf لإضافة:

bash
smtp inet n - y - - smtpd -o content_filter=spamassassin spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

هذا يوجه البريد الوارد إلى SpamAssassin للفحص قبل تسليمه.

تأمين خادم البريد

استخدام SSL/TLS

من الضروري حماية اتصالات SMTP وIMAP/POP3 باستخدام شهادات SSL/TLS. يمكن الحصول على شهادة مجانية من Let’s Encrypt.

مثال للحصول على شهادة عبر Certbot:

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

ثم تعديل إعدادات Postfix وDovecot للإشارة إلى ملفات الشهادة:

  • في Postfix (ملف main.cf):

ini
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
  • في Dovecot (ملف 10-ssl.conf):

ini
ssl = yes ssl_cert = ssl_key =

إعداد جدران الحماية

يجب فتح المنافذ الأساسية في جدار الحماية مثل 25 (SMTP)، 465 (SMTP عبر SSL)، 587 (SMTP مع التوثيق)، 993 (IMAP عبر SSL)، و995 (POP3 عبر SSL).

مثال لأوامر ufw:

bash
sudo ufw allow 25/tcp sudo ufw allow 465/tcp sudo ufw allow 587/tcp sudo ufw allow 993/tcp sudo ufw allow 995/tcp sudo ufw reload

حماية من الهجمات

  • تفعيل قيود على البريد في Postfix باستخدام smtpd_recipient_restrictions.

  • استخدام قوائم الحظر (blacklists) وقوائم السماح (whitelists).

  • تفعيل حماية ضد رسائل البريد المكررة (rate limiting).

  • مراقبة سجلات البريد بانتظام.

اختبار النظام

بعد الانتهاء من الإعداد، يمكن اختبار النظام باستخدام أدوات مثل telnet أو برامج البريد مثل Thunderbird وOutlook، وذلك للتأكد من إمكانية إرسال واستقبال البريد عبر SMTP وIMAP/POP3 مع التوثيق والتشفير.

ملخص الجدول التقني لتكوين البريد

المكون المهمة الموقع / الإعداد الأساسي
Postfix إرسال واستقبال البريد عبر SMTP /etc/postfix/main.cf, ملفات MySQL للتكامل
Dovecot استقبال البريد عبر IMAP/POP3 /etc/dovecot/conf.d/, ملف dovecot-sql.conf.ext
MySQL إدارة المستخدمين والمجالات البريدية قاعدة بيانات mailserver، جداول virtual_domains, virtual_users, virtual_aliases
SpamAssassin كشف الرسائل المزعجة خدمة spamassassin، تكامل مع Postfix عبر Amavis
شهادات SSL/TLS تشفير الاتصالات بين العميل والخادم شهادات من Let’s Encrypt، تعديل ملفات التكوين
المستخدم vmail مالك مجلدات البريد UID 5000، GID 5000، مجلد /var/mail/vhosts

خاتمة

إعداد خادم بريد إلكتروني متكامل يعتمد على Postfix وDovecot مع إدارة المستخدمين عبر MySQL وإضافة طبقة حماية باستخدام SpamAssassin، يمثل تحدياً تقنياً يتطلب فهماً دقيقاً لكل مكون من مكونات النظام، مع الاهتمام بأمن البيانات وحماية البريد من الرسائل المزعجة. باستخدام الخطوات التفصيلية السابقة، يمكن لأي مسؤول نظام إعداد خادم بريد إلكتروني فعال، مرن، وآمن، يلبي احتياجات المؤسسات الصغيرة والمتوسطة، ويوفر تجربة استخدام مميزة للمستخدمين.


المصادر والمراجع

  1. Official Postfix documentation — http://www.postfix.org/documentation.html

  2. Dovecot Wiki and Documentation — https://doc.dovecot.org/

  3. SpamAssassin official website — https://spamassassin.apache.org/

هذه المصادر توفر معلومات موسعة ومحدثة بشكل مستمر تساعد في تعميق الفهم وضبط الإعدادات المتقدمة.