استضافة ذاتية

متطلبات

قبل تشغيل البرنامج النصي للتثبيت، تأكد من أن لديك ما يلي:

  • نظام التشغيل:خادم يعتمد على Linux (على سبيل المثال Ubuntu 22.04+).
  • مصادر: 1 وحدة معالجة مركزية افتراضية و2 جيجابايت من ذاكرة الوصول العشوائي
  • الوصول إلى الجذر:امتيازات إدارية لتنفيذ الأوامر.
  • اسم النطاق:مجال مخصص جاهز لتكوين DNS.
  • عنوان IP نظيفتأكد من أن عنوان IP لخادمك نظيف وخالٍ من أي رسائل بريد عشوائي سابقة، وذلك من خلال مراجعة القوائم السوداء. لمزيد من المعلومات. هنا.

[!TIP] اطلع على قائمتنا مزودي خدمة البريد الإلكتروني الرائعين

Cloud-init / بيانات المستخدم

يدعم معظم مزودي الخدمات السحابية تهيئة cloud-init عند تجهيز الخادم الافتراضي الخاص (VPS). تُعد هذه طريقة رائعة لضبط بعض الملفات ومتغيرات البيئة مسبقًا لاستخدامها في منطق الإعداد الأولي للنصوص البرمجية، مما يُغني عن طلب معلومات إضافية أثناء تشغيل النص البرمجي.

خيارات

  • EMAIL - EMAIL متغير البيئة المستخدم لتذكيرات انتهاء صلاحية certbot
  • DOMAIN - المجال المخصص المستخدم لإعداد الاستضافة الذاتية
  • AUTH_BASIC_USERNAME - اسم المستخدم المستخدم في الإعداد الأول لحماية الموقع
  • AUTH_BASIC_PASSWORD - تم استخدام كلمة المرور في الإعداد الأول لحماية الموقع
  • /root/.cloudflare.ini - (مستخدمو Cloudflare فقطملف تكوين cloudflare الذي يستخدمه certbot لتكوين DNS. يتطلب منك تعيين رمز API الخاص بك عبر dns_cloudflare_api_token. اقرأ المزيد هنا.

مثال:

#cloud-config
write_files:
  - path: /root/.cloudflare.ini
    content: |
      dns_cloudflare_api_token = "xxx"
    owner: root:root
    permissions: '0600'
  - path: /etc/profile.d/env.sh
    content: |
      export EMAIL="test@myemail.com"
      export DOMAIN="mydomain.com"

runcmd:

  • chmod +x /etc/profile.d/env.sh

ثَبَّتَ

قم بتشغيل الأمر التالي على الخادم الخاص بك لتنزيل البرنامج النصي للتثبيت وتنفيذه:

bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)

نص تثبيت التصحيح

أضف DEBUG=true أمام البرنامج النصي للتثبيت للحصول على إخراج مفصل:

DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)

المطالبات

1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
  • الإعداد الأولي:قم بتنزيل أحدث رمز بريد إلكتروني للأمام، وقم بتكوين البيئة، والمطالبة بنطاقك المخصص وإعداد جميع الشهادات والمفاتيح والأسرار الضرورية.
  • إعداد النسخ الاحتياطيسيتم إعداد مهمة كرون لنسخ احتياطي لـ MongoDB وRedis باستخدام مخزن متوافق مع S3 للتخزين الآمن عن بُعد. بشكل منفصل، سيتم نسخ SQLite احتياطيًا عند تسجيل الدخول في حال وجود أي تغييرات على النسخ الاحتياطية الآمنة والمشفرة.
  • إعداد الترقية:إعداد cron للبحث عن التحديثات الليلية والتي ستعمل على إعادة بناء مكونات البنية الأساسية وإعادة تشغيلها بشكل آمن.
  • تجديد الشهاداتيُستخدم Certbot / lets encrypt لشهادات SSL، وتنتهي صلاحية مفاتيحه كل 3 أشهر. سيؤدي هذا إلى تجديد شهادات نطاقك ووضعها في المجلد المطلوب لاستخدام المكونات ذات الصلة. انظر مسارات الملفات المهمة
  • استعادة من النسخة الاحتياطية:سيؤدي ذلك إلى تشغيل mongodb و redis لاستعادة البيانات من النسخ الاحتياطي.

