دليل الإعداد · v1.0.0 Windows .msi · Linux systemd · Docker

من مضيف جديد إلى تدفق بريد إنتاجي في 8 خطوات

يعتمد خادم البريد على شبكته أكثر من اعتماده على عتاده: فإذا كان المنفذ 25 محظورًا أو كان Reverse DNS (PTR) مفقودًا، فلن تُسلَّم الرسائل مهما كانت قوة المعالج. يرشدكم هذا الدليل بترتيب صارم من فحوصات ما قبل الإعداد مرورًا بالإعداد وDKIM ثنائي المفتاح وTLS وإعداد الأجهزة المحمولة وصولًا إلى أول تسليم مُتحقق منه.

الفصل 01

كيف يُقلع nextxch ويصل إلى مرحلة الإنتاج

يجمع nextxch ‏ESMTP وIMAP4rev2 وPOP3 وJMAP وExchange ActiveSync وCalDAV/CardDAV وManageSieve وSpamGuard وأرشيف GoBD WORM ولوحة الإدارة (/admin/) وnextxch Webmail PWA ‏(/mail/) في ملف تنفيذي واحد آمن للذاكرة (~40 إلى 90 MB من ذاكرة RAM في وضع الخمول). لا يُنزَّل أي شيء من GitHub عند التشغيل الأول، ولا حاجة إلى مغلّفات NSSM خارجية أو Redis أو Rspamd أو حاويات Webmail منفصلة.

الترتيب مهم: تحققوا من الفصل 02 (المنفذ 25 وReverse DNS لدى مزودكم) قبل تنفيذ أي أمر، ثم اتبعوا الفصل 04 الخاص بمنصتكم، وارجعوا إلى الفصل 06 كلما اختلف ناتج عن الحالة المتوقعة.
الخطوة 01-02التثبيت وتسجيل الدخولثبّتوا الحزمة المتحقَّق منها بـ SHA-256، وافتحوا المنافذ، وسجّلوا الدخول إلى /admin/.
الخطوات 03-05النطاق وTLS وDual DKIMإصدار شهادة ACME/PFX ونشر سجلات DNS لكل من RSA-2048 & Ed25519.
الخطوات 06-07التحصين وربط الأجهزةفعّلوا SpamGuard وDual-Stack IPv6 وGoBD وملفات تعريف QR/WhatsApp بنقرة واحدة.
الخطوة 08التحقق من تدفق البريدشغّلوا مختبر MX/DANE الصادر + اختبار الذهاب والإياب عبر Message Trace.
الفصل 02

متطلبات النظام والشبكة (قائمة التحقق قبل البدء)

تحققوا من جميع البنود الستة أدناه قبل التثبيت. يُتحكم في أربعة منها خارج الخادم، في لوحة تحكم الاستضافة أو DNS لديكم.

