🌐 راه‌اندازی دامنه و TLS

مرحله ۱: تنظیم رکوردهای DNS

ابتدا باید رکوردهای DNS زیر را در پنل مدیریت دامنه خود تنظیم کنید:

# رکورد A — اشاره دامنه به آی‌پی سرور
chat.example.org. A 203.0.113.50
نکته: بعد از تنظیم رکوردها، ممکن است بین ۵ دقیقه تا ۲۴ ساعت طول بکشد تا فعال شوند. برای بررسی فوری: dig +short chat.example.org A

مرحله ۲: انتخاب حالت TLS

Madmail چهار حالت TLS پشتیبانی می‌کند. جدول زیر تفاوت‌ها را نشان می‌دهد:

حالت چالش DNS API پورت 80 هدف
autocert HTTP-01 خیر نیاز است سرور اصلی (تولید)
acme DNS-01 بله خیر سرور پشت فایروال
file گواهینامه آماده
self_signed تست و توسعه

🏆 حالت autocert پیشنهادی

نصب (Maddy Install)
sudo maddy install \
  --domain chat.example.org \
  --tls-mode autocert \
  --acme-email admin@example.org \
  --enable-chatmail \
  --non-interactive

طرز کار:

  1. Madmail یک سرور HTTP روی پورت ۸۰ برای چالش ACME راه‌اندازی می‌کند
  2. Let's Encrypt با ارسال درخواست به پورت ۸۰، مالکیت دامنه را تأیید می‌کند
  3. گواهینامه صادر می‌شود (اعتبار ۹۰ روز، تمدید خودکار)
  4. گواهینامه‌ها در /var/lib/maddy/autocert/ ذخیره می‌شوند

در فایل تنظیمات (maddy.conf):

maddy.conf
tls {
    loader autocert {
        hostname chat.example.org
        email admin@example.org
        cache_dir /var/lib/maddy/autocert
        agreed
    }
}

🔐 حالت acme (DNS-01) پیشرفته

نصب (Maddy Install)
sudo maddy install \
  --domain chat.example.org \
  --tls-mode acme \
  --acme-email admin@example.org \
  --acme-dns-provider cloudflare \
  --acme-dns-token "YOUR_CLOUDFLARE_TOKEN" \
  --enable-chatmail \
  --non-interactive

ارائه‌دهندگان DNS پشتیبانی‌شده: cloudflare, gandi, digitalocean, vultr, hetzner, route53

📄 حالت file (گواهینامه موجود)

نصب (Maddy Install)
sudo maddy install \
  --domain chat.example.org \
  --tls-mode file \
  --cert-path /etc/letsencrypt/live/chat.example.org/fullchain.pem \
  --key-path /etc/letsencrypt/live/chat.example.org/privkey.pem \
  --enable-chatmail

فرمت فایل تنظیمات:

tls file /path/to/fullchain.pem /path/to/privkey.pem
تمدید: یک hook در certbot تنظیم کنید تا بعد از تمدید، maddy ریستارت شود:
systemctl restart maddy

🧪 حالت self_signed (تست)

نصب (Maddy Install)
sudo maddy install \
  --simple --ip YOUR_SERVER_IP \
  --tls-mode self_signed \
  --turn-off-tls

گواهینامه‌ها در /var/lib/maddy/certs/ ذخیره و در ری‌استارت بعدی مجدد استفاده می‌شوند.

مرحله ۳: بررسی گواهینامه

بعد از راه‌اندازی، گواهینامه خود را با این دستور بررسی کنید:

echo | openssl s_client -connect chat.example.org:443 \ -servername chat.example.org 2>&1 | \ openssl x509 -noout -subject -issuer -dates

خروجی باید شبیه این باشد:

subject=CN=chat.example.org issuer=C=US, O=Let's Encrypt, CN=E7 notBefore=Feb 21 15:41:47 2026 GMT notAfter=May 22 15:41:46 2026 GMT

تغییر حالت TLS

از self_signed به autocert

حذف گواهینامه‌های قدیمی
sudo rm /var/lib/maddy/certs/fullchain.pem /var/lib/maddy/certs/privkey.pem
نصب مجدد با autocert
sudo maddy install \
  --domain chat.example.org \
  --tls-mode autocert \
  --acme-email admin@example.org \
  --enable-chatmail \
  --non-interactive
اجرای نهایی
sudo systemctl restart maddy

عیب‌یابی

🔑 file: خطای Permission denied؟

دستورات زیر را برای اصلاح مالکیت و دسترسی فایل‌ها اجرا کنید:

Fix Permissions
sudo chown root:maddy /path/to/cert.pem /path/to/key.pem
sudo chmod 640 /path/to/cert.pem /path/to/key.pem
🛡️ ملاحظات امنیتی: