استضافة ذاتية
تثبيت
متطلبات
قبل تشغيل البرنامج النصي للتثبيت، تأكد من أن لديك ما يلي:
- نظام التشغيل:خادم يعتمد على Linux (على سبيل المثال Ubuntu 22.04+).
- مصادر: 1 وحدة معالجة مركزية افتراضية و2 جيجابايت من ذاكرة الوصول العشوائي
- الوصول إلى الجذر:امتيازات إدارية لتنفيذ الأوامر.
- اسم النطاق:مجال مخصص جاهز لتكوين DNS.
- عنوان IP نظيفتأكد من أن عنوان IP لخادمك نظيف وخالٍ من أي رسائل بريد عشوائي سابقة، وذلك من خلال مراجعة القوائم السوداء. لمزيد من المعلومات. هنا.
[!TIP] اطلع على قائمتنا مزودي خدمة البريد الإلكتروني الرائعين
Cloud-init / بيانات المستخدم
يدعم معظم مزودي الخدمات السحابية تهيئة cloud-init عند تجهيز الخادم الافتراضي الخاص (VPS). تُعد هذه طريقة رائعة لضبط بعض الملفات ومتغيرات البيئة مسبقًا لاستخدامها في منطق الإعداد الأولي للنصوص البرمجية، مما يُغني عن طلب معلومات إضافية أثناء تشغيل النص البرمجي.
خيارات
EMAIL
-EMAIL
متغير البيئة المستخدم لتذكيرات انتهاء صلاحية certbotDOMAIN
- المجال المخصص المستخدم لإعداد الاستضافة الذاتية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 | واجهة ويب لجميع تفاعلات الإدارة |
API | 4000 | طبقة API لتجريد قواعد البيانات |
بري | لا أحد | وظيفة الخلفية ومشغل المهام |
SMTP | 465/587 | خادم SMTP للبريد الإلكتروني الصادر |
SMTP بري | لا أحد | وظيفة خلفية SMTP |
MX | 2525 | تبادل البريد للبريد الإلكتروني الوارد وإعادة توجيه البريد الإلكتروني |
IMAP | 993/2993 | خادم IMAP لإدارة البريد الإلكتروني الوارد وصندوق البريد |
POP3 | 995/2995 | خادم POP3 لإدارة البريد الإلكتروني الوارد وصندوق البريد |
سكليتي | 3456 | خادم SQLite للتفاعلات مع قواعد بيانات sqlite |
SQLite بري | لا أحد | وظيفة خلفية SQLite |
كالداف | 5000 | خادم CalDAV لإدارة التقويم |
مونجو دي بي | 27017 | قاعدة بيانات MongoDB لإدارة معظم البيانات |
ريديس | 6379 | Redis للتخزين المؤقت وإدارة الحالة |
سكليتي | لا أحد | قاعدة بيانات 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 | ارتدادات في | <اسم_النطاق> | آلي |
CNAME | IMAP | <اسم_النطاق> | آلي |
CNAME | مكس | <اسم_النطاق> | آلي |
CNAME | بوب 3 | <اسم_النطاق> | آلي |
CNAME | بروتوكول نقل البريد الإلكتروني | <اسم_النطاق> | آلي |
MX | "@" أو "." أو فارغ | mx.<domain_name> (الأولوية 0) | آلي |
TXT | "@" أو "." أو فارغ | "v=spf1 a -الكل" | آلي |
سجل DNS / PTR العكسي
يُعدّ نظام DNS العكسي (rDNS) أو سجلات المؤشر العكسي (PTR) أساسيًا لخوادم البريد الإلكتروني، إذ يُساعدان في التحقق من صحة الخادم المُرسِل للبريد الإلكتروني. يختلف أسلوب كل مُزوّد خدمة سحابية في هذا الشأن، لذا ستحتاج إلى البحث عن كيفية إضافة "نظام DNS العكسي" لربط المُضيف وعنوان IP باسم المُضيف المُقابل. غالبًا ما تجد ذلك في قسم الشبكات لدى المُزوّد.
تم حظر المنفذ 25
يحظر بعض مزودي خدمة الإنترنت وموفري الخدمات السحابية المنفذ ٢٥ لتجنب أي محاولات اختراق. قد تحتاج إلى تقديم طلب دعم لفتح المنفذ ٢٥ لـ SMTP/البريد الإلكتروني الصادر.
التوجيه
-
افتح صفحة الوصول انتقل إلى https://<domain_name>، مع استبدال <domain_name> بالنطاق المُهيأ في إعدادات DNS. ستظهر لك صفحة إعادة توجيه البريد الإلكتروني.
-
تسجيل الدخول وإضافة المجال الخاص بك
- قم بتسجيل الدخول باستخدام بريد إلكتروني وكلمة مرور صالحين.
- أدخل اسم النطاق الذي ترغب في إعداده (يجب أن يتطابق مع تكوين DNS).
- اتبع التعليمات لإضافة المطلوب MX و TXT السجلات للتحقق.
- أكمل الإعداد
- بمجرد التحقق، قم بالوصول إلى صفحة الأسماء المستعارة لإنشاء الاسم المستعار الأول الخاص بك.
- اختياريا، قم بتكوين SMTP للبريد الإلكتروني الصادر في ال إعدادات النطاق. يتطلب هذا سجلات DNS إضافية.
[ملاحظة!] لا يتم إرسال أي معلومات خارج خادمك. خيار الاستضافة الذاتية والحساب الأولي مخصصان فقط لتسجيل دخول المسؤول وعرض الويب لإدارة النطاقات والأسماء المستعارة وتكوينات البريد الإلكتروني ذات الصلة.
الاختبار
إنشاء الاسم المستعار الأول الخاص بك
- انتقل إلى صفحة الأسماء المستعارة افتح صفحة إدارة الأسماء المستعارة:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
- إضافة اسم مستعار جديد
- انقر أضف اسم مستعار (أعلى اليمين).
- أدخل اسم مستعار وقم بتعديل إعدادات البريد الإلكتروني حسب الحاجة.
- (اختياري) تمكين IMAP/POP3/CalDAV الدعم عن طريق تحديد مربع الاختيار.
- انقر إنشاء اسم مستعار.
- تعيين كلمة مرور
- انقر إنشاء كلمة المرور لإنشاء كلمة مرور آمنة.
- ستكون هذه كلمة المرور مطلوبة لتسجيل الدخول إلى عميل البريد الإلكتروني الخاص بك.
- تكوين عميل البريد الإلكتروني الخاص بك
- استخدم عميل البريد الإلكتروني مثل Thunderbird.
- أدخل اسم مستعار وكلمة المرور التي تم إنشاؤها.
- تكوين IMAP و SMTP الإعدادات وفقا لذلك.
إعدادات خادم البريد الإلكتروني
اسم المستخدم: <alias name>
نوع | اسم المضيف | ميناء | أمان الاتصال | المصادقة |
---|---|---|---|---|
SMTP | smtp.<اسم_النطاق> | 465 | SSL / TLS | كلمة المرور العادية |
IMAP | imap.<اسم_النطاق> | 993 | SSL / 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
ألق نظرة على الأسئلة الشائعة هنا.
استخدم عنوان IP الخاص بخادمك للتحقق من المواقع التالية للتأكد من عدم وجودها في القائمة السوداء. للأسف، ليس من النادر أن يواجه مزودو الخدمات السحابية مشاكل في سمعة IP بسبب استخدام البريد العشوائي. إذا وجدت عنوان IP الخاص بك في القائمة السوداء، يُنصح بتشغيل خادم جديد والتحقق من عنوان IP الجديد.