الإعداد الأولي (الخيار 1)

اختر الخيار 1. Initial setup للبدء.

بمجرد اكتمال العملية، ستظهر لك رسالة نجاح. يمكنك أيضًا تشغيل docker ps لترى ال تم تشغيل المكونات. مزيد من المعلومات حول المكونات أدناه.

خدمات

اسم الخدمةالمنفذ الافتراضيوصف
الويب443واجهة ويب لجميع تفاعلات الإدارة
API4000طبقة API لتجريد قواعد البيانات
بريلا أحدوظيفة الخلفية ومشغل المهام
SMTP465/587خادم SMTP للبريد الإلكتروني الصادر
SMTP بريلا أحدوظيفة خلفية SMTP
MX2525تبادل البريد للبريد الإلكتروني الوارد وإعادة توجيه البريد الإلكتروني
IMAP993/2993خادم IMAP لإدارة البريد الإلكتروني الوارد وصندوق البريد
POP3995/2995خادم POP3 لإدارة البريد الإلكتروني الوارد وصندوق البريد
سكليتي3456خادم SQLite للتفاعلات مع قواعد بيانات sqlite
SQLite بريلا أحدوظيفة خلفية SQLite
كالداف5000خادم CalDAV لإدارة التقويم
مونجو دي بي27017قاعدة بيانات MongoDB لإدارة معظم البيانات
ريديس6379Redis للتخزين المؤقت وإدارة الحالة
سكليتيلا أحدقاعدة بيانات SQLite لصناديق البريد المشفرة

مسارات الملفات الهامة

ملحوظة: مسار المضيف فيما يلي نسبة إلى /root/forwardemail.net/self-hosting/.

عنصرمسار المضيفمسار الحاوية
مونجو دي بي./mongo-backups/backups
ريديس./redis-data/data
سكليت./sqlite-data/mnt/{SQLITE_STORAGE_PATH}
ملف البيئة./.env/app/.env
شهادات/مفاتيح SSL./ssl/app/ssl/
مفتاح خاص./ssl/privkey.pem/app/ssl/privkey.pem
شهادة السلسلة الكاملة./ssl/fullchain.pem/app/ssl/fullchain.pem
السلطات التصديق المعتمدة./ssl/cert.pem/app/ssl/cert.pem
مفتاح DKIM الخاص./ssl/dkim.key/app/ssl/dkim.key

[!هام] احفظ .env ملفك بأمان. هذا ضروري لاستعادته في حال حدوث عطل.

يمكنك العثور على هذا في /root/forwardemail.net/self-hosting/.env.

إعدادات

إعداد DNS الأولي

في مزوّد DNS الذي تختاره، قم بتكوين سجلات DNS المناسبة. لاحظ أي شيء بين قوسين (<>) ديناميكية وتحتاج إلى التحديث بقيمتك.

نوعاسممحتوىTTL
A"@" أو "." أو فارغ<عنوان IP>آلي
CNAMEواجهة برمجة التطبيقات<اسم_النطاق>آلي
CNAMEكالداف<اسم_النطاق>آلي
CNAMEارتدادات في<اسم_النطاق>آلي
CNAMEIMAP<اسم_النطاق>آلي
CNAMEمكس<اسم_النطاق>آلي
CNAMEبوب 3<اسم_النطاق>آلي
CNAMEبروتوكول نقل البريد الإلكتروني<اسم_النطاق>آلي
MX"@" أو "." أو فارغmx.<domain_name> (الأولوية 0)آلي
TXT"@" أو "." أو فارغ"v=spf1 a -الكل"آلي
سجل DNS / PTR العكسي

