🌐 Домен и настройка TLS

Шаг 1: Настройка DNS-записей

Сначала настройте следующие DNS-записи в вашей панели управления доменом:

# Запись A — hostname → IP сервера (нужна до install)
chat.example.org. A 203.0.113.50

# MX — почтовый домен → hostname (SMTP fallback)
example.org. MX 10 chat.example.org.

SPF, DKIM TXT (default._domainkey) и DMARC — по желанию для SMTP; для HTTP-федерации chatmail не обязательны. install --domain выдаёт TLS и ключи DKIM; TXT в DNS добавляете вы. См. руководство DNS and Mail Authentication в документации проекта.

Примечание: Распространение записей DNS может занять от 5 минут до 24 часов. Для мгновенной проверки: dig +short chat.example.org A

Шаг 2: Выберите режим TLS

Madmail поддерживает четыре режима TLS. Различия показаны в таблице ниже:

Режим Метод проверки (Challenge) DNS API Порт 80 Применение
autocert HTTP-01 Нет Обязательно Продакшн-сервер
acme DNS-01 Да Нет За файрволом
file Готовый сертификат
self_signed Разработка и тесты

🏆 Режим autocert Рекомендуется

Установка (madmail Install)
sudo madmail install \
  --domain chat.example.org \
  --tls-mode autocert \
  --acme-email admin@example.org \
  --enable-chatmail \
  --non-interactive

Как это работает:

  1. Madmail запускает HTTP-сервер на порту 80 для ACME-проверки
  2. Let's Encrypt отправляет запрос на порт 80 для подтверждения владения доменом
  3. Выпускается сертификат (выдается на 90 дней, продлевается автоматически)
  4. Сертификаты хранятся в /var/lib/madmail/autocert/

В файле конфигурации (madmail.conf):

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

🔐 Режим acme (DNS-01) Продвинутый

Установка (madmail Install)
sudo madmail install \
  --domain chat.example.org \
  --tls-mode acme \
  --acme-email admin@example.org \
  --acme-dns-provider cloudflare \
  --acme-dns-token "ВАШ_ТОКЕН_CLOUDFLARE" \
  --enable-chatmail \
  --non-interactive

Поддерживаемые DNS-провайдеры: cloudflare, gandi, digitalocean, vultr, hetzner, route53

📄 Режим file (Готовый сертификат)

Установка (Madmail Install)
sudo madmail 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 /путь/к/fullchain.pem /путь/к/privkey.pem
Продление: Настройте certbot-хук для перезапуска madmail после продления:
systemctl restart madmail

🧪 Режим self_signed (Тестирование)

Установка (Madmail Install)
sudo madmail install \
  --simple --ip ВАШ_IP_СЕРВЕРА \
  --tls-mode self_signed \
  --turn-off-tls

Сертификаты хранятся в /var/lib/madmail/certs/ и используются при последующих запусках.

Шаг 3: Проверка сертификата

После настройки проверьте ваш сертификат следующей командой:

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/madmail/certs/fullchain.pem /var/lib/madmail/certs/privkey.pem
Переустановка с autocert
sudo madmail install \
  --domain chat.example.org \
  --tls-mode autocert \
  --acme-email admin@example.org \
  --enable-chatmail \
  --non-interactive
Финальный перезапуск
sudo systemctl restart madmail

Решение проблем

🔑 Ошибка разрешения доступа к файлу?

Выполните следующие команды для исправления прав доступа:

Исправить права доступа
sudo chown root:madmail /path/to/cert.pem /path/to/key.pem
sudo chmod 640 /path/to/cert.pem /path/to/key.pem
🛡️ Заметки о безопасности: