كيفية إعداد خادوم بريد إلكتروني باستخدام Postfix، Dovecot، MySQL وSpamAssassin
في عالم الاتصالات الحديثة، يعتبر البريد الإلكتروني من أهم وسائل التواصل، سواء على الصعيد الشخصي أو المؤسساتي. ولتوفير نظام بريد إلكتروني متكامل وفعال، يحتاج المستخدم أو المسؤول إلى إعداد خادم بريد إلكتروني متكامل يشمل استقبال الرسائل وإرسالها، مع ضمان الحماية من الرسائل المزعجة (Spam) وتأمين الحسابات. في هذا المقال، سنعرض بشكل مفصل كيفية إعداد خادم بريد إلكتروني باستخدام مجموعة برمجيات مفتوحة المصدر هي: Postfix كخادم SMTP لإرسال البريد، وDovecot كخادم IMAP/POP3 لاستقبال البريد، وMySQL كقاعدة بيانات لإدارة المستخدمين، وSpamAssassin كأداة للكشف عن الرسائل المزعجة.
مقدمة حول مكونات النظام
-
Postfix: هو خادم بريد إلكتروني مسؤول عن إرسال واستقبال الرسائل عبر بروتوكول SMTP. يتميز Postfix بالأداء العالي، والمرونة، والأمان.
مواضيع ذات صلة -
Dovecot: هو خادم بريد إلكتروني يُستخدم لتقديم خدمات الوصول إلى البريد عبر بروتوكولات IMAP وPOP3، مع دعم متقدم للتوثيق والتشفير.
-
MySQL: قاعدة بيانات تُستخدم لإدارة معلومات المستخدمين مثل أسماء الحسابات، كلمات المرور، وعناوين البريد الإلكتروني، مما يتيح إدارة مركزية وسهولة التوسع.
-
SpamAssassin: أداة للكشف عن الرسائل المزعجة تعتمد على مجموعة من القواعد والخوارزميات لتقييم الرسائل وتصنيفها كرسائل مزعجة أو طبيعية.
المتطلبات الأساسية
قبل البدء في إعداد الخادم، يجب التأكد من توفر نظام تشغيل يعتمد على لينكس (مثل أوبونتو أو ديبيان) مع صلاحيات الجذر (root) أو صلاحيات sudo. كما يجب تحديث النظام إلى آخر إصدار لضمان التوافق والأمان.
يمكن استخدام الأمر التالي لتحديث النظام على توزيعات ديبيان وأوبونتو:
bashsudo apt update && sudo apt upgrade -y
تثبيت الحزم الأساسية
لتنصيب الحزم المطلوبة من Postfix، Dovecot، MySQL، وSpamAssassin، يمكن استخدام الأمر التالي:
bashsudo 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 لإدارة البريد الإلكتروني
إنشاء قاعدة البيانات والمستخدمين
نبدأ بإنشاء قاعدة بيانات مخصصة للبريد الإلكتروني، وإضافة الجداول اللازمة لإدارة الحسابات والمجالات البريدية.
-
الدخول إلى MySQL:
bashsudo mysql -u root -p
-
إنشاء قاعدة بيانات باسم
mailserver:
sqlCREATE DATABASE mailserver;
-
إنشاء مستخدم خاص بإدارة البريد، ومنحه الصلاحيات:
sqlCREATE USER 'mailuser'@'localhost' IDENTIFIED BY 'كلمة_المرور_القوية';
GRANT ALL PRIVILEGES ON mailserver.* TO 'mailuser'@'localhost';
FLUSH PRIVILEGES;
-
إنشاء الجداول الأساسية لإدارة المجالات والمستخدمين:
sqlUSE 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) جديد:
sqlINSERT INTO virtual_domains (name) VALUES ('example.com');
لإضافة مستخدم جديد، يجب تشفير كلمة المرور بصيغة متوافقة مع Dovecot (مثلاً باستخدام doveadm):
bashdoveadm pw -s SHA512-CRYPT
ستظهر لك النتيجة التي تمثل كلمة المرور المشفرة، على سبيل المثال:
perl{SHA512-CRYPT}$6$somehashvalue...
ثم نستخدم هذا الناتج لإضافة مستخدم في قاعدة البيانات:
sqlINSERT INTO virtual_users (domain_id, password, email)
VALUES (1, '{SHA512-CRYPT}$6$somehashvalue...', '[email protected]');
إعداد Postfix
تكوين Postfix لاستخدام MySQL
يجب تعديل ملفات تكوين Postfix لتجعلها تعتمد على MySQL لإدارة المجالات والمستخدمين.
-
إنشاء ملف
/etc/postfix/mysql-virtual-domains-maps.cf:
iniuser = mailuser
password = كلمة_المرور_القوية
hosts = localhost
dbname = mailserver
query = SELECT 1 FROM virtual_domains WHERE name='%s'
-
إنشاء ملف
/etc/postfix/mysql-virtual-users-maps.cf:
iniuser = mailuser
password = كلمة_المرور_القوية
hosts = localhost
dbname = mailserver
query = SELECT 1 FROM virtual_users WHERE email='%s'
-
إنشاء ملف
/etc/postfix/mysql-virtual-alias-maps.cf:
iniuser = mailuser
password = كلمة_المرور_القوية
hosts = localhost
dbname = mailserver
query = SELECT destination FROM virtual_aliases WHERE source='%s'
تعديل ملف /etc/postfix/main.cf
تضمين الإعدادات التالية:
inimyhostname = 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 المشار إليهما.
إنشاء المستخدم والمجلد
bashsudo 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:
inidriver = 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:
inimail_location = maildir:/var/mail/vhosts/%d/%n
mail_uid = 5000
mail_gid = 5000
في ملف /etc/dovecot/conf.d/10-auth.conf:
makefiledisable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext
في ملف /etc/dovecot/conf.d/10-master.conf تحت قسم service auth:
swiftservice 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:
تأكد من أن البروتوكولات مفعلة:
iniprotocols = imap pop3
إعداد SpamAssassin
SpamAssassin هو نظام مفتوح المصدر للكشف عن الرسائل المزعجة.
تفعيل الخدمة
على توزيعات ديبيان وأوبونتو، يمكن تفعيل الخدمة كالتالي:
bashsudo systemctl enable spamassassin
sudo systemctl start spamassassin
تكوين Postfix لاستخدام SpamAssassin
لدمج SpamAssassin مع Postfix، عادة ما يتم استخدام برنامج وسيط مثل Amavis أو SpamAss-Milter. ولكن يمكن إعداد SpamAssassin كخدمة منفصلة تعالج البريد الصادر.
مثال بسيط لتفعيل SpamAssassin مع Amavis:
bashsudo apt install amavisd-new
sudo systemctl enable amavis
sudo systemctl start amavis
ثم تعديل ملف /etc/postfix/master.cf لإضافة:
bashsmtp 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:
bashsudo apt install certbot sudo certbot certonly --standalone -d mail.example.com
ثم تعديل إعدادات Postfix وDovecot للإشارة إلى ملفات الشهادة:
-
في Postfix (ملف
main.cf):
inismtpd_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):
inissl = yes
ssl_cert = ssl_key =
إعداد جدران الحماية
يجب فتح المنافذ الأساسية في جدار الحماية مثل 25 (SMTP)، 465 (SMTP عبر SSL)، 587 (SMTP مع التوثيق)، 993 (IMAP عبر SSL)، و995 (POP3 عبر SSL).
مثال لأوامر ufw:
bashsudo 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، يمثل تحدياً تقنياً يتطلب فهماً دقيقاً لكل مكون من مكونات النظام، مع الاهتمام بأمن البيانات وحماية البريد من الرسائل المزعجة. باستخدام الخطوات التفصيلية السابقة، يمكن لأي مسؤول نظام إعداد خادم بريد إلكتروني فعال، مرن، وآمن، يلبي احتياجات المؤسسات الصغيرة والمتوسطة، ويوفر تجربة استخدام مميزة للمستخدمين.
المصادر والمراجع
-
Official Postfix documentation — http://www.postfix.org/documentation.html
-
Dovecot Wiki and Documentation — https://doc.dovecot.org/
-
SpamAssassin official website — https://spamassassin.apache.org/
هذه المصادر توفر معلومات موسعة ومحدثة بشكل مستمر تساعد في تعميق الفهم وضبط الإعدادات المتقدمة.

