لماذا تستضيف Listmonk ذاتيًا على خادم VPS
Listmonk ملف تنفيذي (binary) واحد بلغة Go يعتمد على PostgreSQL، قادر على إدارة قوائم ضخمة وحملات مجزّأة بمعدل إرسال مرتفع جدًا. تصبح الاستضافة الذاتية مجدية بمجرد أن تتجاوز قاعدة المشتركين لديك بضعة آلاف من جهات الاتصال: إذ تفوتر منصّات SaaS حينها مئات اليوروهات شهريًا مقابل مهمة ينفّذها خادم VPS متواضع بسعر الخادم فقط. تحتفظ بالملكية الكاملة لقاعدة بريدك الإلكتروني (دون أي تسريب لطرف ثالث)، وتربط مُرحِّل SMTP الذي تختاره، وتتحكم بوتيرة الإرسال للحفاظ على سمعتك كمُرسِل. وخادم VPS لا غنى عنه هنا لأن Listmonk يحتاج إلى عملية دائمة وقاعدة بيانات PostgreSQL ومنافذ SMTP صادرة مفتوحة — وهي حرّيات لا تمنحها أي استضافة مشتركة.
فوائد ملموسة لـListmonk المُستضاف ذاتيًا
- لا تكلفة لكل جهة اتصال: لم تعد الفاتورة تعتمد على حجم قائمتك بل على الخادم VPS فقط.
- تجزئة عبر استعلامات SQL: استهدف مجموعات فرعية من المشتركين بدقة يتعذّر تحقيقها على معظم منصّات SaaS.
- قوالب غنية (Go templates + HTML) وحملات A/B قابلة لحفظ الإصدارات في مستودعك.
- واجهة REST برمجية كاملة: شغّل الإرسالات المعامَلاتية (transactional) من تطبيقك عبر webhook.
- تتبّع عمليات الفتح والنقر والارتداد (bounces) في واجهة موحّدة، دون بكسل طرف ثالث.
- حرية اختيار المُرحِّل (Postmark أو Amazon SES أو OVH أو Postfix الخاص بك) لتحسين قابلية التسليم والتكلفة.
المتطلبات التقنية
Listmonk نفسه خفيف جدًا، لكن PostgreSQL وحجم الإرسال يفرضان تحجيمًا معقولاً: خصّص 2 vCPU و2 غيغابايت من RAM و20 غيغابايت من القرص لقاعدة تضمّ بضع عشرات الآلاف من جهات الاتصال؛ وارفعها إلى 4 غيغابايت من RAM إذا كنت تدير حملات متزامنة ضخمة. على جانب البنية التحتية: Docker وDocker Compose، ونطاق mail.yourdomain.com بسجل A إلى الخادم VPS، وقبل كل شيء سجلات DNS لمصادقة البريد الإلكتروني (SPF وDKIM وDMARC) مضبوطة على نطاق الإرسال. ويلزم مُرحِّل SMTP بمعرّفات (host، منفذ 587، user، كلمة مرور) — إذ كثيرًا ما يحظر المزوّدون الإرسال المباشر من عنوان IP خاص بخادم VPS.
نشر Listmonk خطوة بخطوة
جلب المكدّس الرسمي
على الخادم VPS، أنشئ /opt/listmonk ثم نزّل ملف compose المرجعي: curl -LO https://raw.githubusercontent.com/knadh/listmonk/master/docker-compose.yml. يعلن خدمتين، app (listmonk) وdb (PostgreSQL).
تهيئة قاعدة البيانات
شغّل الترحيل الأولي قبل التشغيل الأول: docker compose run --rm app ./listmonk --install. ينشئ هذا الأمر مخطّط PostgreSQL والمستخدم المسؤول. أدخِل كلمة مرور مسؤول قوية عند الطلب.
بدء تشغيل الخدمة
شغّل المكدّس بـdocker compose up -d. يستمع Listmonk على المنفذ 9000 داخليًا. تحقّق من حالة الحاويات بـdocker compose ps وراجِع السجلات عند الحاجة.
إعداد الوكيل العكسي وSSL
اعرض Listmonk خلف وكيل عكسي مع HTTPS. مثال Caddy: mail.yourdomain.com { reverse_proxy app:9000 }. تُولَّد شهادة Let's Encrypt تلقائيًا. لا تنشر المنفذ 9000 مباشرةً على الإنترنت أبدًا.
توصيل مُرحِّل SMTP
من Settings > SMTP، أدخِل معطيات مُرحِّلك (host، منفذ 587، المعرّفات، TLS مُفعَّل). أرسل رسالة اختبار من الواجهة للتحقق من الاتصال قبل أي حملة.
تأمين قابلية التسليم
تحقّق بأداة خارجية من أن SPF وDKIM وDMARC تظهر خضراء على نطاق إرسالك. ابدأ بحملات صغيرة «لتسخين» عنوان IP الخاص بالمُرحِّل، وراقب معدّل الارتداد (bounce) في لوحة التحكم.
اضبط حدّ معدّل الإرسال (Settings > Performance > max concurrent connections وmessage rate) وفق حصص مُرحِّل SMTP الخاص بك. الإرسال المفرط في العدوانية يرفع معدّل السبام والرفض. وبالنسبة للرسائل المعامَلاتية الحرجة، أنشئ خادم بريد ثانيًا في Listmonk مخصّصًا لتلك الإرسالات، منفصلاً عن الخادم التسويقي: بذلك لا تؤثّر مشكلة سمعة على النشرات الإخبارية في رسائل التأكيد لديك.