يُعدّ نظام DNS العكسي (rDNS) أو سجلات المؤشر العكسي (PTR) أساسيًا لخوادم البريد الإلكتروني، إذ يُساعدان في التحقق من صحة الخادم المُرسِل للبريد الإلكتروني. يختلف أسلوب كل مُزوّد خدمة سحابية في هذا الشأن، لذا ستحتاج إلى البحث عن كيفية إضافة "نظام DNS العكسي" لربط المُضيف وعنوان IP باسم المُضيف المُقابل. غالبًا ما تجد ذلك في قسم الشبكات لدى المُزوّد.

تم حظر المنفذ 25

يحظر بعض مزودي خدمة الإنترنت وموفري الخدمات السحابية المنفذ ٢٥ لتجنب أي محاولات اختراق. قد تحتاج إلى تقديم طلب دعم لفتح المنفذ ٢٥ لـ SMTP/البريد الإلكتروني الصادر.

التوجيه

  1. افتح صفحة الوصول انتقل إلى https://<domain_name>، مع استبدال <domain_name> بالنطاق المُهيأ في إعدادات DNS. ستظهر لك صفحة إعادة توجيه البريد الإلكتروني.

  2. تسجيل الدخول وإضافة المجال الخاص بك

  • قم بتسجيل الدخول باستخدام بريد إلكتروني وكلمة مرور صالحين.
  • أدخل اسم النطاق الذي ترغب في إعداده (يجب أن يتطابق مع تكوين DNS).
  • اتبع التعليمات لإضافة المطلوب MX و TXT السجلات للتحقق.
  1. أكمل الإعداد
  • بمجرد التحقق، قم بالوصول إلى صفحة الأسماء المستعارة لإنشاء الاسم المستعار الأول الخاص بك.
  • اختياريا، قم بتكوين SMTP للبريد الإلكتروني الصادر في ال إعدادات النطاق. يتطلب هذا سجلات DNS إضافية.

[ملاحظة!] لا يتم إرسال أي معلومات خارج خادمك. خيار الاستضافة الذاتية والحساب الأولي مخصصان فقط لتسجيل دخول المسؤول وعرض الويب لإدارة النطاقات والأسماء المستعارة وتكوينات البريد الإلكتروني ذات الصلة.

الاختبار

إنشاء الاسم المستعار الأول الخاص بك

  1. انتقل إلى صفحة الأسماء المستعارة افتح صفحة إدارة الأسماء المستعارة:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
  1. إضافة اسم مستعار جديد
  • انقر أضف اسم مستعار (أعلى اليمين).
  • أدخل اسم مستعار وقم بتعديل إعدادات البريد الإلكتروني حسب الحاجة.
  • (اختياري) تمكين IMAP/POP3/CalDAV الدعم عن طريق تحديد مربع الاختيار.
  • انقر إنشاء اسم مستعار.
  1. تعيين كلمة مرور
  • انقر إنشاء كلمة المرور لإنشاء كلمة مرور آمنة.
  • ستكون هذه كلمة المرور مطلوبة لتسجيل الدخول إلى عميل البريد الإلكتروني الخاص بك.
  1. تكوين عميل البريد الإلكتروني الخاص بك
  • استخدم عميل البريد الإلكتروني مثل Thunderbird.
  • أدخل اسم مستعار وكلمة المرور التي تم إنشاؤها.
  • تكوين IMAP و SMTP الإعدادات وفقا لذلك.
إعدادات خادم البريد الإلكتروني

اسم المستخدم: <alias name>

نوعاسم المضيفميناءأمان الاتصالالمصادقة
SMTPsmtp.<اسم_النطاق>465SSL / TLSكلمة المرور العادية
IMAPimap.<اسم_النطاق>993SSL / TLSكلمة المرور العادية

إرسال/استلام بريدك الإلكتروني الأول

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

صيانة

How do I backup my data

اتبع تثبيت البرنامج النصي و اختار option 2 في المطالبة.

