دليل النشر
يغطي هذا الدليل نشر خادم 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متطلبات المنافذ
| المنفذ | الخدمة | الوصف |
|---|---|---|
| 25 | SMTP | استقبال البريد (اختياري) |
| 587 | Submission | إرسال البريد |
| 465 | SMTPS | إرسال بريد مشفر |
| 993 | IMAPS | IMAP مشفر |
| 143 | IMAP | IMAP (اختياري) |
| 8825 | SMTP 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سيقوم السكربت تلقائيًا بـ:
- اكتشاف بنية النظام وتنزيل الملف الثنائي الصحيح
- تهيئة دليل التكوين
- تكوين DNS وشهادات TLS (يدعم 15 مزود DNS)
- إنشاء وبدء خدمة 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_HOME2. تنزيل الملف الثنائي
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 --help3. البناء من المصدر (اختياري)
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 502. مشاكل شهادة TLS
bash
# التحقق من تكوين DNS
sirrmeshd dns check
# اختبار تحدي DNS يدويًا
sirrmeshd dns export3. فشل إرسال/استقبال البريد
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
- إعداد تنبيهات لمساحة القرص واستخدام الذاكرة
- مراقبة حجم قائمة انتظار البريد
- تتبع عدد مرات فشل المصادقة
الموارد ذات الصلة
- الموقع الرسمي: https://sirrchat.org
- مستودع GitHub: https://github.com/sirrmesh/SirrMesh
- الوثائق: https://docs.sirrchat.org
آخر تحديث: ديسمبر 2025