From bd7361e9dc5abc8cb28e9a876f9c9475d3a015c0 Mon Sep 17 00:00:00 2001 From: austnv Date: Thu, 4 Jun 2026 12:39:59 +0300 Subject: [PATCH] feature: add docker-compose.yml for docker-mailserver; edit documentation for local SMTP-server installation --- deploy/examples/mail/docker-compose.yml | 26 +++++++++++++ docs/features/email-login.md | 51 +++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 deploy/examples/mail/docker-compose.yml diff --git a/deploy/examples/mail/docker-compose.yml b/deploy/examples/mail/docker-compose.yml new file mode 100644 index 0000000..3b8e0b7 --- /dev/null +++ b/deploy/examples/mail/docker-compose.yml @@ -0,0 +1,26 @@ +services: + mailserver: + image: ghcr.io/docker-mailserver/docker-mailserver:latest + container_name: mailserver + hostname: mail.example.com # Замените на ваш реальный домен (оставить поддомен mail) + domainname: example.com # Замените на ваш реальный домен + ports: + - "25:25" + - "587:587" + - "465:465" + - "993:993" + volumes: + - ./mail-data:/var/mail + - ./config:/tmp/docker-mailserver + environment: + - SSL_TYPE=manual + - SSL_CERT_PATH=path/to/your/crt/file/example.com.crt # Путь к файлу сертификата + - SSL_KEY_PATH=path/to/your/key/file/example.com.key # Путь к закрытому ключу + - OVERRIDE_HOSTNAME=mail.example.com # Замените на ваш реальный домен + - PERMIT_DOCKER=network + - ENABLE_OPENDKIM=0 + - ENABLE_OPENDMARC=0 + - ENABLE_AMAVIS=0 + - ENABLE_CLAMAV=0 + - ENABLE_SPAMASSASSIN=0 + restart: always \ No newline at end of file diff --git a/docs/features/email-login.md b/docs/features/email-login.md index c200518..710f153 100644 --- a/docs/features/email-login.md +++ b/docs/features/email-login.md @@ -106,3 +106,54 @@ docker compose logs -f backend - Пользователь получает `rate_limited`: подождите `EMAIL_CODE_RESEND_SECONDS` или проверьте brute-force настройки. Email-уведомления поддержки, платежей и жизненного цикла подписки используют тот же SMTP-контур. Сценарий поддержки описан в [разделе тикетов](support.md), сводка по каналам - в разделе [уведомления](notifications.md). + +## Настройка локального SMTP-сервера + +### Требования + +Перед запуском локального SMTP-сервера вам потребуется настроить DNS-записи вашего домена: + +* A — mail.example.com (указать IP вашего сервера) +* MX — mail.example.com (приоритет 10) +* PTR — mail.example.com (настраивается у вашего хостера VPS) +* TXT — `v=spf1 ip4:1.2.3.4 ~all` (поддомен @, замените `1.2.3.4` на реальный ipv4 вашего сервера) + +После изменения DNS-записей подождите некоторое время (иногда требуется от 3 часов до суток) для применения изменений. + +Для использования STARTTLS необходимо получить TLS/SSL-сертификат для домена mail.example.com. Самый простой способ это сделать — прописать следующую директиву в Caddyfile (если вы используете Caddy): + +```Caddyfile +https://mail.example.com { + respond "Mail server" +} +``` + +### Установка + +1. Настройка docker-compose.yml: + +```bash +mkdir -p /opt/mailserver +cd /opt/mailserver +curl -O https://github.com/3252a8/remnawave-minishop/blob/main/deploy/examples/mail/docker-compose.yml +nano docker-compose.yml +``` + +2. Запуск: + +```bash +docker compose up -d +``` +3. Создание пользователя: +```bash +# Скрипт попросит придумать пароль и потвердить его +docker exec -it mailserver setup email add no-reply@example.com + +# Проверка создания пользователя +docker exec -it mailserver setup email list + +# Должны увидеть: +# no-reply@example.com +``` + +После всех настроек вы можете использовать свой почтовый клиент (Microsoft Outlook, Mozilla Thunderbird) для отправки и получения писем. В окне добавления нового аккаунта достаточно ввести созданную почту no-reply@example.com и пароль.