How do I renew my certificates

اتبع تثبيت البرنامج النصي و اختار option 3 في المطالبة.

How do I upgrade to the latest forward email code

اتبع تثبيت البرنامج النصي و اختار option 4 في المطالبة.

How do I restore from a backup

اتبع تثبيت البرنامج النصي و اختار option 6 في المطالبة.

استكشاف الأخطاء وإصلاحها

Why is the certbot acme challenge failing

الفخ الأكثر شيوعًا هو أن certbot / letsencrypt سيطلب أحيانًا 2 التحديات. عليك التأكد من إضافة BOTH سجلات txt.

مثال: قد ترى تحديين كالتالي: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"

من الممكن أيضًا ألا يكتمل انتشار DNS. يمكنك استخدام أدوات مثل: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>سيمنحك هذا فكرةً عمّا إذا كان ينبغي أن تنعكس تغييرات سجل TXT. من المحتمل أيضًا أن ذاكرة التخزين المؤقت المحلية لنظام أسماء النطاقات (DNS) على جهازك المضيف لا تزال تستخدم قيمةً قديمةً أو لم تلتقط التغييرات الأخيرة.

خيار آخر هو استخدام تغييرات DNS التلقائية لـ Cerbot عن طريق ضبط /root/.cloudflare.ini ملف يحتوي على رمز واجهة برمجة التطبيقات في ملف cloud-init / user-data عند إعداد VPS الأولي، أو أنشئ هذا الملف وشغّل البرنامج النصي مرة أخرى. سيؤدي هذا إلى إدارة تغييرات DNS وتحديثات التحدي تلقائيًا.

What is the basic auth username and password

بالنسبة للاستضافة الذاتية، نضيف نافذة منبثقة للمصادقة الأصلية للمتصفح لأول مرة باستخدام اسم مستخدم بسيط (admin) وكلمة مرور (يتم توليدها عشوائيًا عند الإعداد الأولي). نضيف هذا فقط كحماية في حال تفوقت عليك الأتمتة/البرمجيات الكاشطة في التسجيل على تجربة الويب. يمكنك العثور على كلمة المرور هذه بعد الإعداد الأولي في .env ملف تحت AUTH_BASIC_USERNAME و AUTH_BASIC_PASSWORD.

How do I know what is running

يمكنك الجري docker ps لرؤية جميع الحاويات الجارية التي يتم تشغيلها من docker-compose-self-hosting.yml الملف. يمكنك أيضًا تشغيل docker ps -a لرؤية كل شيء (بما في ذلك الحاويات التي لا تعمل).

How do I know if something isn't running that should be

يمكنك الجري docker ps -a لرؤية كل شيء (بما في ذلك الحاويات التي لا تعمل). قد ترى سجل خروج أو ملاحظة.

How do I find logs

يمكنك الحصول على المزيد من السجلات عبر docker logs -f <container_name>إذا خرج أي شيء، فمن المحتمل أن يكون مرتبطًا بـ .env تم تكوين الملف بشكل غير صحيح.

داخل واجهة المستخدم على الويب، يمكنك عرض /admin/emails و /admin/logs لسجلات البريد الإلكتروني الصادر وسجلات الأخطاء على التوالي.

Why are my outgoing emails timing out

إذا ظهرت لك رسالة مثل "انتهت مهلة الاتصال" عند الاتصال بخادم MX...، فقد تحتاج إلى التحقق مما إذا كان المنفذ 25 محظورًا. من الشائع أن يقوم مزودو خدمة الإنترنت أو مزودو الخدمات السحابية بحظر هذا بشكل افتراضي، وقد تحتاج إلى التواصل مع الدعم أو تقديم تذكرة لحل هذه المشكلة.

What tool(s) should I use to test email configuration best practices and IP reputation

ألق نظرة على الأسئلة الشائعة هنا.

صندوق أدوات mx

أدوات مدير البريد من جوجل

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

سبامهاوس

تم إرسالها بشكل عشوائي