diff --git a/docs/services/lxc212-mail/mailcow.md b/docs/services/lxc212-mail/mailcow.md index c02bc1f..28d7f9b 100644 --- a/docs/services/lxc212-mail/mailcow.md +++ b/docs/services/lxc212-mail/mailcow.md @@ -24,6 +24,7 @@ 10. [Полезные команды](#10-полезные-команды) 11. [Решение проблем](#11-решение-проблем) 12. [Безопасность и обслуживание](#12-безопасность-и-обслуживание) +13. [Создание почтового ящика](#13-Создание-почтового-ящика) --- @@ -401,6 +402,166 @@ Mailcow интегрируется с внешними системами мон - Контейнер почты: 212 (192.168.1.212) - Документация: `mail.md` в репозитории конфигураций +##13. Создание почтового ящика + +### Через веб-интерфейс Mailcow + +1. Открой `https://mail.zailon.ru` в браузере +2. Нажми **«Войти»** (правый верхний угол) +3. Введи: + - **Логин**: `admin` + - **Пароль**: твой пароль администратора +4. В левом меню выбери: **Configuration** → **Mail Setup** → **Mailboxes** +5. Нажми зелёную кнопку **Add mailbox** +6. Заполни форму: + +| Поле | Что вписать | Пример | +|------|------------|--------| +| **Domain** | Выбери из списка | `zailon.ru` | +| **Local part** | Часть до @ | `zevs` | +| **Name** | Имя владельца | `Zevs` | +| **Password** | Пароль ящика | `ТвойНадёжныйПароль123!` | +| **Password (repeat)** | Повтори пароль | `ТвойНадёжныйПароль123!` | +| **Quota** | Лимит места в МБ | `5120` (5 ГБ) | + +7. Остальные поля не трогай +8. Нажми **Add mailbox** + +✅ Ящик создан. Теперь можно: +- Войти в почту: `https://mail.zailon.ru` → логин `zevs@zailon.ru` +- Настроить клиент (см. раздел [Настройка клиентов](#9-настройка-почтовых-клиентов)) + +--- + +## 🌐 Настройка Nginx Proxy Manager для mail.zailon.ru + +> Делается один раз при первом запуске почтового сервера. + +### Шаг 1: Открой админку NPM + +1. В браузере перейди: `http://192.168.1.201:81` +2. Введи логин/пароль от NPM (если не менял — смотри в `group_vars/all.yml` или спроси у админа) + +### Шаг 2: Создай новый Proxy Host + +1. В меню слева выбери **Hosts** → **Proxy Hosts** +2. Нажми кнопку **Add Proxy Host** (внизу справа) +3. Заполни вкладку **Details**: + +| Поле | Значение | +|------|----------| +| **Domain Names** | `mail.zailon.ru` (нажми Enter после ввода) | +| **Scheme** | `https` | +| **Forward Hostname / IP** | `192.168.1.212` | +| **Forward Port** | `443` | +| **Cache Assets** | ❌ выключено | +| **Block Common Exploits** | ✅ включено | +| **WebSockets Support** | ❌ выключено | + +### Шаг 3: Настрой SSL + +1. Перейди на вкладку **SSL** +2. Выбери: **Request a new SSL Certificate** +3. Поставь галочки: + - ✅ **Force SSL** + - ✅ **HTTP/2 Support** + - ✅ **I agree to the Let's Encrypt Terms of Service** +4. Поле **Email for Let's Encrypt** — введи твой email (для уведомлений) + +### Шаг 4: Добавь настройки для HTTPS-проксирования + +1. Перейди на вкладку **Advanced** +2. В поле **Custom Nginx Configuration** вставь: + +```nginx +proxy_ssl_verify off; +proxy_ssl_server_name on; +proxy_set_header Host $host; +proxy_set_header X-Real-IP $remote_addr; +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +proxy_set_header X-Forwarded-Proto $scheme; + +# Security headers +add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; +add_header X-Content-Type-Options nosniff always; +add_header X-Frame-Options SAMEORIGIN always; +add_header Referrer-Policy "strict-origin-when-cross-origin" always; +add_header Permissions-Policy "geolocation=(), camera=(), microphone=(), payment=()" always; +``` + +### Шаг 5: Ограничь доступ к админке (опционально, но рекомендуется) + +В том же поле **Custom Nginx Configuration**, **после** предыдущего блока, добавь: + +```nginx +# Ограничение доступа к админке /admin +location ^~ /admin { + allow 192.168.1.0/24; + allow 188.73.191.202; + allow 192.168.45.0/24; + deny all; + + add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; + add_header X-Content-Type-Options nosniff always; + add_header X-Frame-Options SAMEORIGIN always; + add_header Referrer-Policy "strict-origin-when-cross-origin" always; + add_header Permissions-Policy "geolocation=(), camera=(), microphone=(), payment=()" always; + + proxy_pass https://192.168.1.212:443; + proxy_ssl_verify off; + proxy_ssl_server_name on; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; +} +``` + +> ⚠️ Если не добавляешь ограничение — просто пропусти этот блок. + +### Шаг 6: Сохрани и проверь + +1. Нажми **Save** внизу страницы +2. Подожди 10-20 секунд (пока NPM выпустит сертификат Let's Encrypt) +3. Открой в браузере: `https://mail.zailon.ru` +4. Если видишь страницу входа SOGo — всё работает ✅ + +--- + +## 🔍 Проверка после настройки + +### 1. Проверь, что сертификат работает + +```bash +curl -I https://mail.zailon.ru +``` + +В ответе должна быть строка: +```text +strict-transport-security: max-age=63072000; includeSubDomains; preload +``` + +### 2. Проверь ограничение админки (если настраивал) +- С ноутбука в локальной сети: `https://mail.zailon.ru/admin` → должна открыться форма входа +- С телефона через мобильный интернет (без VPN): → должна быть ошибка `403 Forbidden` + +### 3. Проверь почту +- Открой `https://mail.zailon.ru` +- Войди как `zevs@zailon.ru` +- Отправь тестовое письмо самому себе → должно прийти мгновенно + +--- + +## 🛠 Если что-то не работает + +| Проблема | Решение | +|----------|---------| +| `403 Forbidden` при входе в админку | Проверь, что твой IP есть в `allow` в блоке `location ^~ /admin` | +| `502 Bad Gateway` | Убедись, что Mailcow запущен: `docker compose ps` в контейнере 212 | +| Браузер ругается на сертификат | Подожди 1-2 минуты после сохранения в NPM, обнови страницу | +| Не приходит письмо с внешнего ящика | Проверь проброс порта 25 на роутере и DNS-записи MX/SPF | + +Если не получается — посмотри логи NPM: в админке NPM → **Hosts** → **Proxy Hosts** → три точки у записи `mail.zailon.ru` → **Logs**. --- > **Примечание**: Все команды выполняются от имени root. \ No newline at end of file