Posthorn: دليل عملي لتركيب بوابة البريد الإلكتروني الذاتية الاستضافة من GitHub
Show HN: Posthorn, self-hosted mail gateway
خريطة الصفحة
اختر القسم الذي تحتاجه الآن
- ما هو Posthorn؟
- من يحتاج Posthorn ومن لا؟
- المميزات الرئيسية
- المتطلبات الأساسية
- طريقة التركيب (Docker)
- شرح ملف .env والإعدادات
- تشغيل Posthorn واختباره
- أخطاء شائعة وحلولها
- استخدامات عملية (مثال: Ghost)
- هل يستحق التجربة؟
- بدائل مشابهة
- أسئلة شائعة (FAQ)
قبل أن تطبق
الفكرة التي تمنع التسرع
تعتقد أن إرسال الإيميلات من تطبيقاتك الذاتية الاستضافة يتطلب إعداد Postfix معقد أو خدمات سحابية مدفوعة؟ Posthorn يقدم حلاً أبسط، لكن هل هو جاهز للإنتاج؟
أسئلة التشخيص السريع
قبل أن تطبق، اعرف أين تقف بالضبط
- هل تواجه مشكلة حظر SMTP من مزود VPS الخاص بك؟
- هل تبحث عن حل خفيف بدلاً من Postfix؟
- هل تفضل استخدام Docker لتقليل التعقيد؟
- هل أنت مستعد لاستخدام مزود بريد خارجي (مثل SendGrid)؟
- هل مشروعك في مرحلة تجريبية أم إنتاجية؟
نظام التشغيل: Input → Process → Output
لوحة قياس النجاح
لا تعتمد على الانطباع؛ اختر مؤشراً تراجعه
إذا كنت تدير تطبيقات على VPS مثل DigitalOcean، فغالباً ما واجهت مشكلة حظر SMTP الافتراضي. مزودو الخدمة يغلقون المنفذ 25 لمنع السبام، مما يمنع تطبيقاتك من إرسال الإيميلات. الحل التقليدي هو إعداد Postfix relay، وهو معقد ويحتاج صيانة. هنا يأتي Posthorn: بوابة بريد إلكتروني ذاتية الاستضافة تعمل كوسيط بين تطبيقاتك ومزود البريد الإلكتروني (مثل SendGrid أو Mailgun). الهدف: تركيب واحد، ثم توجيه جميع تطبيقاتك إليه.
في هذا الدليل، سنشرح ما هو Posthorn، لمن يناسب، وكيف تثبته باستخدام Docker أو Go binary، مع أمثلة عملية وأخطاء شائعة. README غير واضح، لذا سنعتمد على بنية المشروع لتقديم خطوات تقريبية.
ما هو Posthorn؟
Posthorn هو بوابة بريد إلكتروني (email gateway) مفتوحة المصدر، مكتوبة بلغة Go. يستقبل طلبات SMTP من تطبيقاتك الذاتية الاستضافة ويعيد توجيهها إلى مزود بريد إلكتروني خارجي عبر API. الفكرة: بدلاً من تكوين SMTP في كل تطبيق، توجه الجميع إلى Posthorn، وهو يتولى التوجيه. يدعم Docker و Go binary. المشروع جديد ولم ينضج بعد، لكنه واعد.
من يحتاج Posthorn ومن لا؟
يناسب: مطور يدير تطبيقات على VPS (مثل Ghost، WordPress، Node.js) ويحتاج إرسال إيميلات تأكيد أو إشعارات. يريد حلاً خفيفاً بدلاً من Postfix. لا يريد التعقيد.
لا يناسب: مشاريع إنتاجية كبيرة تحتاج موثوقية عالية. من يريد استقبال إيميلات (Posthorn للإرسال فقط). من لا يريد الاعتماد على مزود خارجي.
المميزات الرئيسية
- حاوية Docker واحدة أو ملف Go ثنائي.
- يعمل مع أي مزود بريد إلكتروني يدعم API (SendGrid، Mailgun، إلخ).
- خفيف وسهل الإعداد.
- مفتوح المصدر (رخصة غير محددة).
المتطلبات الأساسية
- VPS (مثل DigitalOcean، Linode) أو أي سيرفر.
- Docker مثبت (لطريقة Docker) أو Go (لطريقة binary).
- حساب في مزود بريد إلكتروني (مثل SendGrid) مع API key.
- معرفة أساسية بملفات .env و SMTP.
طريقة التركيب (Docker)
الخطوات تقريبية لأن README غير واضح. بناءً على بنية المشروع، نفترض أن الحاوية متاحة على Docker Hub أو يمكن بناؤها.
- سحب الصورة:
docker pull craigmccaskill/posthorn(قد لا تكون متاحة؛ قد تحتاج بناء الصورة من المصدر). - إنشاء ملف
.envبالإعدادات (انظر القسم التالي). - تشغيل الحاوية:
docker run -d --name posthorn -p 25:25 --env-file .env craigmccaskill/posthorn
ملاحظة: المنفذ 25 قد يكون محظوراً من مزود VPS؛ قد تحتاج منفذاً آخر.
شرح ملف .env والإعدادات
نموذج ملف .env (افتراضي):
SMTP_PORT=25
FORWARDER_API_KEY=your_sendgrid_api_key
FORWARDER_FROM=no-reply@example.com
FORWARDER_PROVIDER=sendgrid
SMTP_PORT: المنفذ الذي يستمع عليه Posthorn (قد تحتاج 2525 إذا كان 25 محظوراً).
FORWARDER_API_KEY: مفتاح API من مزود البريد.
FORWARDER_FROM: عنوان البريد الإلكتروني للمرسل.
FORWARDER_PROVIDER: اسم المزود (sendgrid, mailgun, إلخ).
تشغيل Posthorn واختباره
بعد تشغيل الحاوية، اختبر باستخدام telnet أو أداة SMTP:
telnet your-server-ip 25
EHLO test
MAIL FROM:
RCPT TO:
DATA
Subject: Test
This is a test.
.
QUIT
إذا نجح، سترى رد 250. تحقق من سجلات الحاوية: docker logs posthorn.
أخطاء شائعة وحلولها
استخدامات عملية (مثال: Ghost)
في Ghost CMS، اذهب إلى الإعدادات > Mail، واختر SMTP. أدخل:
Host: عنوان سيرفر Posthorn
Port: 25 (أو 2525)
User: فارغ
Pass: فارغ
Protocol: SMTP
بعد الحفظ، أرسل إيميل اختبار.
هل يستحق التجربة؟
نعم، إذا كنت تبحث عن حل خفيف وسريع لمشكلة حظر SMTP. لكنه مشروع جديد، غير ناضج، وقد يحتوي على أخطاء. لا تعتمد عليه في الإنتاج دون اختبار.
بدائل مشابهة
أسئلة شائعة (FAQ)
هل Posthorn مناسب للمشاريع الإنتاجية؟
ليس بعد؛ المشروع جديد ولم يختبر بشكل كاف.
ما الفرق بين Posthorn و Postfix؟
Postfix خادم بريد كامل، Posthorn مجرد بوابة تعيد التوجيه لمزود خارجي.
هل يدعم Posthorn SMTP authentication؟
غير واضح من README؛ قد لا يدعم.
كيف أختبر أن Posthorn يعمل بشكل صحيح؟
أرسل إيميل اختبار باستخدام telnet أو من تطبيق.
هل يمكن استخدام Posthorn مع مزودي VPS آخرين؟
نعم، طالما يمكنك تشغيل Docker.
ما هي حدود Posthorn؟
يعتمد على مزود خارجي؛ قد يكون له حدود إرسال.
هل Posthorn مجاني تماماً؟
نعم، مفتوح المصدر، لكنك تدفع لمزود البريد.
كيف أؤمن Posthorn ضد الاستخدام غير المصرح به؟
استخدم جدار ناري لتقييد الوصول للمنفذ من تطبيقاتك فقط.
Playbook التطبيق
خطوات عملية مرتبة من التشخيص إلى النتيجة
تثبيت Docker على VPS
لماذا؟ Posthorn يعمل كحاوية Docker.
كيف؟ اتبع دليل تثبيت Docker على Ubuntu: sudo apt update && sudo apt install docker.io
الناتج: Docker مثبت وجاهز.
الحصول على API key من مزود البريد
لماذا؟ Posthorn يحتاج مفتاح API لإعادة التوجيه.
كيف؟ سجل في SendGrid، اذهب إلى Settings > API Keys، أنشئ مفتاحاً.
الناتج: API key جاهز.
إنشاء ملف .env
لماذا؟ يحتوي على إعدادات Posthorn.
كيف؟ انسخ النموذج أعلاه وعدّل القيم.
الناتج: ملف .env جاهز.
تشغيل حاوية Posthorn
لماذا؟ لبدء الخدمة.
كيف؟ استخدم أمر docker run مع --env-file.
الناتج: الحاوية تعمل.
توجيه تطبيقك إلى Posthorn
لماذا؟ لتتمكن من إرسال الإيميلات عبر Posthorn.
كيف؟ عدّل إعدادات SMTP في تطبيقك (مثل Ghost) لاستخدام عنوان VPS والمنفذ.
الناتج: التطبيق يرسل عبر Posthorn.
اختبار الإرسال
لماذا؟ للتأكد من أن كل شيء يعمل.
كيف؟ أرسل إيميل اختبار من التطبيق أو باستخدام telnet.
الناتج: إيميل اختبار يصل.
قوالب جاهزة للنسخ
حوّل القراءة إلى تنفيذ سريع
SMTP_PORT=2525 FORWARDER_API_KEY=your_sendgrid_api_key FORWARDER_FROM=no-reply@example.com FORWARDER_PROVIDER=sendgrid
docker run -d --name posthorn -p 2525:2525 --env-file .env craigmccaskill/posthorn
مصفوفة الأخطاء
اعرف أين يتعثر الناس وكيف تتجنب ذلك
شجرة القرار
ماذا تفعل حسب حالتك؟
إذا: هل تريد حلاً بسيطاً وسريعاً؟
إذن: استخدم Posthorn.
إذا: هل تحتاج موثوقية إنتاجية؟
إذن: استخدم Postfix أو خدمة سحابية.
إذا: هل تفضل عدم الاعتماد على مزود خارجي؟
إذن: استخدم Postfix مع خادم بريد كامل.
إذا: هل مشروعك تجريبي؟
إذن: Posthorn مناسب للتجربة.
خطة تطبيق 7 أيام
جدول صغير يمنع التسويف
- اليوم 1: تثبيت Docker والحصول على API key.
- اليوم 2: إنشاء ملف .env وتشغيل Posthorn.
- اليوم 3: توجيه تطبيق واحد (مثل Ghost) واختبار الإرسال.
- اليوم 4: مراقبة السجلات وحل أي أخطاء.
- اليوم 5: توجيه تطبيق ثانٍ.
- اليوم 6: اختبار تحت حمل خفيف.
- اليوم 7: تقييم الأداء واتخاذ قرار الاستمرار.
حقائق سريعة تحفظها
نقاط مختصرة ترجع لها لاحقاً
1. Posthorn مكتوب بلغة Go.
2. يعمل كحاوية Docker واحدة.
3. لا يدعم استقبال الإيميلات.
4. المشروع جديد (0 نجوم، 0 forks).
5. README غير واضح، الخطوات تقريبية.
أسئلة شائعة
إجابات مباشرة على ما يبحث عنه الزائر
مصطلحات سريعة
تعريفات مختصرة تمنع الالتباس
بروتوكول إرسال البريد البسيط.
سيرفر افتراضي خاص.
مفتاح واجهة برمجة التطبيقات.
منصة لإدارة الحاويات.
بوابة تربط بين نظامين.
أسئلة مرتبطة يبحث عنها الناس
استخدمها كمسارات متابعة داخل نفس الموضوع
لماذا هذا المرجع يتجاوز الموضوع نفسه؟
تحول القارئ: من مطور يعاني من حظر SMTP ويبحث عن حلول معقدة، إلى مطور يستخدم Posthorn كحل خفيف وسريع.
- أمن الخوادم: تأمين Posthorn ضد الاختراق.
- DevOps: استخدام Docker Compose مع Posthorn.
- تطوير الويب: دمج Posthorn مع Node.js.
كيف تستخدم هذا المرجع لاحقاً؟
القيمة الحقيقية تظهر عند العودة والتطبيق
لا تتعامل معه كمقال يُقرأ مرة واحدة. استخدمه كلوحة تشغيل: ارجع للتشخيص عند ظهور المشكلة، وللقوالب عند التطبيق، ولمؤشرات القياس عند المراجعة.
Posthorn أداة واعدة تحل مشكلة حظر SMTP ببساطة. لكنها لا تزال في مراحلها الأولى. استخدمها للتجربة والمشاريع الصغيرة، وراقب تطورها. إذا كنت تحتاج موثوقية، اختر بديلاً ناضجاً. جربها الآن، وشارك تجربتك.
خطة تحديث هذا الدليل
حتى يبقى المرجع صالحاً مع الوقت
- عند إصدار تحديثات للمشروع، راجع README وحدّث الخطوات.
- عند زيادة النجوم، أعد تقييم النضج.
- عند ظهور بدائل أفضل، أضف مقارنة.

التعليقات (0)
لا توجد تعليقات بعد. كن أول من يبدأ النقاش 👇