Reference OS v8 5 دقائق قراءة ٢٩ مايو ٢٠٢٦ يبحث المطور العربي عن حل لمشكلة حظر SMTP في التطبيقات الذاتية الاستضافة، ويريد دليلاً عملياً لتجربة Posthorn Posthorn: دليل عملي لتركيب بوابة البريد…

Show HN: Posthorn, self-hosted mail gateway
اختر القسم الذي تحتاجه الآن
الفكرة التي تمنع التسرع
تعتقد أن إرسال الإيميلات من تطبيقاتك الذاتية الاستضافة يتطلب إعداد Postfix معقد أو خدمات سحابية مدفوعة؟ Posthorn يقدم حلاً أبسط، لكن هل هو جاهز للإنتاج؟
قبل أن تطبق، اعرف أين تقف بالضبط
لا تعتمد على الانطباع؛ اختر مؤشراً تراجعه
إذا كنت تدير تطبيقات على VPS مثل DigitalOcean، فغالباً ما واجهت مشكلة حظر SMTP الافتراضي. مزودو الخدمة يغلقون المنفذ 25 لمنع السبام، مما يمنع تطبيقاتك من إرسال الإيميلات. الحل التقليدي هو إعداد Postfix relay، وهو معقد ويحتاج صيانة. هنا يأتي Posthorn: بوابة بريد إلكتروني ذاتية الاستضافة تعمل كوسيط بين تطبيقاتك ومزود البريد الإلكتروني (مثل SendGrid أو Mailgun). الهدف: تركيب واحد، ثم توجيه جميع تطبيقاتك إليه.
في هذا الدليل، سنشرح ما هو Posthorn، لمن يناسب، وكيف تثبته باستخدام Docker أو Go binary، مع أمثلة عملية وأخطاء شائعة. README غير واضح، لذا سنعتمد على بنية المشروع لتقديم خطوات تقريبية.
Posthorn هو بوابة بريد إلكتروني (email gateway) مفتوحة المصدر، مكتوبة بلغة Go. يستقبل طلبات SMTP من تطبيقاتك الذاتية الاستضافة ويعيد توجيهها إلى مزود بريد إلكتروني خارجي عبر API. الفكرة: بدلاً من تكوين SMTP في كل تطبيق، توجه الجميع إلى Posthorn، وهو يتولى التوجيه. يدعم Docker و Go binary. المشروع جديد ولم ينضج بعد، لكنه واعد.
يناسب: مطور يدير تطبيقات على VPS (مثل Ghost، WordPress، Node.js) ويحتاج إرسال إيميلات تأكيد أو إشعارات. يريد حلاً خفيفاً بدلاً من Postfix. لا يريد التعقيد.
لا يناسب: مشاريع إنتاجية كبيرة تحتاج موثوقية عالية. من يريد استقبال إيميلات (Posthorn للإرسال فقط). من لا يريد الاعتماد على مزود خارجي.
الخطوات تقريبية لأن README غير واضح. بناءً على بنية المشروع، نفترض أن الحاوية متاحة على Docker Hub أو يمكن بناؤها.
docker pull craigmccaskill/posthorn (قد لا تكون متاحة؛ قد تحتاج بناء الصورة من المصدر)..env بالإعدادات (انظر القسم التالي).docker run -d --name posthorn -p 25:25 --env-file .env craigmccaskill/posthornنموذج ملف .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, إلخ).
بعد تشغيل الحاوية، اختبر باستخدام 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 CMS، اذهب إلى الإعدادات > Mail، واختر SMTP. أدخل:
Host: عنوان سيرفر Posthorn
Port: 25 (أو 2525)
User: فارغ
Pass: فارغ
Protocol: SMTP
بعد الحفظ، أرسل إيميل اختبار.
نعم، إذا كنت تبحث عن حل خفيف وسريع لمشكلة حظر SMTP. لكنه مشروع جديد، غير ناضج، وقد يحتوي على أخطاء. لا تعتمد عليه في الإنتاج دون اختبار.
ليس بعد؛ المشروع جديد ولم يختبر بشكل كاف.
Postfix خادم بريد كامل، Posthorn مجرد بوابة تعيد التوجيه لمزود خارجي.
غير واضح من README؛ قد لا يدعم.
أرسل إيميل اختبار باستخدام telnet أو من تطبيق.
نعم، طالما يمكنك تشغيل Docker.
يعتمد على مزود خارجي؛ قد يكون له حدود إرسال.
نعم، مفتوح المصدر، لكنك تدفع لمزود البريد.
استخدم جدار ناري لتقييد الوصول للمنفذ من تطبيقاتك فقط.
خطوات عملية مرتبة من التشخيص إلى النتيجة
لماذا؟ Posthorn يعمل كحاوية Docker.
كيف؟ اتبع دليل تثبيت Docker على Ubuntu: sudo apt update && sudo apt install docker.io
الناتج: Docker مثبت وجاهز.
لماذا؟ Posthorn يحتاج مفتاح API لإعادة التوجيه.
كيف؟ سجل في SendGrid، اذهب إلى Settings > API Keys، أنشئ مفتاحاً.
الناتج: API key جاهز.
لماذا؟ يحتوي على إعدادات Posthorn.
كيف؟ انسخ النموذج أعلاه وعدّل القيم.
الناتج: ملف .env جاهز.
لماذا؟ لبدء الخدمة.
كيف؟ استخدم أمر docker run مع --env-file.
الناتج: الحاوية تعمل.
لماذا؟ لتتمكن من إرسال الإيميلات عبر 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 مناسب للتجربة.
جدول صغير يمنع التسويف
نقاط مختصرة ترجع لها لاحقاً
1. Posthorn مكتوب بلغة Go.
2. يعمل كحاوية Docker واحدة.
3. لا يدعم استقبال الإيميلات.
4. المشروع جديد (0 نجوم، 0 forks).
5. README غير واضح، الخطوات تقريبية.
إجابات مباشرة على ما يبحث عنه الزائر
تعريفات مختصرة تمنع الالتباس
بروتوكول إرسال البريد البسيط.
سيرفر افتراضي خاص.
مفتاح واجهة برمجة التطبيقات.
منصة لإدارة الحاويات.
بوابة تربط بين نظامين.
استخدمها كمسارات متابعة داخل نفس الموضوع
تحول القارئ: من مطور يعاني من حظر SMTP ويبحث عن حلول معقدة، إلى مطور يستخدم Posthorn كحل خفيف وسريع.
القيمة الحقيقية تظهر عند العودة والتطبيق
لا تتعامل معه كمقال يُقرأ مرة واحدة. استخدمه كلوحة تشغيل: ارجع للتشخيص عند ظهور المشكلة، وللقوالب عند التطبيق، ولمؤشرات القياس عند المراجعة.
Posthorn أداة واعدة تحل مشكلة حظر SMTP ببساطة. لكنها لا تزال في مراحلها الأولى. استخدمها للتجربة والمشاريع الصغيرة، وراقب تطورها. إذا كنت تحتاج موثوقية، اختر بديلاً ناضجاً. جربها الآن، وشارك تجربتك.
حتى يبقى المرجع صالحاً مع الوقت
FAQ