Skip to content

دليل النشر

يغطي هذا الدليل نشر خادم SirrMesh في بيئة الإنتاج.

متطلبات النظام

متطلبات الأجهزة

yaml
الحد الأدنى:
  المعالج: 2 نواة
  الذاكرة: 2GB
  التخزين: 20GB SSD
  الشبكة: 100Mbps

الموصى به:
  المعالج: 4 نوى
  الذاكرة: 4GB
  التخزين: 100GB SSD
  الشبكة: 1Gbps

متطلبات البرمجيات

yaml
نظام التشغيل:
  - Ubuntu 20.04+
  - Debian 11+
  - CentOS 8+
  - macOS 12+

التبعيات:
  - Go 1.24+ (للترجمة فقط)
  - Git
  - Make

متطلبات المنافذ

المنفذالخدمةالوصف
25SMTPاستقبال البريد (اختياري)
587Submissionإرسال البريد
465SMTPSإرسال بريد مشفر
993IMAPSIMAP مشفر
143IMAPIMAP (اختياري)
8825SMTP Altمنفذ SMTP بديل

النشر السريع

سكربت النشر بنقرة واحدة

استخدم السكربت التلقائي للنشر السريع:

bash
# تنزيل وتنفيذ سكربت النشر
curl -sSL https://raw.githubusercontent.com/sirrmesh/SirrMesh/main/start.sh | bash

# أو التنزيل ثم التنفيذ
wget https://raw.githubusercontent.com/sirrmesh/SirrMesh/main/start.sh
chmod +x start.sh
sudo ./start.sh

سيقوم السكربت تلقائيًا بـ:

  1. اكتشاف بنية النظام وتنزيل الملف الثنائي الصحيح
  2. تهيئة دليل التكوين
  3. تكوين DNS وشهادات TLS (يدعم 15 مزود DNS)
  4. إنشاء وبدء خدمة systemd

النشر اليدوي

1. إعداد النظام

bash
# تحديث النظام
sudo apt update && sudo apt upgrade -y

# تثبيت التبعيات
sudo apt install -y build-essential git curl wget

# إنشاء دليل العمل
export SIRRCHAT_HOME="${SIRRCHAT_HOME:-$HOME/.sirrmeshd}"
mkdir -p $SIRRCHAT_HOME

2. تنزيل الملف الثنائي

bash
# اكتشاف بنية النظام تلقائيًا
get_system_arch() {
    local os=$(uname -s | tr '[:upper:]' '[:lower:]')
    local arch=$(uname -m)

    case "$arch" in
        x86_64|amd64) arch="amd64" ;;
        aarch64|arm64) arch="arm64" ;;
        *) arch="amd64" ;;
    esac

    echo "${os}-${arch}"
}

SYSTEM_ARCH=$(get_system_arch)
VERSION="v0.3.1"

# تنزيل الإصدار المناسب
wget https://download.sirrchat.org/sirrmeshd-${SYSTEM_ARCH}-${VERSION}
sudo mv sirrmeshd-${SYSTEM_ARCH}-${VERSION} /usr/local/bin/sirrmeshd
sudo chmod +x /usr/local/bin/sirrmeshd

# التحقق من التثبيت
sirrmeshd --help

3. البناء من المصدر (اختياري)

bash
# استنساخ المستودع
git clone https://github.com/sirrmesh/SirrMesh.git
cd sirrmeshd

# البناء
make build

# التثبيت
sudo cp build/sirrmeshd /usr/local/bin/

شرح التكوين

التكوين الأساسي

إنشاء $SIRRCHAT_HOME/sirrmeshd.conf:

conf
# تكوين النطاق
$(hostname) = mx1.example.com
$(primary_domain) = example.com
$(local_domains) = $(primary_domain)

# تكوين شهادة TLS
tls {
    loader acme {
        hostname $(hostname)
        email postmaster@$(hostname)
        agreed
        challenge dns-01
        dns cloudflare {
            api_token YOUR_CLOUDFLARE_API_TOKEN
        }
    }
}

# تكوين التخزين
storage.imapsql local_mailboxes {
    driver sqlite3
    dsn $SIRRCHAT_HOME/imapsql.db
}

# تكوين المصادقة
auth.pass_table local_auth {
    table file $SIRRCHAT_HOME/users
}

# خدمة SMTP
smtp tcp://0.0.0.0:8825 {
    hostname $(hostname)

    limits {
        all rate 20 1s
        all concurrency 10
    }

    dmarc yes

    check {
        require_mx_record
        dkim
        spf
    }

    source $(local_domains) {
        deliver_to &local_mailboxes
    }
}

# خدمة Submission
submission tls://0.0.0.0:465 tcp://0.0.0.0:587 {
    hostname $(hostname)
    auth &local_auth

    source $(local_domains) {
        default_destination {
            modify {
                dkim $(primary_domain) $(local_domains) default
            }
            deliver_to &remote_queue
        }
    }
}

# خدمة IMAP
imap tls://0.0.0.0:993 tcp://0.0.0.0:143 {
    auth &local_auth
    storage &local_mailboxes
}

تكوين مزودي DNS

مزودي DNS المدعومين وتكوينهم:

Cloudflare

conf
dns cloudflare {
    api_token YOUR_API_TOKEN
}

Amazon Route53

conf
dns route53 {
    access_key_id YOUR_ACCESS_KEY
    secret_access_key YOUR_SECRET_KEY
}

DigitalOcean

conf
dns digitalocean {
    api_token YOUR_API_TOKEN
}

Google Cloud DNS

conf
dns googleclouddns {
    service_account_json /path/to/service-account.json
}

إدارة الخدمة

تكوين خدمة Systemd

إنشاء الخدمة

