مقدمة
بوستفيكس هو برنامج معروف مفتوح المصدر للوكيل لنقل البريد (MTA) الذي يمكن استخدامه لتوجيه وتسليم البريد الإلكتروني على نظام Linux. يُقدر أن حوالي 25% من خوادم البريد العامة على الإنترنت تعمل بنظام Postfix.
في هذا الدليل، ستتعلم كيفية تثبيت وتكوين بوستفيكس على خادم Ubuntu 22.04. ثم، ستقوم باختبار قدرة بوستفيكس على توجيه البريد بشكل صحيح من خلال تثبيت s-nail
، وهو وكيل مستخدم للبريد (MUA)، المعروف أيضًا باسم عميل البريد الإلكتروني.
يرجى ملاحظة أن هدف هذا البرنامج التعليمي هو مساعدتك في تشغيل بوستفيكس بسرعة مع بعض وظائف البريد الإلكتروني الأساسية فقط. لن يكون لديك خادم بريد إلكتروني متكامل بالكامل بنهاية هذا الدليل، ولكن ستكون لديك بعض المكونات الأساسية لمثل هذا الإعداد لمساعدتك في البدء.
المتطلبات المسبقة
إعداد وصيانة خادم البريد الخاص بك معقدة وتستغرق وقتًا طويلاً. بالنسبة لمعظم المستخدمين، من الأكثر عملية الاعتماد بدلاً من ذلك على خدمة بريد مدفوعة. إذا كنت تفكر في تشغيل خادم بريدك الخاص، فنحن نشجعك على مراجعة هذا المقال حول الأسباب التي قد لا ترغب في فعل ذلك.
إذا كنت متأكدًا من رغبتك في اتباع هذا الدليل لتثبيت وتكوين Postfix، فيجب عليك أولاً أن تمتلك ما يلي:
- A server running Ubuntu 22.04 to function as your Postfix mail server. This server should have a non-root user with
sudo
privileges and a firewall configured with UFW. You can follow our Ubuntu 22.04 initial server setup guide to set this up. - A Fully Qualified Domain Name pointed at your Ubuntu 22.04 server. You can find help on setting up your domain name with DigitalOcean by following our Domains and DNS Networking documentation. Be aware that if you plan on accessing mail from an external location, you will need to make sure you have an MX record pointing to your mail server as well.
يرجى ملاحظة أن هذا البرنامج التعليمي يفترض أنك تقوم بتكوين مضيف يحمل FQDN لـ mail.example.com
. في كل مرة تكون فيها ضروريًا، تأكد من تغيير example.com
أو mail.example.com
ليعكس FQDN الخاص بك.
الخطوة 1 — تثبيت Postfix
Postfix مدرج في مستودعات Ubuntu الافتراضية، لذا يمكنك تثبيته باستخدام APT.
للبدء، قم بتحديث ذاكرة التخزين المؤقتة المحلية لحزمة apt
:
ثم قم بتثبيت حزمة postfix
باستخدام الأمر التالي. يرجى ملاحظة أننا هنا نمرر المتغير البيئي DEBIAN_PRIORITY=low
إلى هذا الأمر التثبيت. سيؤدي هذا إلى تشغيل عملية التثبيت لتطلب منك تكوين بعض الخيارات الإضافية:
ستفتح عملية التثبيت هذه سلسلة من الاستفسارات التفاعلية. لأغراض هذا البرنامج التعليمي، استخدم المعلومات التالية لملء الاستفسارات الخاصة بك:
- نوع عام لتكوين البريد؟: لهذا، اختر موقع الإنترنت لأن هذا يتناسب مع احتياجات البنية التحتية لدينا.
- اسم البريد للنظام: هذا هو النطاق الأساسي المستخدم لبناء عنوان بريد إلكتروني صالح عندما يتم تقديم جزء الحساب فقط من العنوان. على سبيل المثال، لنفترض أن اسم المضيف لخادمك هو
mail.example.com
. من المحتمل أن ترغب في ضبط اسم البريد للنظام علىexample.com
بحيث يستخدم Postfix العنوانuser1@example.com
عندما يتم توفير اسم المستخدمuser1
. - المستلم لبريد الجذر والمدير: هذا هو حساب Linux الذي سيتم إعادة توجيه البريد الموجه إليه
root@
وpostmaster@
. استخدم حسابك الرئيسي لهذا. في هذه الحالة المثالية، sammy. - وجهات أخرى لقبول البريد من أجل: يحدد هذا الوجهات البريدية التي ستقبلها هذه النسخة من Postfix. إذا كنت بحاجة لإضافة أي نطاقات أخرى ستتولى هذا الخادم استلامها، أضفها هنا. في غير ذلك، سيكون الافتراضي كافياً.
- فرض التحديثات المتزامنة على طابور البريد؟: نظرًا لأنك من المحتمل أن تستخدم نظام ملفات مسجل، قبل لا هنا.
- الشبكات المحلية: هذه قائمة بالشبكات التي يتم تكوين خادم البريد الخاص بك لإعادة توجيه الرسائل إليها. سيعمل الافتراضي بشكل جيد لمعظم السيناريوهات. إذا اخترت تعديله، فتأكد من أن تكون مقيدًا للغاية فيما يتعلق بنطاق الشبكة.
- حدود حجم صندوق البريد: يمكن استخدام هذا لتحديد حجم الرسائل. تعيينه إلى
0
يعطل أي قيود حجم. - حرف التمديد لعنوان محلي: هذا هو الحرف الذي يمكن استخدامه لفصل الجزء العادي من العنوان عن التمديد (المستخدم لإنشاء الاسماء البديلة الديناميكية). الافتراضي،
+
سيعمل لهذا البرنامج التعليمي. - البروتوكولات الإنترنت للاستخدام: اختر ما إذا كنت تريد تقييد إصدار IP الذي يدعمه بريد بوستفكس. لأغراض هذا البرنامج التعليمي، اختر all.
لتكون واضحًا، هذه هي الإعدادات المستخدمة في هذا الدليل:
- النوع العام لتكوين البريد؟: موقع الإنترنت
- اسم البريد النظامي:
example.com
(ليسmail.example.com
) - المستلم الجذري والرئيسي للبريد: اسم المستخدم الخاص بحساب Linux الأساسي الخاص بك (sammy في أمثلتنا)
- وجهات أخرى لقبول البريد لها:
$myhostname, example.com, mail.example.com, localhost.example.com, localhost
- فرض تحديثات متزامنة على طابور البريد؟: لا
- الشبكات المحلية:
127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
- حدود حجم صندوق البريد:
0
- حرف التمديد لعنوان محلي:
+
- البروتوكولات الإنترنت للاستخدام: all
ملاحظة: إذا كنت بحاجة إلى العودة لتغيير هذه الإعدادات مرة أخرى، يمكنك القيام بذلك عن طريق كتابة:
سيتم ملء الحوافز مسبقًا باستجاباتك السابقة.
عندما تُطلب إعادة تشغيل الخدمات، قبل الافتراضيات واختر موافق
.
عندما ينتهي عملية التثبيت، أنت الآن جاهز لإجراء بعض التحديثات على تكوين بريدك الإلكتروني (بوستفيكس).
الخطوة 2 — تغيير تكوين بوستفيكس
يمكنك الآن ضبط بعض الإعدادات التي لم يطلب منك عملية تثبيت الحزمة تعديلها. يتم تعريف العديد من إعدادات تكوين بوستفيكس في ملف /etc/postfix/main.cf
. بدلاً من تحرير هذا الملف مباشرة، يمكنك استخدام أمر postconf
لبحث أو تعيين الإعدادات التكوينية.
للبدء، قم بتعيين موقع صندوق بريد مستخدم Ubuntu غير الجذر. في هذا الدليل، سنستخدم تنسيق Maildir، الذي يفصل الرسائل إلى ملفات فردية يتم نقلها بين الدلائل استنادًا إلى إجراءات المستخدم. الخيار البديل الذي لم يتم تغطيته في هذا الدليل هو تنسيق mbox، الذي يخزن جميع الرسائل داخل ملف واحد.
قم بتعيين المتغير home_mailbox
إلى Maildir/
. في وقت لاحق، ستقوم بإنشاء هيكل مجلد تحت هذا الاسم داخل دليل المستخدم الخاص بك. قم بتكوين home_mailbox
عن طريق كتابة:
بعد ذلك، قم بتحديد موقع جدول virtual_alias_maps
الذي يقوم بتعيين حسابات البريد الإلكتروني التعسفية إلى حسابات نظام Linux. قم بتشغيل الأمر التالي، الذي يرتبط بموقع الجدول بملف قاعدة بيانات تجزئة يسمى /etc/postfix/virtual
:
الآن بعد أن قمت بتحديد موقع ملف الخرائط الافتراضية في ملف main.cf
الخاص بك، يمكنك إنشاء الملف نفسه وبدء تعيين حسابات البريد الإلكتروني إلى حسابات المستخدمين على نظام Linux الخاص بك. قم بإنشاء الملف باستخدام محرر النص المفضل لديك؛ في هذا المثال، سنستخدم nano
:
قم بتحديد أي عناوين ترغب في قبول البريد الإلكتروني لها، تليها مسافة فارغة والمستخدم في Linux الذي ترغب في توصيل تلك البريد إليه.
على سبيل المثال، إذا كنت ترغب في قبول البريد الإلكتروني على contact@example.com
و admin@example.com
وتود توصيل تلك البريد إلى المستخدم sammy في Linux، يمكنك تعيين ملفك بهذه الطريقة:
contact@example.com sammy
admin@example.com sammy
بعد أن قمت بتعيين جميع العناوين إلى حسابات الخادم المناسبة، احفظ وأغلق الملف. إذا استخدمت nano
، فافعل ذلك عن طريق الضغط على CTRL + X
، ثم Y
، ثم ENTER
.
ضع التطبيق عن طريق الكتابة:
أعد تشغيل عملية Postfix للتأكد من تطبيق جميع التغييرات:
بناءً على افتراض أنك قمت بمتابعة دليل الإعداد الأولي للخادم، فستكون قد قمت بتكوين جدار ناري باستخدام UFW. سيقوم هذا الجدار الناري بحظر الاتصالات الخارجية إلى الخدمات على الخادم الخاص بك بشكل افتراضي ما لم يتم السماح صراحة بتلك الاتصالات، لذا ستحتاج إلى إضافة قاعدة جدار ناري للسماح باستثناء لبرنامج البريد الخاص بك.
يمكنك السماح بالاتصالات بالخدمة عن طريق كتابة:
بهذا، تم تكوين برنامج البريد وجاهز لقبول الاتصالات الخارجية. ومع ذلك، لم تكن جاهزًا بعد لاختباره باستخدام عميل بريد. قبل أن تتمكن من تثبيت عميل واستخدامه للتفاعل مع البريد الذي يتم تسليمه إلى خادمك، ستحتاج إلى إجراء بعض التغييرات على إعدادات خادم Ubuntu الخاص بك.
الخطوة 3 — تثبيت عميل البريد وتهيئة بنية Maildir
من أجل التفاعل مع البريد الذي يتم تسليمه، ستقوم هذه الخطوة بإرشادك خلال عملية تثبيت حزمة s-nail
. هذا هو نوع مميز من عميل BSD xmail
الذي يمكنه التعامل بشكل صحيح مع تنسيق Maildir.
قبل تثبيت العميل، سيكون من الحكمة التأكد من تعيين متغير البيئة MAIL
بشكل صحيح. سيراقب s-nail
هذا المتغير لمعرفة مكان العثور على البريد لمستخدمك.
لضمان أن المتغير MAIL
مُعين بغض النظر عن كيفية الوصول إلى حسابك — سواءً من خلال ssh
، su
، su -
، أو sudo
، على سبيل المثال — ستحتاج إلى ضبط المتغير في ملف /etc/bash.bashrc
وإضافته إلى ملف ضمن /etc/profile.d
للتأكد من تعيينه لجميع المستخدمين بشكل افتراضي.
لإضافة المتغير إلى هذه الملفات، اكتب:
لقراءة المتغير في جلسة العمل الحالية، قم بمصدرة من ملف /etc/profile.d/mail.sh
:
مع الانتهاء من ذلك، قم بتثبيت عميل البريد الإلكتروني s-nail
باستخدام APT:
قبل تشغيل العميل، هناك بعض الإعدادات التي يجب ضبطها. افتح ملف /etc/s-nail.rc
في محرر النص:
في نهاية الملف، أضف الخيارات التالية:
. . .
set emptystart
set folder=Maildir
set record=+sent
هذا ما تقوم به هذه الأسطر:
set emptystart
: يسمح للعميل بالفتح حتى مع صندوق بريد فارغset folder=Maildir
: يعين دليلMaildir
إلى المتغير الداخليfolder
set record=+sent
: ينشئ ملفsent
mbox لتخزين البريد المرسل ضمن أي دليل يتم تعيينه كمتغيرfolder
، في هذه الحالةMaildir
احفظ وأغلق الملف عند الانتهاء. أنت الآن جاهز لبدء هيكل Maildir على نظامك.
A quick way to create the Maildir structure within your home directory is to send yourself an email with the s-nail
command. Because the sent
file will only be available once the Maildir is created, you should disable writing to it for this initial email. Do this by passing the -Snorecord
option.
أرسل البريد الإلكتروني عن طريق توجيه سلسلة إلى أمر s-nail
. قم بتعديل الأمر لتحديد مستخدم Linux الخاص بك كمستلم:
ملاحظة: قد تحصل على الاستجابة التالية:
OutputCan't canonicalize "/home/sammy/Maildir"
هذا أمر طبيعي وقد يظهر فقط عند إرسال هذه الرسالة الأولى.
يمكنك التحقق للتأكد من أن المجلد قد تم إنشاؤه عن طريق البحث عن مجلد ~/Maildir
:
سترى أن تم إنشاء هيكل المجلد وأن ملف رسالة جديد موجود في المجلد ~/Maildir/new
:
Output/home/sammy/Maildir/:
cur new tmp
/home/sammy/Maildir/cur:
/home/sammy/Maildir/new:
1650294586.Vfc01I7e11dM993645.mail.example.com
/home/sammy/Maildir/tmp:
الآن بعد أن تم إنشاء هيكل المجلد، أنت جاهز الآن لاختبار عميل s-nail
عن طريق عرض الرسالة init
التي أرسلتها وإرسال رسالة إلى عنوان بريد إلكتروني خارجي.
الخطوة 4 — اختبار العميل
لفتح العميل، قم بتشغيل الأمر s-nail
:
في الوحدة النمطية الخاصة بك، سترى صندوق بريد بسيط مع رسالة init
في انتظار العرض:
Outputs-nail version v14.9.15. Type `?' for help
"/home/sammy/Maildir": 1 message 1 new
>N 1 [email protected] 2022-04-18 15:09 14/452 init
اضغط ENTER
لعرض الرسالة:
Output[-- Message 1 -- 14 lines, 452 bytes --]:
Date: Mon, 18 Apr 2022 15:09:46 +0000
To: [email protected]
Subject: init
Message-Id: <20220418150946.EE6897E11A@@mail.example.com>
From: [email protected]
init
يمكنك العودة إلى قائمة الرسائل عن طريق كتابة h
، ثم ENTER
:
Output>R 1 [email protected] 2022-04-18 15:09 14/452 init
لاحظ أن الرسالة الآن لديها حالة R
، مما يشير إلى أنه تم قراءتها.
نظرًا لأن هذه الرسالة ليست مفيدة جدًا، يمكنك حذفها عن طريق الضغط على d
، ثم ENTER
:
للعودة إلى الطرفية، اكتب q
ثم ENTER
:
كاختبار نهائي، تحقق مما إذا كان s-nail
قادرًا على إرسال رسائل البريد الإلكتروني بشكل صحيح. يمكنك القيام بذلك عن طريق توجيه محتوى ملف نصي إلى عملية s-nail
، مثلما فعلت برسالة init
التي أرسلتها في الخطوة السابقة.
ابدأ بكتابة رسالة اختبار في محرر نصوص:
ضمنها، أدخل بعض النص الذي ترغب في إرساله:
Hello,
This is a test. Please confirm receipt!
احفظ الملف وأغلقه بعد كتابة رسالتك.
ثم، استخدم أمر cat
لتوجيه الرسالة إلى عملية s-nail
. يمكنك القيام بذلك باستخدام المثال التالي، الذي يستخدم هذه الخيارات:
-s
: يحدد سطر الموضوع لرسالة البريد الإلكتروني-r
: تغيير اختياري لحقل “من:” في البريد الإلكتروني. بشكل افتراضي، سيتم استخدام المستخدم في نظام Linux الذي تم تسجيل الدخول به لملء هذا الحقل. الخيار-r
يتيح لك تجاوز ذلك بعنوان صالح، مثل واحدة من تلك التي حددتها في الملف/etc/postfix/virtual
. على سبيل المثال، يستخدم الأمر التالي[email protected]
كما يجب عليك التأكد من تغيير user@email.com
إلى عنوان بريد إلكتروني صالح تمتلك الوصول إليه:
ثم، انتقل إلى صندوق الوارد لعنوان البريد الإلكتروني الذي أرسلت إليه الرسالة. سترى رسالتك في انتظارك هناك تقريبًا فورًا.
ملاحظة: إذا لم تكن الرسالة في صندوق الوارد الخاص بك، فقد تم تسليمها إلى مجلد البريد العشوائي الخاص بك.
يمكنك عرض الرسائل التي تم إرسالها ضمن عميل s-nail
الخاص بك. ابدأ العميل التفاعلي مرة أخرى:
من عميل البريد الإلكتروني، اعرض رسائلك المرسلة عن طريق كتابة:
سترى النتائج مثل هذا:
Output+[/home/sammy/Maildir/]sent: 1 message 1 new
▸N 1 To [email protected] 2022-04-18 15:12 10/211 Test email subject line
يمكنك إدارة البريد المرسل باستخدام نفس الأوامر التي تستخدمها للبريد الوارد.
الختام
لديك الآن Postfix مكون على خادم Ubuntu 22.04 الخاص بك. إدارة خوادم البريد الإلكتروني يمكن أن تكون مهمة صعبة لمسؤولي النظام الجدد، ولكن مع هذا التكوين، يجب أن تكون لديك الوظائف الكافية للبريد الإلكتروني MTA للبدء.