دليل النشر
يغطي هذا الدليل النشر الإنتاجي لخادم 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متطلبات المنافذ
| المنفذ | الخدمة | الوصف |
|---|---|---|
| 25 | SMTP | استقبال البريد (اختياري) |
| 587 | Submission | إرسال البريد |
| 465 | SMTPS | إرسال البريد المشفر |
| 993 | IMAPS | IMAP مشفر |
| 143 | IMAP | IMAP (اختياري) |
| 8825 | SMTP 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سيقوم النص تلقائيًا بما يلي:
- اكتشاف بنية النظام وتنزيل الملف الثنائي الصحيح
- تهيئة دليل التكوين
- تكوين 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/.sirrchatd}"
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/sirrchatd-${SYSTEM_ARCH}-${VERSION}
sudo mv sirrchatd-${SYSTEM_ARCH}-${VERSION} /usr/local/bin/sirrchatd
sudo chmod +x /usr/local/bin/sirrchatd
# التحقق من التثبيت
sirrchatd --help3. البناء من المصدر (اختياري)
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 502. مشاكل شهادة TLS
bash
# تحقق من تكوين DNS
sirrchatd dns check
# اختبار تحدي DNS يدويًا
sirrchatd 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/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
- إعداد التنبيه لمساحة القرص واستخدام الذاكرة
- مراقبة حجم قائمة انتظار البريد الإلكتروني
- تتبع إخفاقات المصادقة
الموارد ذات الصلة
- الموقع الرسمي: https://sirrchat.org
- مستودع GitHub: https://github.com/mail-chat-chain/mailchatd
- الوثائق: https://docs.sirrchat.org
آخر تحديث: ديسمبر 2025