نظام التخزين
يوفر SirrMesh خيارات تخزين مرنة، تدعم خلفيات تخزين متعددة من أنظمة الملفات المحلية إلى تخزين الكائنات السحابية.
أنواع التخزين
التخزين المحلي
أبسط طريقة تخزين، مناسبة للنشر أحادي الخادم.
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/sirrmeshd/sirrchat.db"تنسيق تخزين البريد الإلكتروني
Maildir
تنسيق تخزين البريد الإلكتروني القياسي، ملف واحد لكل بريد إلكتروني.
/var/mail/[email protected]/
├── 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
sirrmeshd quota set --user [email protected] --quota 5GBعرض استخدام الحصة
bash
sirrmeshd quota get --user [email protected]النسخ الاحتياطي والاسترداد
النسخ الاحتياطي التلقائي
toml
[storage.backup]
enabled = true
schedule = "0 2 * * *" # يوميًا في الساعة 2 صباحًا
retention_days = 30
[storage.backup.destination]
type = "s3"
bucket = "sirrchat-backups"النسخ الاحتياطي اليدوي
bash
# نسخ احتياطي لجميع البيانات
sirrmeshd backup create --output /backups/sirrchat-$(date +%Y%m%d).tar.gz
# نسخ احتياطي لمستخدم محدد
sirrmeshd backup create --user [email protected]استعادة البيانات
bash
# استعادة جميع البيانات
sirrmeshd backup restore --input /backups/sirrchat-20250115.tar.gz
# استعادة مستخدم محدد
sirrmeshd backup restore --user [email protected] --input backup.tar.gzترحيل البيانات
الترحيل من خوادم البريد الأخرى
من Postfix/Dovecot
bash
sirrmeshd migrate --from maildir --source /var/mail/vhostsمن Exchange
bash
sirrmeshd migrate --from pst --source /exports/*.pstترحيل خلفية التخزين
الترحيل من المحلي إلى S3:
bash
sirrmeshd storage migrate --from local --to s3المراقبة والصيانة
إحصائيات استخدام التخزين
bash
sirrmeshd storage statsالإخراج:
الحجم الإجمالي: 125.5 GB
المستخدمون: 1,234
المتوسط لكل مستخدم: 104.2 MB
أكبر مستخدم: [email protected] (5.2 GB)عمليات التنظيف
حذف رسائل البريد الإلكتروني منتهية الصلاحية
bash
sirrmeshd cleanup --older-than 2yتنظيف سلة المهملات
bash
sirrmeshd cleanup --trash --older-than 30dتنظيف الملفات المؤقتة
bash
sirrmeshd 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/sirrmeshd/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
# التحقق من اتصال التخزين
sirrmeshd storage test
# التحقق من سلامة البيانات
sirrmeshd storage verify
# إصلاح صناديق البريد التالفة
sirrmeshd storage repair --user [email protected]المشاكل الشائعة
مساحة القرص غير كافية
bash
# تنظيف رسائل البريد الإلكتروني القديمة
sirrmeshd cleanup --older-than 1y
# ضغط رسائل البريد الإلكتروني
sirrmeshd storage compressفشل اتصال S3
bash
# اختبار اتصال S3
sirrmeshd storage test --type s3
# عرض الأخطاء التفصيلية
sirrmeshd storage test --debugالوثائق ذات الصلة: