Skip to content

نظام التخزين

يوفر 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/[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
sirrchatd quota set --user [email protected] --quota 5GB

عرض استخدام الحصة

bash
sirrchatd 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
# نسخ احتياطي لجميع البيانات
sirrchatd backup create --output /backups/sirrchat-$(date +%Y%m%d).tar.gz

# نسخ احتياطي لمستخدم محدد
sirrchatd backup create --user [email protected]

استعادة البيانات

bash
# استعادة جميع البيانات
sirrchatd backup restore --input /backups/sirrchat-20250115.tar.gz

# استعادة مستخدم محدد
sirrchatd backup restore --user [email protected] --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
أكبر مستخدم: [email protected] (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 [email protected]

المشاكل الشائعة

مساحة القرص غير كافية

bash
# تنظيف رسائل البريد الإلكتروني القديمة
sirrchatd cleanup --older-than 1y

# ضغط رسائل البريد الإلكتروني
sirrchatd storage compress

فشل اتصال S3

bash
# اختبار اتصال S3
sirrchatd storage test --type s3

# عرض الأخطاء التفصيلية
sirrchatd storage test --debug

الوثائق ذات الصلة:

Released under the GPL 3.0 License.