لماذا Stalwart لأسطول نطاقات متعددة
إدارة البريد الإلكتروني لعملاء متعددين تصطدم دائمًا بالعائق ذاته: كل حل شائع يفرض إما نسخة منفصلة لكل نطاق أو إعدادًا مشتركًا بعزل جزئي. صُمِّم Stalwart من الأساس لـmulti-tenancy: النطاق كيان من الدرجة الأولى في نموذج البيانات. إضافة عميل تعني إنشاء نطاق عبر الـAPI أو الواجهة — دون إعادة تشغيل الخدمة، ودون خطر تسريب البيانات بين العملاء.
لوكالة تُدير من 5 إلى 50 عميلًا، هذا هو الفرق بين بنية تحتية تنمو خطيًا (نسخة إضافية لكل عميل) وبنية تتمدد بشكل مسطح — VPS واحد، نسخة واحدة، N عميل.
ما يُقدمه Stalwart عمليًا
- ملف واحد، بدون Docker — ملف Go مُصنَّف بشكل ثابت، بلا تبعيات نظام، قابل للنشر مباشرةً على أي توزيعة Linux.
- Multi-tenant أصلي — نطاقات وصناديق وأسماء مستعارة وحصص مُدارة ككيانات مستقلة مع عزل صارم للبيانات بين العملاء.
- JMAP (RFC 8620) كبروتوكول أساسي — بروتوكول المزامنة الحديث للبريد، إلى جانب IMAP4 وPOP3 الكلاسيكيين.
- WebAdmin مدمج — واجهة إدارة HTTPS على المنفذ 8080 دون أداة خارجية.
- API JMAP للأتمتة — إنشاء نطاقات وحسابات قابل للبرمجة، مناسب لسير عمل استقبال العملاء في الوكالات.
- دعم ACME/Let's Encrypt أصلي — تجديد TLS تلقائي دون Certbot أو reverse proxy إلزامي.
- رخصة AGPL-3.0 — كود مصدري قابل للتحقق، بلا تبعيات مملوكة في النسخة المجتمعية.
المتطلبات قبل التثبيت
Stalwart أخف بكثير من Mailcow. للاستخدام الخفيف (1 إلى 5 نطاقات، عشرات الصناديق)، خصص 1 vCPU و1 غيغابايت RAM. لأسطول من عشرات النطاقات النشطة، 2 vCPU و2 غيغابايت RAM هو الإعداد الموصى به — الرقم الذي تذكره الوثائق الرسمية للاستخدام متعدد النطاقات.
على صعيد الشبكة، يجب فتح أربعة منافذ واردة: 25 (SMTP, استقبال MX)، 465 (SMTPS/submission)، 993 (IMAPS)، و443 (HTTPS — WebAdmin وJMAP). المنفذ 4190 ضروري لـSieve. يجب أن يكون لـVPS IPv4 مخصص وrDNS مُهيَّأ يشير إلى اسم مضيف الخادم — ضروري للإيصال. وأخيرًا، يلزم اسم نطاق مع صلاحية الوصول إلى منطقة DNS لوضع سجلات MX وSPF وDKIM وDMARC.
تثبيت Stalwart Mail Server
تحميل الملف التنفيذي
اتصل بـVPS عبر SSH. حمّل أحدث إصدار مستقر من المستودع الرسمي:
curl -fsSL https://github.com/stalwartlabs/stalwart/releases/latest/download/stalwart-linux-x86_64.tar.gz | tar -xz -C /usr/local/bin/
chmod +x /usr/local/bin/stalwartلخادم ARM (Ampere, AWS Graviton)، استبدل x86_64 بـaarch64.
تشغيل مساعد التثبيت
يوفر Stalwart مساعدًا تفاعليًا يُهيئ مجلدات البيانات ويُنشئ شهادات TLS الأولية وحساب المشرف:
sudo stalwart --initيطلب المساعد اسم مضيف الخادم (مثل mail.mondomaine.com)، مسار البيانات (افتراضيًا /opt/stalwart-mail)، وضع TLS (ACME موصى به) وكلمة مرور المشرف. بعد الإعداد توضع ملفات الإعداد في /opt/stalwart-mail/etc/.
إنشاء وحدة systemd
لتشغيل Stalwart تلقائيًا:
sudo tee /etc/systemd/system/stalwart-mail.service << 'EOF'
[Unit]
Description=Stalwart Mail Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/stalwart --config /opt/stalwart-mail/etc/config.toml
Restart=on-failure
User=stalwart
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload && sudo systemctl enable --now stalwart-mailأنشئ المستخدم المخصص أولًا: sudo useradd -r -s /bin/false stalwart && sudo chown -R stalwart /opt/stalwart-mail.
فتح المنافذ في جدار الحماية
على Ubuntu/Debian مع UFW:
sudo ufw allow 25/tcp comment 'SMTP'
sudo ufw allow 465/tcp comment 'SMTPS'
sudo ufw allow 993/tcp comment 'IMAPS'
sudo ufw allow 443/tcp comment 'HTTPS WebAdmin/JMAP'
sudo ufw allow 4190/tcp comment 'Sieve'
sudo ufw reloadإذا كان VPS خلف جدار حماية سحابي (Hetzner, OVH…)، طبّق هذه القواعد في لوحة التحكم.
إضافة النطاق الأول عبر WebAdmin
افتح https://mail.example.com:8080 في المتصفح وسجّل الدخول بحساب المشرف. في الإدارة → النطاقات، انقر إضافة نطاق، أدخل example.com وأكّد. يُنشئ Stalwart تلقائيًا سجلات DNS اللازمة (MX وSPF وDKIM وDMARC) ويعرضها في الواجهة — انسخها إلى منطقة DNS الخاصة بك.
إنشاء الصناديق والتحقق
في الإدارة → الحسابات، أنشئ حسابًا وربطه بالنطاق المُضاف. اختبر الاستقبال بـ:
swaks --to [email protected] --server mail.example.com --port 25ثم اختبر اتصال IMAP من Thunderbird — الخادم mail.example.com، المنفذ 993، SSL/TLS. لعميل إضافي، كرر الخطوة 5 بنطاق جديد: لا إعادة تشغيل للخدمة.
الإعداد بعد التثبيت
Reverse proxy. إذا أردت توجيه WebAdmin وJMAP عبر Nginx (لمشاركة المنفذ 443 مع خدمات أخرى)، هيّئ بلوكًا stream للبروتوكولات البريدية (25, 465, 993) وبلوك HTTPS لـ/jmap وWebAdmin. يقبل Stalwart أيضًا الاتصالات المباشرة دون proxy.
النسخ الاحتياطي. بيانات Stalwart في /opt/stalwart-mail/data/. لقطة يومية لهذا المجلد — مضغوطة ومنقولة خارج الموقع — كافية للاستعادة الكاملة. مع خطة {{vps.power.name}} من ServOrbit، النسخ الاحتياطي الأسبوعي مُضمَّن؛ فعّل النسخ اليومي للحصول على RPO مناسب للبريد.
نطاقات إضافية. كل نطاق عميل يُضاف عبر WebAdmin أو API JMAP. يوفر Stalwart أيضًا أمرًا فرعيًا CLI للعمليات الجماعية — مفيد لأتمتة استقبال العملاء.
التصليب: تقييد الوصول إلى WebAdmin
يستمع WebAdmin افتراضيًا على 0.0.0.0:8080. في الإنتاج، قيّد الوصول بـIP الإدارة:
sudo ufw deny 8080
sudo ufw allow from <ip-admin> to any port 8080فعّل أيضًا المصادقة الثنائية (TOTP) لحساب المشرف من الأمان → المصادقة في WebAdmin. للوصول عن بُعد عبر شبكة غير موثوقة، فضّل نفقًا SSH بدلًا من كشف المنفذ 8080 مباشرةً.
استكشاف الأخطاء الشائعة
Literal exceeds the maximum request size of X bytes (IMAP). يظهر هذا عند محاولة Thunderbird رفع مرفق كبير عبر أمر APPEND. يقطع Stalwart الاتصال ثم يُفسّر العميل بقية البيانات كأوامر IMAP. ارفع الحد في /opt/stalwart-mail/etc/config.toml عند مفتاح imap.request.max-size وأعد تشغيل الخدمة.
رفض سجل DKIM من قِبل المسجّل. إذا فشل مزوّد DNS (Vultr وبعض المسجلات) في إنشاء مفتاح RSA DKIM لتجاوزه 255 حرفًا، قسّمه إلى جزءين بين علامتَي اقتباس في قيمة TXT: "v=DKIM1; k=rsa; p=MIIBIj..." "AQAB...". يُسلسلهما Stalwart عند القراءة.
رفض نطاق Punycode عند الإنشاء. الإصدارات قبل v0.16 كانت ترفض النطاقات الدولية المُشفَّرة مسبقًا بـA-label. أدخل النطاق بـUnicode ودع Stalwart يُجري التحويل.
فشل تشغيل الخدمة بعد التحديث. تحقق من توافق ملف الإعداد: stalwart --check-config /opt/stalwart-mail/etc/config.toml. هجرات مخطط الإعداد موثقة في ملاحظات الإصدار على GitHub.
رفض اتصالات IMAP من عميل جوّال. تحقق من صلاحية شهادة TLS وعدم انتهائها (openssl s_client -connect mail.example.com:993) ومن فتح المنفذ 993 في UFW وجدار الحماية الشبكي.
للمزيد
يُغطي Stalwart البنية التحتية للبريد — استقبال وإرسال وتخزين. لكي تصل رسائلك إلى صندوق الوارد وليس إلى الرسائل غير المرغوب فيها، يجب إعداد سجلات SPF وDKIM وDMARC واختبارها: راجع دليلنا حول إيصال البريد المهني.
إذا كان أسطول cPanel يُرسل بريدًا تعاملاتيًا وتريد مركزة الإرسال دون نقل الصناديق، يُغطي دليل SMTP relay بـPostfix هذه البنية التكميلية. للوكالات التي تُهاجر محفظة عملاء من Google Workspace أو Microsoft 365 إلى خوادم ذاتية الاستضافة، يُفصّل مقال Mailcow خطوات الترحيل عبر IMAP.