🌐 راهاندازی دامنه و TLS
مرحله ۱: تنظیم رکوردهای DNS
ابتدا باید رکوردهای DNS زیر را در پنل مدیریت دامنه خود تنظیم کنید:
# رکورد A — hostname به IP سرور (قبل از install)
chat.example.org. A 203.0.113.50
# MX — دامنهٔ پست → hostname (fallback SMTP)
example.org. MX 10 chat.example.org.
chat.example.org. A 203.0.113.50
# MX — دامنهٔ پست → hostname (fallback SMTP)
example.org. MX 10 chat.example.org.
SPF، DKIM TXT (default._domainkey) و DMARC برای SMTP اختیاریاند؛ برای federation HTTP بین relayهای chatmail لازم نیستند. راهنمای DNS and Mail Authentication در مستندات پروژه.
نکته: بعد از تنظیم رکوردها، ممکن است بین ۵ دقیقه تا ۲۴ ساعت طول بکشد تا فعال شوند.
برای بررسی فوری:
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
طرز کار:
- Madmail یک سرور HTTP روی پورت ۸۰ برای چالش ACME راهاندازی میکند
- Let's Encrypt با ارسال درخواست به پورت ۸۰، مالکیت دامنه را تأیید میکند
- گواهینامه صادر میشود (اعتبار ۹۰ روز، تمدید خودکار)
- گواهینامهها در
/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
🛡️ ملاحظات امنیتی:
- کلیدهای خصوصی با دسترسی
600(فقط مالک) ذخیره میشوند - گواهینامهها با دسترسی
640(مالک + گروه) ذخیره میشوند - پوشه کش autocert با دسترسی
700(فقط مالک) ذخیره میشود - گواهینامههای Let's Encrypt اعتبار ۹۰ روزه دارند و حدود ۳۰ روز قبل از انقضا به طور خودکار تمدید میشوند