نظام التخزين
يوفر SirrChat خيارات تخزين مرنة، تدعم خلفيات تخزين متعددة من أنظمة الملفات المحلية إلى تخزين الكائنات السحابية.
أنواع التخزين
التخزين المحلي
أبسط طريقة تخزين، مناسبة للنشر أحادي الخادم.
toml
[storage]
type = "local"
local_path = "/var/mail"التخزين المتوافق مع S3
يدعم AWS S3 وجميع تخزينات الكائنات المتوافقة مع S3.
toml
[storage]
type = "s3"
[storage.s3]
endpoint = "s3.amazonaws.com"
region = "us-east-1"
bucket = "sirrchat-storage"
access_key = "YOUR_ACCESS_KEY"
secret_key = "YOUR_SECRET_KEY"MinIO
تخزين مفتوح المصدر متوافق مع S3.
toml
[storage.s3]
endpoint = "minio.example.com:9000"
bucket = "sirrchat"
access_key = "minioadmin"
secret_key = "minioadmin"
use_ssl = falseتخزين قاعدة البيانات
PostgreSQL
موصى به لبيئات الإنتاج.
toml
[database]
type = "postgres"
dsn = "postgresql://user:password@localhost:5432/sirrchat?sslmode=require"
# تكوين تجميع الاتصال
max_open_conns = 25
max_idle_conns = 5
conn_max_lifetime = "5m"MySQL/MariaDB
قاعدة بيانات علائقية مستخدمة على نطاق واسع.
toml
[database]
type = "mysql"
dsn = "user:password@tcp(localhost:3306)/sirrchat?parseTime=true&charset=utf8mb4"SQLite
مناسب للتطوير والنشر على نطاق صغير.
toml
[database]
type = "sqlite"
dsn = "/var/lib/sirrchatd/sirrchat.db"تنسيق تخزين البريد الإلكتروني
Maildir
تنسيق تخزين البريد الإلكتروني القياسي، ملف واحد لكل بريد إلكتروني.
/var/mail/user@example.com/
├── cur/ # رسائل البريد الإلكتروني المقروءة
├── new/ # رسائل البريد الإلكتروني الجديدة
└── tmp/ # ملفات مؤقتةتسمية الملفات
1642123456.M123456P12345.hostname,S=1234:2,S- الطابع الزمني
- معرف فريد
- الحجم
- الأعلام (مقروء، مرد عليه، إلخ)
تحسين التخزين
الضغط
ضغط تلقائي لرسائل البريد الإلكتروني القديمة لتوفير المساحة.
toml
[storage.compression]
enabled = true
algorithm = "gzip" # gzip، bzip2، zstd
min_age_days = 30 # الضغط بعد 30 يومًاإلغاء التكرار
كشف وإزالة رسائل البريد الإلكتروني المكررة تلقائيًا.
toml
[storage.deduplication]
enabled = true
hash_algorithm = "sha256"التخزين المتدرج
ترحيل البيانات تلقائيًا بناءً على تكرار الوصول.
toml
[storage.tiering]
enabled = true
# التخزين الساخن: يتم الوصول إليه بشكل متكرر
[storage.tiering.hot]
type = "local"
path = "/fast/ssd/mail"
max_age_days = 30
# التخزين البارد: أرشفة
[storage.tiering.cold]
type = "s3"
bucket = "sirrchat-archive"إدارة الحصص
حصص المستخدم
toml
[storage.quota]
default_quota = "1GB"
max_quota = "10GB"
warning_threshold = 90 # تحذير عند 90٪تعيين حصة المستخدم
bash
sirrchatd quota set --user user@example.com --quota 5GBعرض استخدام الحصة
bash
sirrchatd quota get --user user@example.comالنسخ الاحتياطي والاسترداد
النسخ الاحتياطي التلقائي
toml
[storage.backup]
enabled = true
schedule = "0 2 * * *" # يوميًا في الساعة 2 صباحًا
retention_days = 30
[storage.backup.destination]
type = "s3"
bucket = "sirrchat-backups"النسخ الاحتياطي اليدوي
bash
# نسخ احتياطي لجميع البيانات
sirrchatd backup create --output /backups/sirrchat-$(date +%Y%m%d).tar.gz
# نسخ احتياطي لمستخدم محدد
sirrchatd backup create --user user@example.comاستعادة البيانات
bash
# استعادة جميع البيانات
sirrchatd backup restore --input /backups/sirrchat-20250115.tar.gz
# استعادة مستخدم محدد
sirrchatd backup restore --user user@example.com --input backup.tar.gzترحيل البيانات
الترحيل من خوادم البريد الأخرى
من Postfix/Dovecot
bash
sirrchatd migrate --from maildir --source /var/mail/vhostsمن Exchange
bash
sirrchatd migrate --from pst --source /exports/*.pstترحيل خلفية التخزين
الترحيل من المحلي إلى S3:
bash
sirrchatd storage migrate --from local --to s3المراقبة والصيانة
إحصائيات استخدام التخزين
bash
sirrchatd storage statsالإخراج:
الحجم الإجمالي: 125.5 GB
المستخدمون: 1,234
المتوسط لكل مستخدم: 104.2 MB
أكبر مستخدم: user@example.com (5.2 GB)عمليات التنظيف
حذف رسائل البريد الإلكتروني منتهية الصلاحية
bash
sirrchatd cleanup --older-than 2yتنظيف سلة المهملات
bash
sirrchatd cleanup --trash --older-than 30dتنظيف الملفات المؤقتة
bash
sirrchatd cleanup --tempتحسين الأداء
تكوين ذاكرة التخزين المؤقت
toml
[storage.cache]
enabled = true
size_mb = 512
ttl = "1h"تحسين الفهرس
toml
[storage.indexing]
enabled = true
full_text_search = trueالتحكم في التزامن
toml
[storage.concurrency]
max_workers = 10
queue_size = 1000أمان البيانات
التشفير
تشفير النقل
toml
[storage.encryption]
# تشفير نقل S3
s3_use_tls = trueالتشفير في حالة السكون
toml
[storage.encryption]
enabled = true
algorithm = "AES-256-GCM"
key_file = "/etc/sirrchatd/encryption.key"التحكم في الوصول
toml
[storage.access]
# تقييد مسارات الوصول
allow_paths = ["/var/mail"]
deny_paths = ["/etc", "/root"]التوفر العالي
النسخ المتماثل
النسخ المتماثل الرئيسي-الثانوي
toml
[storage.replication]
mode = "master"
slaves = ["slave1.example.com", "slave2.example.com"]النسخ المتماثل متعدد الرئيسيات
toml
[storage.replication]
mode = "multi-master"
peers = ["peer1.example.com", "peer2.example.com"]التبديل الاحتياطي
toml
[storage.failover]
enabled = true
health_check_interval = "30s"
auto_failover = trueاستكشاف الأخطاء وإصلاحها
أدوات التشخيص
bash
# التحقق من اتصال التخزين
sirrchatd storage test
# التحقق من سلامة البيانات
sirrchatd storage verify
# إصلاح صناديق البريد التالفة
sirrchatd storage repair --user user@example.comالمشاكل الشائعة
مساحة القرص غير كافية
bash
# تنظيف رسائل البريد الإلكتروني القديمة
sirrchatd cleanup --older-than 1y
# ضغط رسائل البريد الإلكتروني
sirrchatd storage compressفشل اتصال S3
bash
# اختبار اتصال S3
sirrchatd storage test --type s3
# عرض الأخطاء التفصيلية
sirrchatd storage test --debugالوثائق ذات الصلة: