lesson 7 | What is the Mail Server | mail server basics
جدول المحتويات:
هذه هي المشاركة الثانية من إعداد وتهيئة سلسلة خادم البريد. سنشرح لك في هذا المنشور كيفية تثبيت Postfix و Dovecot ، المكونان الرئيسيان لنظام البريد لدينا.
Postfix هو وكيل نقل البريد مفتوح المصدر (MTA) ، وهي خدمة تستخدم لإرسال واستقبال رسائل البريد الإلكتروني. Dovecot هو خادم IMAP / POP3 وفي الإعداد لدينا سيتعامل أيضًا مع التسليم المحلي ومصادقة المستخدم.
تمت كتابة هذا البرنامج التعليمي لـ Ubuntu 16.04 ، ومع ذلك يجب أن تعمل نفس الخطوات مع التعديلات الصغيرة على أي إصدار أحدث من Ubuntu.
المتطلبات الأساسية
قبل المتابعة مع هذا البرنامج التعليمي ، تأكد من تسجيل الدخول كمستخدم لديه امتيازات sudo.
تثبيت Postfix و Dovecot
حزم Dovecot في مستودعات Ubuntu الافتراضية قديمة. للاستفادة من وحدة
imap_sieve
سنقوم بتثبيت Dovecot من مستودع مجتمع Dovecot.
أضف مفتاح GPG في مستودع التخزين إلى سلسلة مفاتيح المصادر الخاصة بك باستخدام الأمر wget التالي:
wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -
تمكين مستودع مجتمع Dovecot باستخدام الأمر التالي:
echo "deb https://repo.dovecot.org/ce-2.3-latest/ubuntu/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/dovecot.list
sudo apt update
sudo debconf-set-selections <<< "postfix postfix/mailname string $(hostname -f)"
sudo debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'"
sudo apt install postfix postfix-mysql dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-mysql
تكوين Postfix
سنقوم بإعداد Postfix لاستخدام صناديق البريد الافتراضية والمجالات.
ابدأ بإنشاء ملفات تكوين
sql
التي ستعلم postfix كيفية الوصول إلى قاعدة بيانات MySQL ، التي تم إنشاؤها في الجزء الأول من هذه السلسلة.
sudo mkdir -p /etc/postfix/sql
افتح محرر النصوص الخاص بك وقم بإنشاء الملفات التالية:
/etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox, alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
بمجرد إنشاء ملفات تكوين SQL ، قم بتحديث ملف تكوين postfix الرئيسي لتضمين معلومات حول المجالات الافتراضية والمستخدمين والأسماء المستعارة المخزنة في قاعدة بيانات MySQL.
sudo postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf"
sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
sudo postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf"
sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
sudo postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf"
sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
sudo postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf"
يعرض الأمر postconf القيم الفعلية لمعلمات التكوين ، أو يغير قيم معلمات التكوين ، أو يعرض معلومات التكوين الأخرى حول نظام بريد Postfix.
سيقوم وكيل التوصيل المحلي بتسليم رسائل البريد الإلكتروني الواردة إلى صناديق بريد المستخدمين. قم بتشغيل الأمر التالي لتعيين خدمة LMTP الخاصة بـ Dovecot كوسيلة نقل تسليم بريد افتراضية:
sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"
اضبط معلمات TL باستخدام شهادة Let's SSL التي تم إنشاؤها مسبقًا:
sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'smtpd_tls_cert_file = /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem'
sudo postconf -e 'smtpd_tls_key_file = /etc/letsencrypt/live/mail.linuxize.com/privkey.pem'
قم بتكوين إعدادات SMTP المصادقة وسلم المصادقة إلى Dovecot:
sudo postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth'
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'
سنحتاج أيضًا إلى تعديل ملف التكوين الرئيسي لـ Postfix
master.cf
وتمكين منفذ التقديم (
587
) ومنفذ smtps (
465
).
افتح الملف باستخدام محرر النصوص وقم بإلغاء / تحرير الأسطر التالية:
/etc/postfix/master.cf
submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated, reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated, reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated, reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated, reject -o milter_macro_daemon_name=ORIGINATING
أعد تشغيل خدمة postfix لتصبح التغييرات نافذة المفعول.
sudo systemctl restart postfix
في هذه المرحلة ، قمت بتكوين خدمة Postfix بنجاح.
تكوين Dovecot
في هذا القسم ، سنقوم بتكوين Dovecot لمطابقة إعدادنا. تأكد من تحرير الخطوط المميزة باللون الأصفر.
ابدأ بتكوين ملف
dovecot-sql.conf.ext
الذي يرشد Dovecot إلى كيفية الوصول إلى قاعدة البيانات وكيفية العثور على معلومات حول حسابات البريد الإلكتروني.
driver = mysql connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD default_pass_scheme = MD5-CRYPT iterate_query = SELECT username AS user FROM mailbox user_query = SELECT CONCAT('/var/mail/vmail/', maildir) AS home, \ CONCAT('maildir:/var/mail/vmail/', maildir) AS mail, \ 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule \ FROM mailbox WHERE username = '%u' AND active = 1 password_query = SELECT username AS user, password FROM mailbox \ WHERE username = '%u' AND active='1'
لا تنس استخدام بيانات اعتماد MySQL الصحيحة (dbname ، المستخدم وكلمة المرور).
بعد ذلك ، قم بتحرير الملف
conf.d/10-mail.conf
وقم بتحرير المتغيرات التالية:
… mail_location = maildir:/var/mail/vmail/%d/%n… mail_uid = vmail mail_gid = vmail… first_valid_uid = 5000 last_valid_uid = 5000… mail_privileged_group = vmail… mail_plugins = quota…
لجعل مصادقة العمل ، افتح
conf.d/10-auth.conf
، قم بتحرير الأسطر التالية وقم بتضمين ملف
auth-sql.conf.ext
:
… disable_plaintext_auth = yes… auth_mechanisms = plain login… #!include auth-system.conf.ext !include auth-sql.conf.ext…
افتح الملف
conf.d/10-master.conf
، وقم بتعديله كما يلي:
… service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix }… }… service auth {… unix_listener auth-userdb { mode = 0600 user = vmail group = vmail }… unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }… }… service auth-worker { user = vmail }… service dict { unix_listener dict { mode = 0660 user = vmail group = vmail } }…
افتح
conf.d/10-ssl.conf
وقم بتمكين SSL / TLS.
… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.
If you have followed this series from the beginning, you should already have the
fullchain.pem
,
privkey.pem
,
dhparam.pem
files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.
Thanks to Nevyn for noticing the problem and providing a solution.
… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.
If you have followed this series from the beginning, you should already have the
fullchain.pem
,
privkey.pem
,
dhparam.pem
files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.
Thanks to Nevyn for noticing the problem and providing a solution.
افتح الملف
conf.d/20-imap.conf
وقم بتنشيط المكون الإضافي
imap_quota
:
… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…
افتح الملف
conf.d/20-lmtp.conf
وقم بتحريره كما يلي:
… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…
حدد صناديق البريد الافتراضية في ملف
conf.d/20-lmtp.conf
:
… mailbox Drafts { special_use = \Drafts } mailbox Spam { special_use = \Junk auto = subscribe } mailbox Junk { special_use = \Junk }…
هناك نوعان مختلفان من أحجام الحصص ، أحدهما مخصص للمجال بالكامل والآخر لكل صندوق بريد مستخدم. في الجزء السابق من هذه السلسلة ، قمنا بالفعل بتمكين دعم الحصص في PostfixAdmin مما يعني أنه سيتم تخزين معلومات الحصص في قاعدة بيانات PostfixAdmin.
نحن الآن بحاجة إلى تكوين Dovecot للاتصال بقاعدة البيانات ، وللتعامل مع حدود الحصص ولتشغيل برنامج نصي يرسل بريدًا إلى المستخدم عندما تتجاوز حصة المستخدم حدًا معينًا. للقيام بذلك ، افتح الملف
conf.d/90-quota.conf
وقم بتعديله كما يلي:
plugin { quota = dict:User quota::proxy::sqlquota quota_rule = *:storage=5GB quota_rule2 = Trash:storage=+100M quota_grace = 10%% quota_exceeded_message = Quota exceeded, please contact your system administrator. quota_warning = storage=100%% quota-warning 100 %u quota_warning2 = storage=95%% quota-warning 95 %u quota_warning3 = storage=90%% quota-warning 90 %u quota_warning4 = storage=85%% quota-warning 85 %u } service quota-warning { executable = script /usr/local/bin/quota-warning.sh user = vmail unix_listener quota-warning { group = vmail mode = 0660 user = vmail } } dict { sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext }
نحتاج أيضًا إلى إخبار dovecot عن كيفية الوصول إلى قاموس SQL للحصص. افتح ملف
dovecot-dict-sql.conf.ext
وقم بتحرير الأسطر التالية:
… connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD… map { pattern = priv/quota/storage table = quota2 username_field = username value_field = bytes } map { pattern = priv/quota/messages table = quota2 username_field = username value_field = messages }… # map { # pattern = shared/expire/$user/$mailbox # table = expires # value_field = expire_stamp # # fields { # username = $user # mailbox = $mailbox # } # }…
تأكد من استخدام بيانات اعتماد MySQL الصحيحة (dbname ، المستخدم وكلمة المرور).
قم بإنشاء البرنامج النصي التالي الذي سيرسل رسالة بريد إلكتروني إلى المستخدم إذا تجاوزت الحصة المخصصة له الحد المحدد:
/usr/local/bin/quota-warning.sh
#!/bin/sh PERCENT=$1 USER=$2 cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=dict:User quota::noenforcing:proxy::sqlquota" From: [email protected] Subject: Quota warning Your mailbox is now $PERCENT% full. EOF
اجعل البرنامج النصي قابلاً للتنفيذ عن طريق تشغيل أمر
chmod
التالي:
sudo chmod +x /usr/local/bin/quota-warning.sh
أخيرًا ، أعد تشغيل خدمة dovecot لتصبح التغييرات نافذة المفعول.
sudo systemctl restart dovecot
استنتاج
الآن يجب أن يكون لديك نظام بريد كامل الوظائف. في الجزء التالي من هذه السلسلة ، سنعرض لك كيفية تثبيت ودمج Rspamd.
خادم البريد postfix حمامةهذا المنشور جزء من إعداد وتكوين سلسلة خادم البريد.
وظائف أخرى في هذه السلسلة:
• إعداد خادم بريد باستخدام PostfixAdmin • تثبيت وتكوين Postfix و Dovecot • تثبيت وتكامل Rspamd • تثبيت وتكوين Roundcube Webmailتثبيت ، إعادة تثبيت ، ترقية ، إلغاء تثبيت ، إصلاح Windows 7 / Vista / Xp
أطلقت Microsoft برنامجًا جديدًا يركز موقع الويب فقط على كيفية تثبيت أو إعادة تثبيت أو ترقية أو إلغاء تثبيت Windows 7 و Windows Vista و Windows XP.
كيفية تثبيت وتكوين خادم nfs على centos 8
في هذا البرنامج التعليمي ، سوف تتعرف على الخطوات اللازمة لإعداد خادم NFSv4 على CentOS 8. سنعرض لك أيضًا كيفية تثبيت نظام ملفات NFS على العميل.
كيفية تثبيت وتكوين خادم NFS على أوبونتو 18.04
نظام ملفات الشبكة (NFS) هو بروتوكول نظام ملفات موزع يسمح لك بمشاركة الأدلة عن بعد عبر شبكة. في هذا البرنامج التعليمي ، سنتناول كيفية إعداد خادم NFSv4 على Ubuntu 18.04.







