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.