wiki/Почта.md
2026-09-22 16:05:17 +04:00

92 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Почта — Mailcow + SOGo
Домен **pankin.info**, сервер **nab27node** (192.168.27.107).
## Доступ
| Куда | Как |
|---|---|
| Webmail (SOGo) | https://mail.pankin.info/SOGo/ (из LAN: https://192.168.27.107:8443/SOGo/) |
| Админ-панель | https://mail.pankin.info/admin/ (из LAN: http://192.168.27.107:8080/admin/) |
| SMTP (отправка) | mail.pankin.info:587 (STARTTLS) или :465 (SMTPS) |
| IMAP (получение) | mail.pankin.info:143 (STARTTLS) или :993 (IMAPS) |
| POP3 | mail.pankin.info:110 или :995 |
**Ящик:** `vladislav@pankin.info` (пароль в `.env` mailcow)
## Архитектура
- 18 контейнеров Docker: nginx, php-fpm, mysql, postfix, dovecot, sogo, rspamd, unbound, redis, memcached, watchdog, clamd, ofelia, netfilter, dockerapi, acme, olefy, postfix-tlspol
- Compose: `/mnt/disk/docker-compose/mailcow/`
- Данные: `/mnt/disk/docker-compose/mailcow/data/`
- Reverse-proxy: nginx `mail.pankin.info` (443) → mailcow 8443
- DNS: A `mail.pankin.info` → 80.234.91.82; MX/SPF/DKIM/DMARC выданы
## Порты (LAN 192.168.27.107)
| Порт | Протокол | Назначение |
|---|---|---|
| 25 | SMTP | входящая почта |
| 465 | SMTPS | исходящая (implicit TLS) |
| 587 | SUBMISSION | исходящая (STARTTLS) |
| 143 | IMAP | получение (STARTTLS) |
| 993 | IMAPS | получение (implicit TLS) |
| 110 | POP3 | получение |
| 995 | POPS | получение (implicit TLS) |
| 8080 | HTTP | webmail + админка (LAN) |
| 8443 | HTTPS | webmail + админка (LAN) |
| 4190 | SIEVE | правила обработки |
| 13306 | MySQL | БД mailcow |
| 7654 | Redis | кэш/очереди |
| 19991 | Doveadm | утилиты dovecot |
## Yandex SMTP relay (18.09.2026)
Исходящая почта ходит через **Yandex** (`smtp.yandex.ru:587`) — обходит проблему PTR/HELO с Gmail.
- Учётка: `vladislav-pankin@yandex.ru`
- Пароль приложения: `lrmjfroshcelywet` (создан в id.yandex.ru → Пароли приложений)
- Конфиг postfix (`extra.cf`):
- `relayhost = [smtp.yandex.ru]:587`
- `smtp_sasl_auth_enable = yes`
- `smtp_sasl_password_maps = hash:/opt/postfix/conf/sasl_passwd`
- `mynetworks = 127.0.0.0/8 172.22.1.0/24 192.168.27.0/24`
- `canonical_maps = hash:/opt/postfix/conf/canonical`
- `canonical` мапит `@pankin.info` → `vladislav-pankin@yandex.ru` (иначе Yandex отклоняет невалидный отправитель)
- IMAP/POP3-доступ в Yandex включён (mail.yandex.ru → Настройки → Почтовые программы)
## Локальная доставка
- Postfix → Dovecot (maildir)
- `virtual_uid_maps = static:5000`, `virtual_gid_maps = static:5000`
- Maildir: `/var/vmail/pankin.info/vladislav/` (в контейнере postfix)
- SOGo → postfix (порт 588, `588 inet n - - - - smtpd` в master.cf)
## API
- Ключ: `8914bcfac817f76e9dec6e04bdde787f-rw` (access=rw)
- Использование: `curl -sk -H "Host: mail.pankin.info" -H "X-Api-Key: <key>" http://192.168.27.107:8080/api/v1/...`
- `add/mailbox` требует `local_part` + `password` + `password2`
## Управление
```bash
cd /mnt/disk/docker-compose/mailcow
docker compose ps # статус контейнеров
docker compose logs # логи
docker compose restart postfix-mailcow # перезапуск postfix
```
## Проброс SMTP в роутере
Проброс 25/587/465 на 80.234.91.82 **сделан** — входящая почта из интернета работает.
## SOGo-авторизация (патч 22.09.2026)
**Проблема:** SOGo-логин читает `_sogo_static_view.c_password`, а не `mailbox.password`. Функция `update_sogo_static_view()` в `functions.inc.php` при создании/смене пароля ящика вставляла **случайный** `{SSHA256}`-хеш → webmail-логин падал с `403 /SOGo/connect`, хотя IMAP и админка работали.
**Патч:** `functions.inc.php` модифицирован — `update_sogo_static_view()` теперь кладёт `mailbox.password` (bcrypt) вместо случайного SHA256. Бэкап: `functions.inc.php.bak`.
**Проверка:** `sogo_access=1`, `force_pw_update=0` → SOGo получает реальный пароль. Совпадает с upstream (mailcow PR #5183).
## Импорт почты с 192.168.27.173 (завершён 20.09.2026)
`imapsync 2.314` перенёс два ящика:
1. `Admin` (173:143) → `vladislav@pankin.info` (107:993): 5 папок, **38 писем**
2. `vladislav` (173:143) → `vladislav@pankin.info` (107:993): 22 папки, **159 090 писем**, **16.638 GiB**, 10 505 дубликатов пропущено, время ~7.2 часа
Итого на 107: ~159 128 писем.
## SSL-сертификат dovecot (20.09.2026)
Заменён self-signed → Let's Encrypt (`C = US, O = Let's Encrypt, CN = YE1`, до 17.12.2026). Файлы: `data/assets/ssl/{cert.pem,key.pem}` (скопированы из `/etc/letsencrypt/live/mail.pankin.info/`).