المنفذ البروتوكول / الخدمة الاتجاه المتطلب والإرشاد
25 / TCPESMTP (MX بين الخوادم + STARTTLS/DANE)الوارد والصادرمطلوب - ضروري لاستقبال بريد الإنترنت وتسليمه.
443 / TCPHTTPS (/admin/، /mail/، JMAP، ActiveSync، DAV، MTA-STS)وارد (+ صادر)مطلوب - يخدم Webmail والإدارة وMobile Push وDAV وJMAP وACME.
465 / TCPإرسال SMTPS (Implicit TLS، RFC 8314)الواردمطلوب - منفذ الإرسال المفضّل عبر TLS الضمني (RFC 8314).
587 / TCPإرسال SMTP (STARTTLS)الواردمطلوب - إرسال STARTTLS القياسي لـ Outlook والطابعات وأنظمة ERP.
993 / TCPIMAPS (IMAP4rev2 Implicit TLS)الواردمطلوب - IMAP4rev2 مشفر مع Push عبر IDLE دون استطلاع دوري.
80 / TCPHTTP (ACME HTTP-01 و Autoconfig)الواردموصى به (اختياري عند استخدام TLS-ALPN-01 أو PFX من البوابة).
4190 / TCPManageSieve (STARTTLS)الوارداختياري (محرر Sieve المرئي في Webmail يعمل بالفعل عبر 443).
143 / TCPIMAP (STARTTLS)الوارداختياري (يُفضَّل المنفذ 993 مع TLS الضمني).
995 / TCPPOP3S (TLS ضمني)الوارداختياري (فقط إذا كان POP3 مفعّلًا في الإدارة > الشبكة؛ وهو معطّل افتراضيًا).
110 / TCPPOP3 (STLS)الوارداختياري (يُفضّل المنفذ 995 مع TLS ضمني).
حجم النشر CPU الذاكرة (RAM) القرص وقاعدة البيانات الموصى بها
1 - 250 صندوق بريد2 vCPU1 - 2 GBNVMe/SSD · SQLite WAL مدمج + Zstandard (بصمة خادم ~40-90 MB).
250 - 2,500 صندوق بريد4 vCPU4 - 8 GBNVMe + Hybrid S3 اختياري · PostgreSQL 18 أو Microsoft SQL Server (2019-2025).
عنقود HA لأكثر من 2,5008+ vCPU16+ GBعقد Active-Active على PostgreSQL 18 أو SQL Server Always On + S3 Object Lock.
الفصل 03

اختيار المنصة وواجهة التخزين الخلفية

تشغّل كل منصة مجموعة الميزات نفسها تمامًا. اختاروا طريقة النشر وخلفية SQL اللتين تناسبان فريق التشغيل لديكم.

المنصة الطريقة الأنسب لـ
Windows Server 2019-2025.msi / install.ps1خدمة Windows SCM أصلية دون Docker أو NSSM؛ مثالية إلى جانب Microsoft SQL Server أو عند الترحيل من hMailServer.
Linux (x86_64 & ARM64)install.sh · .deb · systemdخدمة systemd خفيفة دون صلاحيات root على خوادم Debian أو Ubuntu LTS أو RHEL/Rocky أو ARM64.
Docker Composenextxch/server:1.0.0حزم حاويات قابلة للتكرار عبر مضيفي Linux وأجهزة Proxmox الافتراضية وSynology وUGREEN وUnraid.
macOS وKuberneteslaunchd / Helm v3خوادم Mac mini المكتبية (launchd) أو عناقيد Kubernetes أفقية بنمط Active-Active.
الفصل 04

البرنامج التعليمي في 8 خطوات: من التثبيت إلى أول رسالة اختبار موثّقة

اختاروا منصتكم المستهدفة أدناه. توضح كل خطوة من الخطوات الثماني ما تفعله، وتعرض الأمر الدقيق، وتؤكد النتيجة المتوقعة، وتبرز أكثر الأخطاء شيوعًا في موضع حدوثها تمامًا.

الخطوة 01

تثبيت الخدمة وفتح منافذ جدار الحماية

ينزّل حزمة الإصدار، ويتحقق من ملخص SHA-256 الخاص بها، ويسجّل خدمة الخلفية ودليل البيانات الدائم.

# PowerShell (Admin): Downloads .msi (v1.0.0), verifies SHA-256 & launches setup
irm https://nextxch.com/install.ps1 | iex

