الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

بناء سيرفر بريد إلكتروني في لينوكس

بدأه McGeek في 2 يونيو 2010 · 4 رد · 10,374 مشاهدة · في تقنيات شبكات UNIX
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

باعتبار هذا قسم الشبكات الخاص بلينوكس، فينقصه الكثير حتى يصبح متكاملا، و لجعله متكاملا، لابد من المواضيع التي تركز على الشبكات و تقنياتها...

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

بدون إطالة، سأتحدث عن بناء سيرفر بريد إلكتروني باستخدام Postfix و Dovecot معا، على نظام Ubuntu Server ثم بعده على Redhat (سأستخدم فيدورا لهذا الغرض...)...

-------------------------------------------

الجزء الأول/ مقدمة عن Postfix و Dovecot:

  • Postfix:
هو وسيط نقل البريد أو Mail Transfer Agent و هو أحد البرامج المشهورة، تم تطويره ليكون أسهل من الـ SendMail في التثبيت و الإعداد… (لمعلومات عن Sendmail اذهب هنا: http://en.wikipedia.org/wiki/Sendmail) تم إصدار أول نسخة منه في عام 1998 تحت رخصة IBM العمومية (راجع هذه الصفحة لمعلومات عن الرخصة: http://en.wikipedia...._Public_License) و لازال مستمرا حتى اليوم بالتطور من قبل صاحب المشروع الأصلي "Wietse Venema" و بعض المساهمين الآخرين معه…
من أهم مميزاته:
  • دعم Transport Layer Security و هذا يعني استخدام الـ Certificates
  • يدعم تنسيفي صندوق البريد MBox و MailDir (سأتخدث عنها لاحقا في درس إعداد Dovecot)
  • متوافق مع كل الأنظمة Unix-Like و هو العميل الإفتراضي في Ubuntu و NetBSD
  • يجوي مناعة فريدة ضد الـ Buffer overflow (انظر هنا لمعرفة ما هذا: http://en.wikipedia....Buffer_overflow)
  • البنية الخاصة بالنظام عبارة عن عدة خدمات متصلة تعمل مع بعضها بأقل قدر ممكن من الصلاحيات (chrooted سأتحدث عن هذا المصطلح في ملحق في النهاية بإذن الله) و بالتالي لو تعرضت أي خدمة من هذه الخدمات لأي مشكلة فلن يؤثر ذلك على بقية النظام، أو نظام التشغيل، و تكون النتائج فقط تصيب الخدمة المصابة

كيف يعمل Postfix:

postfix1.png

الشكل السابق يعطي فكرة مبسطة عن كيفية عمل Postfix أثناء استقبال البريد، و يمكن تلخيص العملية كالتالي:

  • عند وصول بريد من الشبكة، يتم استقباله عبر الخدمة الخاصة بسيرفر smtp و هي هنا smtpd أو qmqpd لكي يتم إزالة تشكيل بروتوكولات smtp أو qmqp ليتم استخراج معلومات الـ Header و المرسل و المستقبلين و باقي معلومات الرسالة…
  • بعذ استخراج المعلومات المرسلة يتم إرسال الرسالة إلى خدمة cleanup و هي الخدمة المسؤولة عن معالجة الرسائل الواردة و إرسالها إلى مستودع الرسائل الواردة incoming، و إبلاغ الخدمة المسؤولة عنه بوجود رسائل جديدة…
  • في حال تم استقبال رسالة من مصدر محلي على الشبكة (عميل متصل عبر LAN مثلا) فإن الرسالة يتم استقبالها عبر خدمة sendmail (ليست سيرفر البريد الآخر sendmail إنما هذه خدمة مستقلة عنه…) و يتم استخراج المعلومات من الرسالة و تسليمها إلى خدمة postdrop التي وظيفتها إرسال الرسالة إلى مستودع maildrop الذي تنتظر الرسالة فيه حتى تقوم خدمة pickup بحملها و تسليمها إلى cleanup التي سترسلها إلى مستودع الرسائل الواردة incoming…
  • في حال تم استلام رسالة من مصدر داخلي (أي من نفس مكونات السيرفر) مثل أن تقوم خدمة bounce بإرسال رسالة للمستخدم تخبره بأن رسالته لم تصل مثلا، فإن التسليم يكون إلى خدمة cleanup مباشرة…
  • عند وصول الرسالة إلى خدمة cleanup تقوم هذه الخدمة بإعادة تنسيق العناوين و الـ Headers و تقوم بنقل الرسالة إلى مستودع الرسائل الواردة incoming و تقوم بإعلام خدمة إدارة المستودع qmgr بوجود رسالة جديدة ليتم بعدها الانتقال إلى المرحلة الثانية من العمل و هو توصيل الرسالة إلى المستقبل النهائي، و هذا ما سأتحدث عنه في القسم التالي…

postfix2.png


  • كما تلاحظون من الشكل في الأعلى، فإن خدمة qmgr المسؤولة عن إدارة المستودع تقع في المنتصف و بالتالي فهي تمثل الأساس في عملية تسليم البريد في Postfix فهي تقوم بالاتصال بالخدمات الأخرى المسؤولة عن تسليم البريد للمستخدم، مثل smtp و local و الخدمات الأخرى الموجودة في الشكل…
  • يوجد خدمتين مهمتين أيضا، و هما discard و error، و وظيفة كل منهما يدل عليها الاسم، فوظيفة error هي رفض تسليم البريد و عرض الخطأ المسبب لذلك، و discard تتجاهل البريد بسبب معين (كرسائل سبام مثلا)…
  • خدمة qmgr متصلة بمستودعين: active و deferred، وظيفة active هي تخزين الرسائل التي تم نقلها له و فتحها من أجل تحديد وجهتها النهائية، و بالتالي نقلها للمستلم، و هذا المستودع محدود في السعة مقابل incoming و deferred و ذلك لمنع حدوث حمل زائد على الذاكرة الخاصة بالنظام في حال كان هناك حمل زائد على السيرفر… بالنسبة لمستودع deferred فهو يحوي الرسائل التي لن يتم تسليمها أو الرسائل الكبيرة التي لو تم إدخالها في مستودع active فإنها ستسبب بطء في عمل الخدمة…
  • تقوم خدمة qmgr بإرسال طلب تسليم إلى الخدمتين smtp و lmtp (انظر هنا لمعلومات عن LMTP: http://en.wikipedia....ansfer_Protocol) و تقوم بعمل استعلامات عن عنوان MX الخاص بالمجال الذي يحوي المستلم، و في حال وجدت استجابة، يتم تحديث ملفات الرسائل في المستودع و تحديد أسماء المستلمين التي سيتم تسليم الرسائل لهم، و إذا لم تحصل استجابة من السيرفر يتم إرسال أمر إلى qmgr بأن التسليم سيتم لاحقا للعنوان الذي تم عمل استعلام عنه، و يتم وضع علامة عليه للمحاولة مرة أخرى…
  • في النهاية الخدمة تقوم بتوصيل الرسالة إلى المجال الهدف… و هنا يأتي دور Dovecot كعميل تسليم البريد…

  • Dovecot:
تم إنشاء هذا النظام ليكون أداؤه خفيف و لا يستهلك قدر كبير من موارد النظام، بالإضافة إلى الاهتمام بالجانب الأمني منه أيضا، تم إصدار أو نسخة من هذا النظام في عام 2002 و قام بكتابته Timo Sirainen و تم إضافة عدة مساهمات من أشخاص عدة أيضا في المشروع…
من أهم المميزات:
  • الدعم لتنسيقات صندوق البريد القياسية: mbox و maildir (سأتحدث عنها لاحقا)
  • يحوي آلية ذاتية لاكتشاف الأخطاء التي تحدث في الفهرسة و تصخيخها ذاتيا
  • يحاول المطورون جعله بسيطا و مفهوما في التعامل معه، فرسائل الخطأ تم جعل عباراتها بسيطة ليسهل فهمها على المدراء و معرفة الحل لها…
  • يعتبر المطور أي مشكلة تحدث في النظام Bug و يجب عمل تصحيح لها، و لهذا لا يتم ترك أي مشكلة بدون حل…
  • يمكن للنظام العمل في بيئات الـ Cluster و NFS
  • يحوي على عدة طرق و آليات للتصريح و السماح للمستخدمين
  • إذا وجدت فيه اي ثغرة أمنية… مبروك لقد حصلت على 1000 يورو icon_biggrin.gif

كيف يعمل النظام:

عند إرسال رسالة إلى عميل نقل البريد (MTA أو Mail Transfer Agent) مثل Postfix هنا، عبر استخدام بروتوكول الـ SMTP، سيقوم الـ MTA بمعالجة الرسالة و تحديد مستقبلها، و عمل بعض الاستعلامات على المجال المرتبط بالمستقبل لتحديد عنوان السيرفر الخاص به، ثم سيقوم بإرسال تلك الرسالة إلى الـ MTA الموجود على ذلك السيرفر، نكون بذلك قد انتهينا من العمل مع MTA و هو هنا Postfix لدينا…

و جاء الآن دور عميل تسليم البريد (MDA أو Mail Delivery Agent) و هو هنا كما ذكرنا Dovecot…

فما الذي يحصل عندما يبدأ Dovecot بالعمل؟

عمل Dovecot في الواقع هو تمكين عميل البريد الخاص بك مثل Thunderbird من الوصول لبريدك المخزن على السيرفر، و عرضه و قراءته… في الواقع هو غير مسؤول عن استقبال البريد لك… الذي يستقبل البريد كما تم الحديث عنه هو Postfix…

و بالتالي فإن وجود بنية MTA تعمل كـ Postfix مثلا ضروري لوجود MDA كـ Dovecot…

البنية الأساسية في إعداد Dovecot تكمن في النقاط التالية:

  • نوع تخزين البريد (MBox أو MailDir)
  • موقع تخزين البريد
  • قائمة المستخدمين
  • قائمة كلمات المرور

-----------------------

سنحتاج في القسم التالي للتعامل مع محرر نصوص vi لمعلومات سريعة عنه انظر هذا الموضوع:

http://www.arabteam2...howtopic=222491

تم تعديل هذه المشاركة بواسطة SalehRam في 2 يونيو 2010 في 23:46

5

lxcs.png

syria-flag_small.jpg

#2

الجزء الثاني/ تثبيت نظام Ubuntu Server و إعداد الشبكة:

-------------------------------------

سأتابع الحديث في هذا الجزء عن تثبيت Ubuntu Server و إعداد إعدادات الشبكة الأساسية عليه ثم تحميل و تثبيت Postfix و Dovecot عليه لبدء العمل على إعدادهما…

  • تثبيت Ubuntu Server:

قمت مسبقا بتثبيت النظام و عمل فيديو بسيط عن العملية، و يمكن تحميله من هذا الرابط:


ملاحظة مهمة: قمت أثناء التثبيت باختيار Mail Server و بذلك سيتم تثبيت حزمتي Postfix و Dovecot تلقائيا، و في حال لم يتم تحديدها أثناء التثبيت، سأقوم بتوضيح طريقة تثبيتها في القسم القادم من هذا الجزء، و ايضا اخترت OpenSSH Server لأتمكن فيما بعد من الدخول على السيرفر عن بعد باستخدام SSH…

  • إعداد الشبكة على النظام الجديد:

عند اكتمال إعادة التشغيل، قم بتسجيل الدخول لنظامك الجديد، و الآن سنقوم بإعداد إعدادات الشبكة على النظام، سنقوم بوضع عنوان الـ IP و عنوان الـ DNS…

لمعرفة الإعدادات الحالية للسيرفر قم بتنفيذ الأمر ifconfig و سيعرض النظام معلومات الشبكة الحالية…

011-300x153.jpg

معلومات الشبكة الحالية على السيرفر بعد تنفيذ الأمر ifconfig - اضغط على الصورة للتكبير

إفتراضيا، و كما هو معروف، يتم تعيين عنوان الـ IP باستخدام DHCP في حال كان موجودا على الشبكة… و في حال لم يكون موجودا سيتم تعيين عنوان APIPA، و نحن نريد تغيير العنوان بكل الأحوال، باعتبار هذا سيرفر، و دائما يفضل استخدام عناوين ثابتة و محجوزة للسيرفرات…

لتغيير العنوان، سنقوم بتعديل بسيط على ملف اسمه ifconfig بالطريقة التالية:

سأستخدم محرر النصوص vi لمعلومات عن استخدامه راجع هذا الموضوع

سنقوم بتعديل الملف interfaces الموجود في الدليل /etc/network، عند فتح الملف سيكون بالصورة التالية:

02-300x225.jpg

الملف interfaces عند فتحه قبل التعديل - اضغط على الصورة للتكبير

كما هو ملاحظ، لا يوجد شيء في الملف، يتم استخدام DHCP للحصول على عنوان الـ IP و بالتالي سنحتاج لتغيير محتويات الملف و تعيين العنوان يدويا، و لعمل ذلك، سنحتاج للدخول في وضع التحرير في vi، و تعديل القسم "The primary network interfaces" ليصبح بالشكل التالي: (ملاحظة: يجب أن نقوم بالتعديل على الملف باستخدام sudo vi interfaces)

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0
broadcast 192.168.1.255

بعد هذا التعديل، يجب علينا أن نقوم بتعطيل ثم تمكين اتصال الشبكة لدينا لكي يتم تغيير الإعدادات التي قمنا بعملها، و لعمل ذلك، سنستخدم الأمرين:

sudo ifdown eth0 	//لتعطيل اتصال الشبكة

 sudo ifup eth0 	//لتمكين اتصال الشبكة من جديد

بعد إعادة تمكين اتصال الشبكة، تحقق من عنوان الـ IP الجديد و يجب أن يظهر كما في الصورة التالية:

03-300x225.jpg

إعدادات الشبكة بعد التعديل - اضغط على الصورة للتكبير

بعد هذا التعديل، سنقوم بإضافة عنوان سيرفر الـ DNS لكي يستطيع السيرفر الخاص بنا العمل بشكل جيد، و أيضا، سنقوم بالتعديل على ملف، و هذا الملف هو resolv.conf و هو موجود أيضا في الدليل etc…

عند فتح هذا الملف، سيطون فارغ، و نقوم بإضافة عناوين سيرفرات الـ DNS التي ستوفر الخدمة للسيرفر الخاص بنا كالتالي:

nameserver [add_the_nameserver_ip]

بالنسبة للشبكة لدي فالعناوين هي:

nameserver 192.168.1.1

 nameserver 84.235.6.54

 nameserver 84.235.6.55

في حال أردنا تغيير اسم السيرفر، سنقوم بالتعديل على الملف hostname الموجود في الدليل etc، عند فتح الملف سنجد بداخله سطر واحد فقط يحوي اسم السيرفر، و يمكننا تعديله بالاسم الذي نريد ثم حفظه و عمل إعادة تشغيل للسيرفر، في السيرفر الذي سأعمل عليه سيكون اسمه:

mail-srv-t02

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

  • تثبيت Postfix و Dovecot (في حال لم يتم تثبيتها أثناء إعداد النظام)

في حال لم تقم بتثبيت Postfix و Dovecot أثناء تثبيت النظام، فسأذكر هنا طريقة تثبيت الحزم الخاصة بهما، و لن أتكلم عن الإعدادات، لأنها ستكون في الجزء القادم بإذن الله…
  • لتثبيت Postfix:

لتثبيت Postfix استخدم الأمر التالي مباشرة و بدون إضافة أي مستودع حزم إضافي:

 sudo apt-get install postfix

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

  • و لتثبيت Dovecot:

أيضا استخدم الأمر التالي لتثبيت حزم Dovecot

 sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d

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

------------------------------

تم تعديل هذه المشاركة بواسطة SalehRam في 3 يونيو 2010 في 00:10

4

lxcs.png

syria-flag_small.jpg

#3

الجزء الثالث/ إعداد Postfix و Dovecot للعمل داخليا:

------------------------------------------------

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

بعد اكمال تثبيت السيرفر، و تثبيت حزم Postfix و Dovecot، سنأتي الآن إلى إعداد الخدمات التي ستمكن من إرسال و استقبال البريد بشكل نظامي داخل الشبكة، و سأتكلم عن موضوع الإرسال و الاستقبال من و إلى الانترنت في القسم القادم، بسبب أنه يوجد بعض النقاط التي تحتاج إلى حديث منفصل و لسبب آخر سأبينه في بداية القسم القادم أيضا…

  • إعداد Postfix:
سأبدأ بـ Postfix لأنه الأساس في هذا الموضوع (كما ذكرت، وجود بنية Postfix تعمل بشكل سليم ضروري لوجود Dovecot…)
الإعدادات العامة و الأساسية لـ Postfix تتم عن طريق التعديل على الملف main.cf الموجود في الدليل etc/postfix، و لبدء التعديل سنقوم أولا بكتابة الأمر التالي لتشغيل برنامج الإعداد الخاص بـ Postfix:
sudo dpkg-reconfigure postfix


عند تنفيذ الأمر السابق، ستظهر هذه الشاشة و فيها يمكن تعيين إعدادات Postfix الأساسية لكي يتم تشغيله على أساسها:

sudo_dpkg-reconfigure_postfix-300x225.png
الشاشة الأولى بعد تنفيذ الأمر dpkg-reconfigure postfix - اضغط على الصورة للتكبير


في هذه الشاشة، يعرض النظام معلومات عن نوع الخدمة التي نريد إعدادها على السيرفر، هل تتضمن الإرسال و الاستقبال من الانترنت، أو فقط محليا، و ما إذا كان هناك Smart Host لاستخدامه أم لا (انظر هنا لمعلومات عن Smart Host: http://en.wikipedia....wiki/Smart_host)، أو ترك كل الإعدادات كما هي…
نحن نريد في هذه الحالة استخدام البريد داخليا، لذلك سنقوم بالضغط على OK و اختيار "Local Only" من القائمة التي ستظهر بعد ذلك…

local_only-300x225.png
اختيار الخيار "Local Only" - اضغط على الصورة للتكبير

بعد اختيار "Local Only"، سيتم عرض الصفحة التالية، التي سنعين فيها الدومين الذي سيتم استخدامه في عناوين البريد الداخلية، و هو عبارة عن اسم دومين (Fully Qualified Domain Name – FQDN) يتم استخدامه لتعريف العناوين التي ليس لها نطاق فعلي، فمثلا، نريد أن يكون البريد الداخلي بصيغة user@مخؤشميخةشهى.com فسنقوم بوضع localdomian.com في خانة "System mail name" كالتالي:

localdomian_com-300x225.png
اضغط على الصورة للتكبير

عند الضغط على OK، سيتم عرض الشاشة التالية و التي تطلب إدخال حساب مستخدم ليتم تحويل الرسائل المرسلة إلى مستخدم الـ root و حسابات النظام الأخرى إليه، أي يجب إدخال اسم حياب المستخدم المسؤول عن السيرفر ليتلقى التنبيهات و الرسائل التعلقة بالنظام…

postmaster_root_forward-300x225.png
اضغط على الصورة للتكبير

في الشاشة التالية، سنقوم بإدخال اسم المجال للبريد الذي نريد إنشاء السيرفر له، فمثلا لو كنا نريد عمل سيرفر بريد للدومين onlinedomain.com سنقوم بإدخاله هنا، و هذه الخانة عبارة عن قائمة مفصولة بفواصل، طبعا في حالتنا هذه، لن نستخدم السيرفر لإرسال و استقبال بريد عبر الانترنت، لذلك، ليس هناك داعي لإدخال اسم فعلي، يكفي فقط مثلا إدخال localdomain.com (التي ستكون موجودة بالفعل في حال تم إدخالها في الخطوة السابقة)

email_domain-300x225.png
اضغط على الصورة للتكبير

في الشاشة التالية التي تسأل عن الرغبة في تفعيل التحديثات المتزامنة للـ queues الخاصة بنظام البريد، الموضوع عائد لك، في الاختيار (Yes أو No)، و سأقوم بتوضيح هذه النقطة فيما بعد بإذن الله…
الشاشة التالية عبارة عن تحديد الشبكات المسموح لها بإرسال البريد عبر هذا السيرفر، و بما أن الإرسال حاليا سيكون محليا، فسنقوم بتعديل القيمة الإفتراضية التي أمامنا، و الإبقاء فقط على 127.0.0.0/8 و سنضيف عنوان الشبكة الحالية المتصل بها السيرفر أيضا، و في حالتي أنا، الشبكة الداخلية عنوانها: 192.168.1.0 و بالتالي ستصبح القيمة المضافة: 192.168.1.0/24 كما في الصورة التالية:

network_relay-300x225.png
اضغط على الصورة للتكبير

في الشاشة التي تلي تعيين عناوين الشبكة، سيسأل النظام عن رغبتنا في استخدام procmail لتوصيل البريد محليا، سأقوم باختيار No، و سيتابع للشاشة التالية، التي يسأل فيها النظام عن الحجم الإفتراضي لصندوق البريد لكل مستخدم، الحجم الإفتراضي هو 5 جيجا، لذلك سأترك القيمة الموجودة كما هي (إذا كانت صفر فإنه سيستخدم الإعدادات الإفتراضية الخاصة به)، عند الوصول للشاشة التالية، سيسأل النظام عن Local address extension character، و هو رمز أو حرف يستخدم لتعريف و تمييز العناوين المحلية عن العناوين الأخرى، القيمة الإفتراضية هي + فلا داعي لتغييرها، قم بالتأكد من أنها موجودة ثم اضغط Enter…
الشاشة التالية التي سيتم عرضها، هي الشاشة الأخيرة في عملية الإعداد، و هي تسأل عن نوع بروتوكول IP الذي سنستخدمه، حاليا لا يوجد استخدام للـ IPv6 لذلك، من الأفضل اختيار فقط IPv4 و الضغط فوق OK، و بهذا يكون انتهى إعداد Postfix للعمل في البيئة الداخلية، و لاختبار العمل، قم بعمل مستخدم جديد، و أرسل بريد للمستخدم الحالي كالتالي:

  • قم بعمل مستخدم جديد:

sudo useradd -s /bin/bash tuser
sudo passwd tuser

  • قم بإرسال بريد للمستخدم الآخر الموجود بالفعل على النظام (سنقوم بذلك عبر عمل telnet على السيرفر – قم بكتابة الأوامر التالية):
telnet localhost 25
ehlo localhost
mail from: tuser@localdomain.com
rcpt to: [YOUR_CURRENT_USER_NAME]@localdomain.com
data
subject: test
write something here...
...
...
. [FULL STOP]
quit


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

new_mail_telnet-300x225.png
تنبيه وجود الرسالة الجديدة - اضغط على الصورة للتكبير

لفتح البريد، نقوم بكتابة الأمر mail، و سيعرض النظام الرسائل الجديدة الموجودة لدينا، و يمكننا فتح رسالة عبر كتابة رقمها، كما في الصورة التالية:

opened_mail_new-300x225.png
عرض الرسائل الجديدة الموجودة لدينا - اضغط على الصورة للتكبير

كما تلاحظون تم فتح الرسالة الجديدة، و يمكن الآن إرسال و استقبال الرسائل، و لكن لكي يصبح الأمر أسهل، سنحتاج لعميل لتسليم البريد على السيرفر، و هذا هو Dovecot…

  • إعداد Dovecot:

في الواقع، عندما قمنا بتثبيت الحزم الخاصة بـ Dovecot، تم تثبيته بالإعدادات التي تجعله يعمل بشكل داخلي تلقائيا، و لكن هناك عدة تعديلات بسيطة يجب علينا عملها عليه لكي يصبح أفضل، و ملف الإعدادات الخاص به موجود في الدليل: /etc/dovecot و اسمه dovecot.conf…

التعديلات التي سنقوم بها، هي لتحديد نوع البروتوكولات المستخدمة، و لتمكين التصريح باستخدام النص العادي (Plain Text) و ذلك لاستخدامها مع أي عميل بريد (مثل Thunderbird أو Windows Live Mail)…

قم بفتح الملف dovecot.conf بوضع Root عبر الأمر: sudo vi /etc/dovecot/dovecot.conf، و ابحث عن النص التالي:

 # specify protocols = imap imaps pop3 pop3s

و قم بتعديل قيمة protocols التي تحته لتحوي فقط pop3 و imap…

edit_dovecot_pop3-imap-300x225.png

مكان وجود protocols في ملف dovecot.conf - اضغط على الصورة للتكبير

أيضا قم بالبحث عن هذا السطر:

 #disable_plaintext_auth = yes

و قم بإلغاء التعليق و غير no بـ yes كما في الصورة التالية:

edit_dovecot_plain-text-auth-300x225.png

اضغط على الصورة للتكبير

حان الوقت أيضا الآن لتغيير تنسيق صندوق البريد الذي سيستخدم في النظام، و سنقوم باستخدام MailDir لأنه أفضل و أكثر مرونة، سنقوم بتغييره في Postfix و Dovecot على التوالي:

  • لتغييره في Postfix سنستخدم الأمر التالي للتعديل على الملف main.cf مباشرة بدون فتحه:
sudo postconf -e 'home_mailbox = Maildir/'
sudo postconf -e 'mailbox_command ='


  • و لتغيير التنسيق في Dovecot، سنضطر للبحث في الملف dovecot.conf و تعديل القيمة mail_location لجعلها تبدو بالصورة التالية:

 mail_location = maildir:~/Maildir

بعد هذا التعديل على الملف، يمكننا الآن تجربة السيرفر عبر استخدام عميل بريد مثل Thunderbird أو Windows Live Mail و ذلك بوضع عنوان الـ Outgoing server و الـ Incoming server ليكون عنوان الـ IP الداخلي للسيرفر (192.168.1.20) في حالتي هنا، و اختيار This server requires authentication في إعدادت الـ Outgoing server…

بهذا الإعداد، يمكن تشغيل البريد بشكل داخلي، باستخدام الإعدادات الإفتراضية فقط، بالنسبة لمزيد من التخصيص و العمليات التي يمكن القيام بها على السيرفر فسأتحدث عن هذا في الملحق الخاص بـ Dovecot في النهاية بإذن الله…

كما ذكرت، في الجزء القادم سيكون الحديث عن تشغيل البريد عبر الانترنت للإرسال و الاستقبال…

1

lxcs.png

syria-flag_small.jpg

#4

آسف للتأخر في هذا الجزء بسبب بعض المشاغل...

---

الجزء الرابع/ إعداد Postfix و Dovecot لإرسال و استقبال البريد على الانترنت

-----------------------------------------------

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

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

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

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

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

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

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

ls_maildir_default-300x225.png

مجتويات المجلد 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...._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 بعض النقاط المهمة حولها…

تم تعديل هذه المشاركة بواسطة SalehRam في 11 يونيو 2010 في 20:48

1

lxcs.png

syria-flag_small.jpg

#5

استخدام الأسماء المستعارة و ملف forward:

------------------------------

أولا، أعتذر بشدة عن الإنقطاع في هذا الموضوع، و ذلك بسبب بعض المشاكل و الظروف الغير جيدة في الفترة الماضية…

هذا الموضوع سأتحدث فيه عن استخدام الأسماء المستعارة لعناوين البريد، بالإضافة إلى إعادة توجيه البريد لعنوان آخر…

كنت أريد الحديث عن إعداد السيرفر ليستخدم SSL، و لكن كان لابد لي من الحديث عن الشهادات الرقمية بشكل عام أولا حتى أتمكن من المتابعة في إعداد SSL على السيرفرـ بالإضافة إلى أن النقطة التي تخص حانب السيرفر صغيرة بالمقارنة مع الحديث الذي كان من المفترض عمله عن SSL، لذلك، لم أتطرق لهذا الموضوع…

سأقوم بالحديث عن SSL بصورة بسيطة لاحقا، و لمعرفة معلومات عن الشهادات الرقمية و الـ Certification Authority الخاصة باللينوكس، يمكن مراجعة هذا المستند في الصفحة التالية، و الذي سيشرح بالتفصيل كيفية استعمال الشهادات الرقمية تحت نظام اللينوكس:

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

أما بالنسبة للموضوع الآن، فهو كما ذكرت عبارة عن شرح استخدام local alias database أو قاعدة بيانات محلية للأسماء المستعارة لعناوين البريد، بالإضافة إلى إنشاء ملف اسمه forward و ظيفته تحديد عناوين البريد التي نريد إعادة توجيه بريدنا الحالي إليها…

  • أولا: استخدام الأسماء المستعارة (Local alias database):
الفائدة من هذا هي، أولا إمكانية إنشاء مجموعات تسليم تحوي أكثر من عنوان، و أيضا، إعادة توجيه البريد المرسل إلى أشخاص وهميين منثل Postmaster و root إلى مستخدمين فعليين على النظام، و كمثال على ذلك، نقوم بإنشاء مستخدم اسمه testuser1 ثم نقوم بإضافة alias له ليصبح sysadmin، الآن، عند إرسار بريد إلى sysadmin سيتم تسليمه للمستخدم testuser1، بينما لا يوجد فعليا مستخدم بالاسم sysadmin، و إنما هو مجرد اسم مستعار للمستخدم testuser1…
  • كيفية إضافة اسم مستعار لمستخدم جديد:

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

sudo useradd -m -s /bin/bash testuser1
sudo passwd testuser1

ثم نقوم الآن بفتح الملف aliases الموجود داخل الدليل etc و إضافة الاسم المستعار لمستخدمنا الجديد:

 sudo vi /etc/aliases

و نقوم بإضافة السطر التالي:

 sysadmin: testuser1

ثم نقوم بالخروج مع حفظ الملف… (استخدم الأمر wq داخل vi لعمل ذلك مباشرة)

ثم لتطبيق التغييرات نقوم بتنفيذ الأمر newaliases الذي وظيفته إعادة بناء قاعدة البيانات الخاصة بالأسماء من جديد، و ذلك عبر الأمر:

 sudo newaliases

لو قمنا الآن بإرسال بريد للمستخدم testuser1، سنجده في المجلد /home/testuser1/Maildir/new، و أيضا لو قمنا بإرسال بريد للمستخدم (أو للاسم) sysadmin سنجده أيضا في نفس الدليل السابق، و ذلك لأن الاسم sysadmin فقط يشير للمستخدم testuser1…

  • إضافة اسم مستعار لمستخدم مسبق:
لعمل ذلك، فقط سنقوم بفتح الملف aliases و نقوم بإضافة السم المستعار و مقابله اسم المستخدم الموجود بالفعل، تماما كما في النقطة السابقة…
  • إنشاء مجموعة تسليم باستخدام الـ Aliases:

كما ذكرت سابقا، من فزائد الـ alias هي إمكانية عمل مجموعات تسليم distribution groups، و يتم ذلك كالتالي:

لو فرضنا مثلا أننا لدينا صندوقي بريد (testuser1 و testuser2)، و نريد من البريدين استقبال كل الرسائل الخاصة بالدعم الفني، بكل بساطة، سنقوم بإنشاء alias لكل من الحسابين السابقين بنفس الاسم، أي:

support: testuser1
support: testuser2

و بهذا، أي بريد يتم إرساله إلى support@domain.com سيتم استقباله عند كل من testuser1 و testuser2 بنفس الوقت…

  • إعادة توجيه البريد باستخدام الملف .forward:

هذه النقطة بسيطة جدا، و هي كيفية إعادة توجيه البريد الوارد إلى حساب معين ليتم إرساله لعنوان بريد آخر، و تتم عبر إنشاء ملف اسمه forward في دليل الـ home الخاص بالحساب الذي نريد عمل إعادة توجيه له…

لنفرض وجود حساب باسم testuser و نريد إعادة توجيه البريد الخاص به إلى بريده الآخر على الهوتميل مثلا أو أي حساب آخر… ما سنقوم بعمله هو التالي:

su - testuser
touch .forward
vi .forward

بعد أن قمنا بفتح الملف forward سنضع فيه سطر واحد و هو عنوان البريد الذي نريد تحويل الرسائل إليه:

 testuser@hotmail.com

ثم سنغلق الملف كالتالي: wq

الآن، أي بريد سيتم إرساله للمستخدم testuser سيتم تحويله تلقائيا لبريده الآخر على Hotmail مثلا أو أي بريد آخر نريد…

lxcs.png

syria-flag_small.jpg

مواضيع مشابهة