مواد و مواقع انصح بها




إنشاء سيرفر بريد إلكتروني في لينوكس – الجزء الرابع (إعداد Postfix و Dovecot لإرسال و استقبال البريد على الانترنت)

السلام عليكم و رحمة الله و بركاته


في هذا الجزء الرابع، سأكمل الحديث عن الإرسال و الاستقبال من و إلى الانترنت، و لكن قبل البداية، أريد توضيح بعض النقاط:

  • لكي نكون قادرين على استخدام خاصية الإرسال و الاستقبال عبر الانترنت، لابد من توفر النقاط التالية:
    • اسم نطاق محجوز على الانترنت
    • عنوان IP ثابت، أو حساب في خدمة Dynamic DNS
    • يفضل استخدام Smart Host لإرسال البريد، (سأستخدم Smart Host في هذا الدرس)

لمعلومات عن الـ Smart Host، قم بزيارة الصفحة التالية (http://en.wikipedia.org/wiki/Smart_host)

ما سأتحدث عنه اليوم هو:

  1. ربط النطاق بعنوان IP السيرفر لتمكين استقبال البريد
  2. إضافة اسم النطاق الخاص بالانترنت في Postfix ليتم قبول البريد الوارد له
  3. إعداد Postfix ليقوم بإرسال البريد عبر Smart Host
  4. إعداد Dovecot لقبول الاتصالات الخارجية من عملاء البريد (Thunderbird أو Windows Live Mail مثلا)
  5. تجربة العملية :-)



أولا، و قبل البداية نريد عمل تعديل بسيط على بنية مجلد البريد MailDir، حيث سنقوم بإنشاء المجلدات الأخرى (Drafts، Sent، Trash…) و ذلك لأنها لن تكون موجودة افتراضيا كما في الصورة:

مجتويات المجلد MailDir الإفتراضية - اضغط على الصورة للتكبير


لذلك سنقوم بإنشاء المجلدات الناقصة ليتم وضعها في ملفات المستحدمين الذين سيتم إنشاؤهم مستقبلا على السيرفر، و أيضا سنقوم بنسخ البنية الجديدة إلى المستخدمين الموجودين حاليا…

أولا، لعمل التعديل على البنية الحالية، سنقوم بتنفيذ الأوامر التالية التي هي عبارة عن إنشاء المجلدات الناقصة في الدليل /etc/skel/ كالتالي:

sudo maildirmake.dovecot /etc/skel/MailDir
sudo maildirmake.dovecot /etc/skel/MailDir/.Drafts
sudo maildirmake.dovecot /etc/skel/MailDir/.Sent
sudo maildirmake.dovecot /etc/skel/MailDir/.Trash
sudo maildirmake.dovecot /etc/skel/MailDir/.Templates

تم الآن إنشاء المجلدات، و بمجرد عمل أي مستخدم جديد، سيتم نسخ البنية الجديدة من المجلدات إلى محلد الـ Home الخاص به…

و بالنسبة للمستخدمين الحاليين، فسنستخدم الأمر التالي لنسخ البنية الجديدة لهم:

sudo cp -r /etc/skel/MailDir /home/[USER_NAME]/
sudo chown -R [USER_NAME]:[USER_GROUP] /home/[USER_NAME]/MailDir
sudo chmod -R 700 /home/[USER_NAME]/MailDir

بعد هذا التغيير نكون جاهزين للمتابعة للخطوة التالية، و هي تمكين Dovecot من استقبال الاتصالات القادمة من عملاء البريد عبر بروتوكولات POP3، POP3S، IMAP، IMAPs على حسب المفعل منها، من أي مكان من على الشبكة و ذلك بتفعيل السطر التالي الموجود في ملف dovecot.conf في الدليل etc/dovecot/: (فقط قم بإزالة علامة الـ # في حال كانت موجودة)

#listen = *

بعد هذه الخطوة، سنقوم الآن بربط اسم النطاق الخاص بنا بسيرفر البريد، و كما ذكرت، يفترض وجود اسم نطاق محجوز على الانترنت للمتابعة…

في هذا الموضوع، أنا أستخدم Dynamic DNS بسبب أني لا أستطيع الحصول على Real IP من الـ ISP الخاص بي، و سأشرح طريقة ربط DDNS مع النطاق بحيث يكون التعامل ليس مع DDNS في الرسائل…

سأشرح الآن ماذا أقصد بالكلام السابق:

  • بسبب أن اشتراك الانترنت لدي لا يسمح بوجود Real IP سأستخدم الـ DDNS كما ذكرت، هناك عدة مواقع تقدم الخدمة المجانية، و أفضل أنا منها: DynDNS.Org، قمت بعمل حساب على الموقع، و عملت Host فيه يشير لعنوان الـ IP الحالي في الروتر الخاص بي و قمت بتحميل برنامج صغير على جهازي يقوم بتحديث عنوان الـ IP في حال تغير لأي سبب كان…
  • سأفترض أن الـ Host الذي قمت بعمله هو: salehram.dyndns.org
  • سأفترض أيضا أن اسم النطاق العام (المدفوع) هو: internetdomain.com
  • في إعدادات الـ DNS لـ internetdomain.com سأقوم بعمل سجلين جديدة، الأول ليشير إلى عنوان Host الخاص بـ DDNS و هو: salehram.dyndns.org، و السجل الآخر هو سجل MX يشير للسجل السابق الذي قمت بعمله، و العملية كالتالي:

-------
------- CNAME Record:
Record Type: CNAME
Record Name: mail
Points to URL: salehram.dyndns.org
Record as it will be displayed: mail.internetdomain.com
-------
------- MX Record (Mail eXchanger record):
Record Type: MX
Host Name: @
Points to: mail.internetdomain.com
Prefrence: 0

  • في حال كان يوجد Real IP على السيرفر أو الروتر أو Firewall فستكون السجلات كالتالي:

-------
------- (A) Record:
Record Type: A
Record Name: mail
Points to IP: [YOUR_REAL_IP]
Record as it will be displayed: mail.internetdomain.com
-------
------- MX Record (Mail eXchanger record):
Record Type: MX
Host Name: @
Points to: mail.internetdomain.com
Prefrence: 0

لاحظ التغيير الذي حدث في السجل الأول…

دائما السجلات من نوع A تكون مرتبطة بعناوين IP و ليس أسماء أو ارتباطات، بالنسبة لسجلات CNAME فهي تكون مرتبطة مع عناوين


بعد أن قمنا بريط اسم النطاق مع الـ IP الخاص بنا، سنقوم الآن بعمل NAT من الروتر إلى السيرفر، ليقوم بتحويل الطلبات على منافذ POP3 و POP3s و IMAP و IMAPs و SMTP إلى السيرفر، و سنقوم بفتح المتافذ الخاصة بها (POP3 110 – POP3s 995 – IMAP 143 – IMAPs 993 – SMTP 25) و توجيهها إلى الـ IP الداخلي للسيرفر كالتالي:

Port: 25      Type: TCP     Goes to: 192.168.1.20 // عنوان الـ IP الخاص بالسيرفر لدي
Port: 110     Type: TCP     Goes to: 192.168.1.20 //
عنوان الـ IP الخاص بالسيرفر لدي
Port: 995     Type: TCP     Goes to: 192.168.1.20 // عنوان الـ IP الخاص بالسيرفر لدي
Port: 143     Type: TCP     Goes to: 192.168.1.20 // عنوان الـ IP الخاص بالسيرفر لدي
Port: 993     Type: TCP     Goes to: 192.168.1.20 // عنوان الـ IP الخاص بالسيرفر لدي

لن أستطيع الحديث عن طريقة إعدادها، لأن هذا يختلف من روتر لآخر، ولكن يمكن البحث على الانترنت بكيفية إعدادها على نوع محدد، عند إكمال فتح المنافذ، و التعديل على الـ DNS في النطاق، يكون قد تم ربط السيرفر معه، و للتأكد من عمل كل شيء سنقوم بتجربة عمل Telnet على السيرفر عبر اسم النطاق و ليس عبر الـ IP الداخلي على المنافذ التي تم فتحها:

telnet mail.internetdomain.com 25

في حال تم قبول الاتصال، فهذا يعني أن كل شيء أصبح يعمل بشكل سليم الآن، و لم يتبقى سوى إعداد الخدمات على السيرفر للعمل مع الانترنت…


أول خطوة في هذا الموضوع، هي إضافة اسم النطاق internetdomain.com إلى الملف mail.cf ليقوم Postfix بالتعرف على هذا العنوان و اعتبار نفسه السيرفر الوحهة للرسائل القادمة على هذا العنوان، سنقوم بتنفيذ الأمر التالي:

cd /etc/postfix
sudo vi main.cf

و البحث عن السطرmydestination و نضيف بآخره فاصلة، ثم اسم الدومين العام الخاص بنا، فيصبح السطر كالتالي:

mydestination = ... ,... ,... ,... ,internetdomian.com

لن أتحدث عن استخدام الشهادات الرقمية هنا، سأتحدث عن الموضوع لاحقا، و لكن الآن يجب علينا تثبيت و إعداد SASL (Simple Authentication Security Layer) و ذلك لتمكين المستخدمين من إرسال البريد عبر الانترنت، استخدم الأمر التالي لتثبيت الحزمتين libsasl2-2 و sasl2-bin:

sudo apt-get install libsasl2-2 sasl2-bin

اذهب لهذه الصفحة لمعرفة مزيد من المعلومات عن SASL:
http://en.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer

بعد انتهاء التثبيت، سنحتاج لتعديل الملف main.cf الخاص بـ Postfix، قم بفتح الملف، و أضف الأسطر التالية عليه:

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = localdomain.com
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes

  • بالنسبة للسطر الأول من السابق، فهو يقوم بتمكين عمل SASL مع Postfix و يخبره بأن هناك آلية للتصريح للمستخدمين عندما يريدون إرسال بريد
  • أما السطر الثاني، فهو يطلب اسم المجال الداخلي، و ذلك ليتم التصريح للمستخدمين الذين يريدون الإرسال منه
  • السطر الثالث (مع الرابع الذي هو امتداده) يحدد السياسة الخاصة المعتمدة مع المستخدمين الذين يريدون التصريح، فالنظام سيقوم بالسماح للمستخدمين الذين تم التعرف عليهم بنجاح بإرسال البريد عبر الإنترنت، و سيسمح للمستخدمين القادمين من الشبكات المعرفة في نفس ملف main.cf (السطر الذي يبدأ بـ mynetworks) بالإرسال أيضا، و سيمنع أي محاولة إرسال غير مصرحة، و هذا الوضع مطلوب جدا في حال أردنا تحويل السيرفر الخاص بنا إلى Smart Host لتستخدمه السيرفرات الأخرى للإرسال، فنقوم بتعريف الشبكة التي تنتمي لها تلك السيرفرات، أو نقوم بإضافة عنوان الـ IP الخاص بها في القائمة في main.cf، فيتم السماح لها باستخدام هذا السيرفر لإرسال البريد، و منع أي شيء غيرها…
  • السطر الخامس، و فيه لن يتم السماح لأي مستخدم مجهول (بدون تصريح ناجح أو فاشل) باستخدام هذا السيرفر لإرسال البريد…
  • السطر الأخير مهم جدا، حيث سيتيح إمكانية العمل بين عملاء البريد الذين يستخدمون إصدارات سابقة من SASL، و بدونه لن يتمكن مستخدم يستخدم مثلا MS Outlook Express 4 من إرسال البريد عبر السيرفر، و سيجد أمامه رسالة Access denied…

سنقوم الآن بإنشاء ملف اسمه smtpd.conf داخل الدليل sasl الموجود داخل /etc/postfix بالطريقة التالية:

  • قم بالذهاب إلى مكان العمل /etc/postfix/sasl و اكتب الأمر:

sudo vi smtpd.conf

  • ثم أضف السطرين التاليين له:

pwcheck_method: saslauthd
mech_list: plain login

  • و في النهاية، احفظ الملف، ليتم إنشاؤه:

save smtpd.conf

سنقوم الآن بجعل Postfix قادرا على التواصل مع saslauthd (و هي الخدمة المسؤولة عن التصريح) بسبب أن Postfix يعمل في بيئة Chroot فهو لن يكون قادرا على التواصل مع saslauth و لذلك سنقوم بنقل saslauthd إلى نفس البيئة التي يعمل بها Postfix، قم بتنفيذ الأوامر التالية لتحقيق هذا الهدف:

sudo rm -r /var/run/saslauthd/
sudo mkdir -p /var/spool/postfix/var/run/saslauthd
sudo ln -s /var/spool/postfix/var/run/saslauthd /var/run
sudo chgrp sasl /var/spool/postfix/var/run/saslauthd
sudo adduser postfix sasl

بهذا تقريبا نكون أنجزنا 90% من العمل، و ما تبقى هو تشغيل خدمة saslauthd و عمل تعديل على Dovecot لجعله يستخدم SASL أيضا، لعمل ذلك، افتح الملف dovecot.conf و ابحث عن السطر الذي يبدا بـ:

auth default {

و قم بإضافة 2 مباشرة بعد default لتصبح:

auth default2 {

ثم اذهب للسطر الذي قبل auth default2 و أدخل التالي لإعداد Dovecot على التواصل مع saslauthd:

auth default {
mechanisms = plain login
passdb pam {
}
userdb passwd {
}
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}

بهذه الإضافة أصبح كل شيء جاهز الآن، سنقوم بوضع عنوان الـ Smart Host الخاص بنا، ثم نقوم بإعادة تشغيل كل الخدمات المتعلقة بالبريد لكي يتم تشغيل الإعدادات الجديدة…

  • نفذ الأمر التالي لإضافة سيرفر الـ Smart Host الذي سنستخدمه:

أنا أقوم باستخدام سيرفر الـ ISP الخاص بي، و لا أستطيع وضعه، لذلك سأكتفي بوضع أي اسم وهمي بدلا عنه…

sudo postconf -e 'relayhost = smarthostserver.ispdomain.com'

  • ثم قم بإعادة تشغيل كل الخدمات بالأمر التالي:

sudo /etc/init.d/saslauthd restart
sudo /etc/init.d/postfix restart
sudo /etc/init.d/dovecot restart

بهذا الأمر الأخير، أصبح السيرفر جاهز و يعمل بشكل رسمي، يمكن إنشاء مستخدم جديد، و استخدام أي عميل بريد (Thunderbird مثلا) لاختبار الإرسال و الاستقبال…


كما ذكرت سابقا، سأبدا الحديث بعد هذا القسم عن تفاصيل أكثر عن Postfix و Dovecot بعض النقاط المهمة حولها…




تابع أجزاء الدرس:

إنشاء سيرفر بريد إلكتروني في لينوكس – الجزء الأول (مقدمة + مقدمة عن Postfix و Dovecot)

إنشاء سيرفر بريد إلكتروني في لينوكس – الجزء الأول – ملحق (نظرة سريعة على المحرر vi)

إنشاء سيرفر بريد إلكتروني في لينوكس – الجزء الثاني (تثبيت نظام Ubuntu Server و إعداد الشبكة)

إنشاء سيرفر بريد إلكتروني في لينوكس – الجزء الثالث (إعداد Postfix و Dovecot للعمل داخليا)

إنشاء سيرفر بريد إلكتروني في لينوكس – الجزء الرابع (إعداد Postfix و Dovecot لإرسال و استقبال البريد على الانترنت)

إنشاء سيرفر بريد إلكتروني في لينوكس – ملحق 1 (استخدام الأسماء المستعارة alias – استخدام ملفات forward)

3 تعليقات على إنشاء سيرفر بريد إلكتروني في لينوكس – الجزء الرابع (إعداد Postfix و Dovecot لإرسال و استقبال البريد على الانترنت)

فضلا أترك تعليقا

 

 

 

تستطيع استخدام علامات الـ HTML التالية

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>