# Ensure Windows Defender Firewall permits inbound mail & HTTPS ports
New-NetFirewallRule -DisplayName "nextxch" -Direction Inbound `
  -Protocol TCP -LocalPort 25,80,443,465,587,993,4190 -Action Allow
# Debian / Ubuntu / RHEL / macOS: Verifies SHA-256 & registers systemd unit
curl -fsSL https://nextxch.com/install.sh | sudo bash

# If UFW is enabled, allow required mail & HTTPS ports:
sudo ufw allow 25,80,443,465,587,993,4190/tcp
# Pulls SHA-256-verified nextxch/server:1.0.0 & writes docker-compose.yml
curl -fsSL https://nextxch.com/install.sh | sudo bash -s -- \
  --mode docker --domain firma.de --hostname mail.firma.de --admin admin@firma.de
النتيجة المتوقعة: الخدمة نشطة، ومفعّلة عند الإقلاع، وتستمع على منافذ HTTPS والبريد.
خطأ شائع: إذا أبلغ بدء التشغيل عن 'Address already in use'، فهذا يعني أن MTA مثبتًا مسبقًا (Postfix/Exim) أو خادم ويب يشغل المنفذ 25/80/443 -> راجعوا الفصل 06 (#sym-port-bind).
الخطوة 02

التحقق من سلامة الخدمة وتسجيل الدخول إلى /admin/

تأكدوا من بدء تشغيل المستمعين بشكل سليم في السجلات، وسجّلوا الدخول إلى لوحة الإدارة ببيانات اعتماد المسؤول التي ضُبطت أثناء التثبيت.

Get-Service nextxch
# Open in browser: https://mail.firma.de/admin/ (or http://localhost/admin/)
sudo systemctl status nextxch
sudo journalctl -u nextxch -n 30 --no-pager
# Open in browser: https://mail.firma.de/admin/
docker compose ps
docker compose logs --tail=30 nextxch
# Open in browser: https://mail.firma.de/admin/
النتيجة المتوقعة: تُفتح لوحة المعلومات الآنية على /admin/ وتعرض المستمعين النشطين لـ SMTP وIMAP وHTTPS.
الخطوة 03

إعداد نطاق البريد وDKIM المزدوج المفتاح بالتوازي

افتحوا Domains & Routing -> Manage Domain في /admin/. يوفّر nextxch تلقائيًا زوجين متوازيين من مفاتيح DKIM: ‏RSA-2048 (المحدد s2026) وEd25519 (المحدد s2026ed).

أفضل ممارسة: انشروا سجلَي TXT كليهما في DNS مرة واحدة في الخطوة 5؛ وبعدها يمكنكم تبديل أوضاع التوقيع (RSA-2048 أو Ed25519 أو Dual-Sign) على الخادم فورًا دون انتظار انتشار DNS.
الخطوة 04

تفعيل شهادة TLS (ACME Let's Encrypt أو PFX من البوابة)

افتحوا Security & Certificates -> TLS & ACME. وبمجرد أن يُحلّ mail.company.com إلى مضيفكم، اطلبوا شهادة Let's Encrypt عبر HTTP-01 أو TLS-ALPN-01 (المنفذ 443)، أو ارفعوا شهادة .pfx/.pem من pfSense أو بوابة SSL لديكم.

النتيجة المتوقعة: تُفعِّل إعادة التحميل الفورية لـ Dynamic SNI خلال 0 ms الشهادة مباشرةً عبر HTTPS وSMTPS وIMAPS وManageSieve دون إعادة تشغيل.
الخطوة 05

نشر سجلات DNS وإجراء التحقق المباشر من DNS

انسخوا سجلات DNS المحسوبة من DNS Advisor المدمج (أو صدّروا ملف منطقة BIND): MX وA/AAAA وSPF ومحددي DKIM كليهما (s2026 + s2026ed) وDMARC وMTA-STS وTLS-RPT، واختياريًا DANE TLSA (3 1 1) وBIMI.

النتيجة المتوقعة: يؤدي النقر على 'Verify Live DNS' إلى عرض شارات نجاح خضراء لـ MX وSPF ومحددي DKIM كليهما وDMARC وPTR.
خطأ شائع: تضيف كثير من لوحات تحكم DNS نطاقكم تلقائيًا؛ أدخلوا s2026._domainkey كمضيف بدلًا من s2026._domainkey.company.com -> انظروا #sym-dkim-dns.
الخطوة 06

تحصين الخادم قبل الإنتاج

سجّلوا مفتاح مرور (WebAuthn) أو TOTP 2FA على حساب المسؤول الخاص بكم، وأبقوا عتبات SpamGuard عند 4.5 / 9.0 مع تفعيل Greylisting الذكي، وفعّلوا أرشفة GoBD بنظام WORM على النطاقات التجارية.

النتيجة المتوقعة: تحمي آلية الحظر التلقائي، وفرض TLS قبل المصادقة، وضوابط معدل الإرسال الصادر سمعة عنوان IP لديكم تلقائيًا.
الخطوة 07

أنشئوا أول صندوق بريد واربطوا الأجهزة المحمولة في 30 ثانية

أنشئوا أول صندوق بريد للمستخدم ضمن Accounts & Lists، وسجّلوا الدخول في https://mail.company.com/mail/، ثم انقروا على 'Device Setup' لإنشاء رمز QR أو رابط إعداد بنقرة واحدة آمن للمراسلة مع ملف تعريف iOS/macOS موقّع بـ CMS أو Exchange ActiveSync.

النتيجة المتوقعة: يعرض iOS شارة 'Verified' خضراء على ملف التعريف ويزامن فورًا البريد والتقويمات وجهات الاتصال والملاحظات.
الخطوة 08

تأكيد التسليم الوارد والصادر عبر Live MX Tester وMessage Trace

شغّلوا Diagnostics & Logs -> Outbound MX & DANE Tester مقابل gmail.com أو عنوان خارجي، ثم أرسلوا رسالة بريد إلكتروني حقيقية من /mail/ وردّوا عليها للتحقق من التدفق في الاتجاهين.

النتيجة المتوقعة: يسجّل Message Trace الحالة Delivered عبر TLS 1.3 في كلا الاتجاهين، وتُظهر ترويسات المستقبل الخارجي spf=pass وdkim=pass وdmarc=pass.
الفصل 05

التشغيل خلف pfSense / OPNsense وبوابات SSL والوكلاء العكسيين

عند النشر خلف pfSense أو OPNsense أو Sophos أو HAProxy، اضبطوا هذه الإعدادات الثلاثة للحصول على تشخيصات دقيقة والحفاظ على عنوان IP الحقيقي للعميل:

السيناريو الإعداد الموصى به
Split-DNS / Hairpin-NATاضبطوا تجاوز مضيف Split-DNS في Unbound يوجّه mail.company.com إلى عنوان IP الداخلي في الشبكة المحلية، أو فعّلوا Pure NAT Reflection على البوابة لديكم.
HAProxy PROXY Protocolفعّلوا PROXY protocol v1/v2 مقصورًا على نطاق CIDR للوكيل الموثوق لديكم، حتى يرى SPF وAuto-Ban عنوان IP البعيد الحقيقي بدلًا من عنوان IP للبوابة.
شهادة البوابةزامنوا شهادة .pfx/.pem المجددة من البوابة لديكم مع nextxch للمنافذ 25/465/587/993؛ ويعيد Dynamic SNI تحميل الشهادات المحدّثة فورًا دون أي توقف.
الفصل 06

استكشاف الأخطاء حسب العَرَض (من الخطأ إلى الإصلاح الفوري)

انقروا على العَرَض الذي تلاحظونه أدناه، أو اكتبوا جزءًا من رسالة الخطأ في مربع التصفية السريعة أعلاه:

أداة فحص المنافذ الخارجية تُبلغ عن 'Blocked / Timeout' رغم أن الخدمة تعمل TCP 25 / 465 / 993 Timeout
السبب الجذري: إما أن المضيفين كليهما يقعان خلف جدار الحماية نفسه pfSense/OPNsense دون Hairpin NAT (NAT Reflection)، أو أن جدار الحماية الخارجي لدى مزود السحابة لا يزال يحظر المنفذ 25.
الحل: افحصوا تشخيصات الشبكة داخل /admin/ (التي تكتشف تلقائيًا بوابات Hairpin NAT المستضافة معًا) وتأكدوا من أن جدار الحماية السحابي الخارجي يسمح بـ TCP 25 و443 و465 و587 و993.
فشل الخدمة في ربط منفذ عند بدء التشغيل Address already in use (:25 / :80 / :443)
السبب الجذري: يشغل MTA مثبت مسبقًا (Postfix أو Exim أو Sendmail) على Linux أو IIS/Nginx/Apache المنفذ 25 أو 80 أو 443 بالفعل.
الإصلاح: افحصوا المستمعين النشطين عبر 'sudo ss -tulpn' على Linux (وعطّلوا postfix/exim غير المستخدمين) أو عبر 'Get-NetTCPConnection -State Listen' في PowerShell.
يُرفض البريد الصادر إلى Gmail أو Microsoft 365 أو كبار مزودي خدمة الإنترنت 550-5.7.25 / 550-5.7.1 PTR missing
السبب الجذري: يتصل مضيفكم بالخارج عبر IPv6 على واجهة Dual-Stack، بينما لم تضبطوا سوى سجل PTR لـ IPv4 ونسيتم سجل PTR لـ IPv6.
الحل: اضبطوا سجلات PTR مطابقة لكل من عنواني IPv4 وIPv6 في لوحة مزود الاستضافة لديكم بحيث تطابق Smtp:ServerHostName.
Live DNS Inspector لا يعثر على سجل DKIM أو DMARC TXT المنشور لديكم NXDOMAIN s2026._domainkey
السبب الجذري: تضيف كثير من لوحات تحكم DNS قمة المنطقة تلقائيًا، فتحوّل 's2026._domainkey.company.com' إلى 's2026._domainkey.company.com.company.com'، أو تقسّم سلاسل RSA-2048 الطويلة بمسافات زائدة.
الحل: أدخلوا فقط تسمية المضيف النسبية ('s2026._domainkey' و's2026ed._domainkey' و'_dmarc') في لوحة DNS لديكم، وتحققوا عبر 'nslookup -type=txt s2026._domainkey.company.com'.
يفشل Let's Encrypt ACME في إصدار شهادة أو يعرض المتصفح تحذير TLS ACME challenge failed
السبب الجذري: إما أن سجل DNS من نوع A/AAAA لـ mail.company.com لم ينتشر بعد، أو أن المنفذ 80/443 يُعترض في مرحلة سابقة بواسطة وكيل عكسي آخر.
الحل: استخدموا TLS-ALPN-01 عندما يصل المنفذ 443 إلى nextxch مباشرةً، أو افتحوا المنفذ 80 لـ HTTP-01، أو استوردوا الشهادة المجددة من الوكيل العكسي لديكم عبر PFX/PEM.
يفتح iPhone رابط إعداد عبر WhatsApp / Teams دون تشغيل تثبيت ملف التعريف في الإعدادات فورًا iOS In-App WebView
السبب الجذري: يقصر iOS تثبيت ملفات تعريف النظام ‎.mobileconfig على Safari حصرًا، بينما تفتح تطبيقات الدردشة الروابط أولًا داخل WebView مضمّن.
الحل: انقروا على أيقونة البوصلة في Safari ('Open in Safari') كما هو موضح في صفحة الإعداد؛ ولا تستهلك برامج زحف المعاينة الرمز المميز أحادي الاستخدام أبدًا.
حاوية Docker تُعاد تشغيلها أو لا تستطيع الكتابة في وحدة تخزين المضيف المربوطة Access to path '/var/lib/nextxch' denied
السبب الجذري: ملكية صارمة لدلائل المضيف أو تسميات SELinux على RHEL/Rocky/Fedora تمنع الحاويات من الكتابة في المجلدات المربوطة (bind-mounted).
الحل: استخدموا وحدات تخزين Docker مسمّاة، أو أضيفوا ':Z' إلى عمليات Bind Mount على المضيفين الذين يفرضون SELinux.
برنامج البريد لا يستطيع تسجيل الدخول عبر IMAP أو SMTP 535 Authentication failed / TLS required
السبب الجذري: إما أن العميل حاول تسجيل الدخول بنص غير مشفر دون TLS (وهو ما يحظره RequireTlsForAuth)، أو أن المصادقة الثنائية (2FA) مفعّلة على الحساب ويلزم استخدام كلمة مرور التطبيق لـ IMAP/SMTP القديمة.
الحل: اضبطوا المنفذ 993 (SSL/TLS) والمنفذ 465 (SSL/TLS) أو 587 (STARTTLS) مع عنوان البريد الإلكتروني الكامل كاسم مستخدم، وأنشئوا كلمة مرور تطبيق مخصصة عند تفعيل المصادقة الثنائية (2FA).
الفصل 07

الخطوات التالية: ترقيات في 10 ثوانٍ والنسخ الاحتياطي والترحيل

بمجرد تأكيد تدفق البريد في الاتجاهين، يصبح خادمكم جاهزًا للإنتاج. أبقوا سير العمل التشغيلية الثلاثة هذه في متناول اليد:

# 1) In-place upgrade (preserves configuration, certificates & mailboxes):
# Linux / macOS:
curl -fsSL https://nextxch.com/install.sh | sudo bash -s -- --update
# Windows PowerShell (Administrator):
irm https://nextxch.com/install.ps1 | iex

# 2) Backup scope (only 2 paths):
# - Config file: appsettings.Production.json (including license token)
# - Data dir:    Storage:DataDirectory (SQLite WAL / blobs / TLS certs)
#   or pg_dump / SQL Server backup when running an external DB cluster

إجابات سريعة قبل الإقلاع الأول

هل يتطلب nextxch وجود NSSM أو Docker Desktop على Windows Server؟

لا. على عكس الخوادم التي تتطلب أغلفة خدمة NSSM على Windows، يُسجَّل nextxch أصليًا لدى مدير التحكم في خدمات Windows (SCM) عبر مثبّت .msi الرسمي دون Docker Desktop أو WSL2 أو Hyper-V.

هل يحتاج nextxch إلى اتصال بالإنترنت عند التشغيل الأول لتنزيل واجهة WebUI أو قواعد البريد العشوائي؟

لا. إن لوحة الإدارة بالكامل (/admin/) وnextxch Webmail PWA (/mail/) ومحرك SpamGuard وجميع مستمعات البروتوكولات مضمّنة داخل الحزمة الموثّقة بـ SHA-256، مما يتيح بدء التشغيل دون اتصال بنسبة 100% وفي البيئات المعزولة (air-gapped).

لماذا يجب أن يتطابق Reverse DNS ‏(PTR) قبل إرسال أول رسالة بريد إلكتروني تجريبية؟

يتحقق كبار المستقبلين مثل Gmail وMicrosoft 365 ومزودي الإنترنت الأوروبيين من أن عنوانَي IPv4 وIPv6 العامين لديكم يُحلّان عبر PTR إلى اسم مضيف SMTP EHLO الدقيق لديكم (مثل mail.company.com). ويُعد غياب سجلات PTR لـ IPv6 على المضيفات ذات Dual-Stack السبب الأول لحالات الرفض 550-5.7.25.

كيف تعمل الترقيات في المكان بعد دخول الخادم مرحلة الإنتاج؟

نفّذوا curl -fsSL https://nextxch.com/install.sh | sudo bash -s -- --update على Linux/macOS أو irm https://nextxch.com/install.ps1 | iex على Windows (أو استخدموا أداة التحديث بنقرة واحدة داخل /admin/). ويُحتفظ تلقائيًا بملف appsettings.Production.json وشهادات TLS ومفاتيح DKIM ومخزن البريد.