لماذا استبدال MailHog بـ Mailpit
كان MailHog الخادم الاختباري الشائع قبل خمس سنوات، لكنه متروك منذ 2020 ويحمل ثغرة XSS مخزنة غير مصلحة (Exploit-DB 50971): أي بريد يحتوي جافاسكريبت قد يخترق الواجهة. Mailpit يحل محله ببرنامج Go حديث (أقل من 50 ميغابايت RAM)، وواجهة أنيقة، وبحث نصي كامل، وREST API موثقة، وتقرير توافق HTML، وتقييم بريد عشوائي مدمج. أصبح المعيار الافتراضي في Laravel Sail منذ الإصدار 11 وفي DDEV منذ الإصدار 1.22.
ما يقدمه Mailpit عملياً
- اعتراض SMTP على المنفذ 1025 — لا رسائل تغادر VPS، أشر تطبيقك على localhost:1025.
- واجهة ويب على المنفذ 8025 مع بحث نصي كامل.
- REST API GET /api/v1/messages — استعلم عن الرسائل من الاختبارات دون relay خارجي.
- تقييم بريد عشوائي بقواعد SpamAssassin لاكتشاف مشاكل التسليم مبكراً.
- تقرير توافق HTML لرصد خصائص CSS المحذوفة في Gmail وOutlook.
- معاينة الهاتف والمصدر الخام مع عرض HTML كامل.
- واجهة POP3 لجلب الرسائل بأي برنامج بريد.
- SQLite على volume دائم — الرسائل تنجو من إعادة تشغيل الحاوية.
بنية النشر على VPS
Mailpit يعمل في حاوية Docker واحدة. خادم SMTP يعمل على localhost:1025 (loopback فقط)، مما يعني أن التطبيقات على نفس VPS فقط يمكنها إرسال رسائل إليه. الواجهة على localhost:8025 تُوجَّه عبر nginx لنطاق من اختيارك. النمط مطابق لـ Node-RED وPlausible وUmami: حاوية واحدة، منفذ loopback، نطاق nginx، volume دائم.
نشر Mailpit في 5 خطوات
النشر من متجر ServOrbit
افتح لوحة التحكم، اذهب إلى Marketplace ← التطوير ← Mailpit وانقر نشر. الحاوية تبدأ في أقل من عشر ثوانٍ.
ضبط SMTP تطبيقك
في متغيرات البيئة، اضبط MAIL_HOST=127.0.0.1 وMAIL_PORT=1025. لا توثيق ولا TLS مطلوبان افتراضياً.
فتح واجهة الويب
انتقل للنطاق المرتبط بـ Mailpit. ستجد صندوق الوارد اللحظي: انقر أي رسالة لفحص عرض HTML والرؤوس وتقييم البريد العشوائي.
دمج REST API في الاختبارات
استدعِ GET /api/v1/messages من مجموعة اختباراتك. صفّ حسب المستلم وتحقق من الموضوع وعدّ المرفقات دون mocks.
فحص توافق HTML
افتح أي بريد HTML وانقر تبويب التوافق. Mailpit يسرد خصائص CSS غير المدعومة عميلاً بعميل مع روابط للإصلاح.
Mailpit في CI/CD: اختبار البريد في الـ pipeline
انشر Mailpit كخدمة في docker-compose.yml الاختباري. ترسل الاختبارات البريد لـ localhost:1025 ثم تتحقق عبر REST API من استلام الرسالة الصحيحة — دون relay خارجي.
Mailpit مقابل MailHog مقابل Mailtrap
| المطور | Axle Springer (نشط) | متروك منذ 2020 | Mailtrap Inc. (SaaS) |
| الأمان | لا ثغرات معروفة | XSS مخزنة غير مصلحة | SaaS — بيانات خارجية |
| REST API | كاملة وموثقة | أساسية وغير موثقة | نعم (خطة مدفوعة) |
| تقييم البريد العشوائي | مدمج (SpamAssassin) | غير متوفر | نعم (خطة مدفوعة) |
| توافق HTML | تقرير مدمج | غير متوفر | نعم (خطة مدفوعة) |
| السعر | مجاني، MIT | مجاني، MIT | Freemium، ثم 24 $/شهر |
| الاستضافة الذاتية | حاوية Docker واحدة | ملف Go واحد | SaaS فقط |
حالات استخدام متقدمة
يوفر Mailpit ميزات متقدمة: وضع متعدد المستأجرين (--mp-tenant) لفصل الرسائل حسب التطبيق، وتوثيق SMTP (MP_SMTP_AUTH_FILE) لتقييد الاتصالات، وMP_UI_AUTH_FILE لإضافة حماية للواجهة، وMP_MAX_MESSAGES للتحكم في حجم الرسائل المحتفظ بها.