نظام التخزين
يوفر 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/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
sirrmeshd quota set --user user@example.com --quota 5GBعرض استخدام الحصة
bash
sirrmeshd 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
# نسخ احتياطي لجميع البيانات
sirrmeshd backup create --output /backups/sirrchat-$(date +%Y%m%d).tar.gz
# نسخ احتياطي لمستخدم محدد
sirrmeshd backup create --user user@example.comاستعادة البيانات
bash
# استعادة جميع البيانات
sirrmeshd backup restore --input /backups/sirrchat-20250115.tar.gz
# استعادة مستخدم محدد
sirrmeshd backup restore --user user@example.com --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
أكبر مستخدم: user@example.com (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 user@example.comالمشاكل الشائعة
مساحة القرص غير كافية
bash
# تنظيف رسائل البريد الإلكتروني القديمة
sirrmeshd cleanup --older-than 1y
# ضغط رسائل البريد الإلكتروني
sirrmeshd storage compressفشل اتصال S3
bash
# اختبار اتصال S3
sirrmeshd storage test --type s3
# عرض الأخطاء التفصيلية
sirrmeshd storage test --debugالوثائق ذات الصلة: