Skip to content

دليل النشر

يغطي هذا الدليل النشر الإنتاجي لخادم SirrChat.

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

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

yaml
التكوين الأدنى:
  CPU: 2 نوى
  RAM: 2GB
  Storage: 20GB SSD
  Network: 100Mbps

التكوين الموصى به:
  CPU: 4 نوى
  RAM: 4GB
  Storage: 100GB SSD
  Network: 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/mail-chat-chain/mailchatd/main/start.sh | bash

# أو التنزيل أولاً
wget https://raw.githubusercontent.com/mail-chat-chain/mailchatd/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/.sirrchatd}"
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/sirrchatd-${SYSTEM_ARCH}-${VERSION}
sudo mv sirrchatd-${SYSTEM_ARCH}-${VERSION} /usr/local/bin/sirrchatd
sudo chmod +x /usr/local/bin/sirrchatd

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

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

bash
# استنساخ المستودع
git clone https://github.com/mail-chat-chain/mailchatd.git
cd sirrchatd

# البناء
make build

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

التكوين

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

إنشاء $SIRRCHAT_HOME/sirrchatd.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

الموفرون المدعومون وتكوينهم:

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/sirrchatd-mail.service > /dev/null <<EOF
[Unit]
Description=SirrChat Mail Server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=root
Environment="SIRRCHAT_HOME=/root/.sirrchatd"
ExecStart=/usr/local/bin/sirrchatd 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 sirrchatd-mail

# تمكين البدء التلقائي عند التمهيد
sudo systemctl enable sirrchatd-mail

# التحقق من حالة الخدمة
sudo systemctl status sirrchatd-mail

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

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

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

عرض السجلات

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

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

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

نص فحص الصحة

إنشاء ~/check_sirrchat_health.sh:

bash
#!/bin/bash

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

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

# التحقق من حالة العملية
if pgrep -x sirrchatd > /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
# تحقق من بناء جملة ملف التكوين
sirrchatd run --config $SIRRCHAT_HOME/sirrchatd.conf

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

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

bash
# تحقق من تكوين DNS
sirrchatd dns check

# اختبار تحدي DNS يدويًا
sirrchatd 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/sirrchatd/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR

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

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

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

توصيات الإنتاج

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

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

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

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

المراقبة

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

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


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

Released under the GPL 3.0 License.