bash
sudo tee /etc/systemd/system/sirrmeshd.service > /dev/null <<EOF
[Unit]
Description=SirrMesh Mail Server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=root
Environment="SIRRCHAT_HOME=/root/.sirrmeshd"
ExecStart=/usr/local/bin/sirrmeshd run
Restart=always
RestartSec=3
LimitNOFILE=65535
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

بدء وإدارة الخدمة

bash
# إعادة تحميل تكوين systemd
sudo systemctl daemon-reload

# بدء الخدمة
sudo systemctl start sirrmeshd

# تعيين البدء التلقائي
sudo systemctl enable sirrmeshd

# عرض حالة الخدمة
sudo systemctl status sirrmeshd

# عرض السجلات
sudo journalctl -u sirrmeshd -f

# إعادة تشغيل الخدمة
sudo systemctl restart sirrmeshd

المراقبة والصيانة

عرض السجلات

bash
# عرض السجلات في الوقت الفعلي
sudo journalctl -u sirrmeshd -f

# عرض سجلات الأخطاء الأخيرة
sudo journalctl -u sirrmeshd -p err -n 100

# عرض سجلات اليوم
sudo journalctl -u sirrmeshd --since today

سكربت فحص الصحة

إنشاء ~/check_sirrchat_health.sh:

bash
#!/bin/bash

RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'

echo "=== فحص صحة SirrMesh ==="
echo "الوقت: $(date)"
echo "=============================="

# التحقق من حالة العملية
if pgrep -x sirrmeshd > /dev/null; then
    echo -e "${GREEN}✓${NC} العملية تعمل"
else
    echo -e "${RED}✗${NC} العملية لا تعمل"
    exit 1
fi

# التحقق من المنافذ
for port in 587 993 8825; do
    if netstat -tlnp 2>/dev/null | grep -q ":$port "; then
        echo -e "${GREEN}✓${NC} المنفذ $port يستمع"
    else
        echo -e "${RED}✗${NC} المنفذ $port لا يستمع"
    fi
done

# التحقق من مساحة القرص
DISK_USAGE=$(df -h $SIRRCHAT_HOME | awk 'NR==2 {print $5}' | tr -d '%')
if [ "$DISK_USAGE" -lt 80 ]; then
    echo -e "${GREEN}✓${NC} استخدام القرص: ${DISK_USAGE}%"
else
    echo -e "${RED}⚠${NC} استخدام القرص مرتفع: ${DISK_USAGE}%"
fi

echo "=============================="

استكشاف الأخطاء وإصلاحها

المشاكل الشائعة

1. فشل بدء الخدمة

bash
# التحقق من صيغة ملف التكوين
sirrmeshd run --config $SIRRCHAT_HOME/sirrmeshd.conf

# عرض الأخطاء المفصلة
sudo journalctl -u sirrmeshd-mail -n 50

2. مشاكل شهادة TLS

bash
# التحقق من تكوين DNS
sirrmeshd dns check

# اختبار تحدي DNS يدويًا
sirrmeshd dns export

3. فشل إرسال/استقبال البريد

bash
# التحقق مما إذا كانت المنافذ مفتوحة
netstat -tlnp | grep -E '25|587|993'

# التحقق من جدار الحماية
sudo ufw status

أفضل ممارسات الأمان

تكوين جدار الحماية

bash
# قواعد جدار الحماية الأساسية
sudo ufw default deny incoming
sudo ufw default allow outgoing

# الوصول عبر SSH
sudo ufw allow 22/tcp

# منافذ خدمة البريد
sudo ufw allow 587/tcp comment 'Submission'
sudo ufw allow 993/tcp comment 'IMAPS'
sudo ufw allow 8825/tcp comment 'SMTP Alt'

# تمكين جدار الحماية
sudo ufw enable

قائمة فحص الأمان

  • [ ] تم تكوين قواعد جدار الحماية بشكل صحيح
  • [ ] SSH يستخدم مصادقة المفتاح
  • [ ] تم تكوين شهادة TLS والتجديد التلقائي
  • [ ] تم تمكين التحديثات الأمنية التلقائية للنظام
  • [ ] تم تكوين تدوير السجلات
  • [ ] تم تنفيذ النسخ الاحتياطي المنتظم

توصيات النسخ الاحتياطي

bash
# نسخ احتياطي للتكوين والبيانات
BACKUP_DIR="/backup/sirrmeshd/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR

# نسخ احتياطي للتكوين
cp $SIRRCHAT_HOME/sirrmeshd.conf $BACKUP_DIR/

# نسخ احتياطي لقاعدة البيانات
cp $SIRRCHAT_HOME/*.db $BACKUP_DIR/

# الاحتفاظ بالنسخ الاحتياطية لآخر 7 أيام
find /backup/sirrmeshd -type d -mtime +7 -exec rm -rf {} +

توصيات بيئة الإنتاج

اختيار قاعدة البيانات

  • بيئة التطوير: SQLite (بسيط، لا يحتاج إعداد إضافي)
  • بيئة الإنتاج: PostgreSQL (أفضل أداء وميزات)
  • البديل: MySQL 8.0+ (أداء جيد)

خلفية التخزين

  • بيئة التطوير: تخزين نظام الملفات
  • بيئة الإنتاج: تخزين متوافق مع S3 (قابل للتوسع ودائم)

المراقبة

  • تمكين نقطة نهاية مقاييس Prometheus
  • إعداد تنبيهات لمساحة القرص واستخدام الذاكرة
  • مراقبة حجم قائمة انتظار البريد
  • تتبع عدد مرات فشل المصادقة

الموارد ذات الصلة


آخر تحديث: ديسمبر 2025

Released under the GPL 3.0 License.