feat(webmail): Roundcube web UI (#74) #2

Merged
eSlider merged 2 commits from feat/webmail#74 into main 2026-09-01 15:09:01 +01:00
Owner

Roundcube webmail для mail.produktor.io (issue gator #74)

Добавляет webmail сервис (официальный roundcube/roundcubemail, 1.7.3) в compose:

  • IMAP tls://mail.produktor.io:143 STARTTLS + SMTP submission tls://mail.produktor.io:587 (AUTH) — через тот же compose-сеть, FQDN резолвится Docker DNS прямо на mailserver.
  • Важно про hostname: подключение к алиасу контейнера mailserver ломает TLS peer-name verification (сертификат DMS выписан на mail.produktor.io). Поэтому хост — FQDN.
  • Порт 19944 (127.0.0.1 + 172.17.0.1) — NPM proxy host 66 уже смотрит на 172.17.0.1:19944.
  • ROUNDCUBEMAIL_DES_KEY — обязательный, в .env (gitignored).
  • sqlite webmail (адресная книга) — data/roundcube/db/.

Проверено: docker compose up -d → контейнер Up; вход info@ (302), список INBOX (13 писем), чтение письма. README — раздел Web UI + список аккаунтов.

Изменён только compose.yaml + новый README.md. Секрет-скан (gitleaks) — чисто.

## Roundcube webmail для mail.produktor.io (issue gator #74) Добавляет `webmail` сервис (официальный `roundcube/roundcubemail`, 1.7.3) в compose: - IMAP `tls://mail.produktor.io:143` STARTTLS + SMTP submission `tls://mail.produktor.io:587` (AUTH) — через тот же compose-сеть, FQDN резолвится Docker DNS прямо на `mailserver`. - **Важно про hostname:** подключение к алиасу контейнера `mailserver` ломает TLS peer-name verification (сертификат DMS выписан на `mail.produktor.io`). Поэтому хост — FQDN. - Порт 19944 (127.0.0.1 + 172.17.0.1) — NPM proxy host 66 уже смотрит на `172.17.0.1:19944`. - `ROUNDCUBEMAIL_DES_KEY` — обязательный, в `.env` (gitignored). - sqlite webmail (адресная книга) — `data/roundcube/db/`. Проверено: `docker compose up -d` → контейнер Up; вход info@ (302), список INBOX (13 писем), чтение письма. README — раздел Web UI + список аккаунтов. Изменён только compose.yaml + новый README.md. Секрет-скан (gitleaks) — чисто.
eSlider added 1 commit 2026-09-01 14:21:56 +01:00
- webmail service (roundcube/roundcubemail) in compose: IMAP/SMTP
  STARTTLS against the DMS container via mail.produktor.io FQDN
  (container alias fails TLS peer-name verification)
- NPM proxy host 66 -> 172.17.0.1:19944, port 19944 published on
  127.0.0.1 + 172.17.0.1
- ROUNDCUBEMAIL_DES_KEY from .env (required)
- README: Web UI section, account list, client settings
eSlider added 1 commit 2026-09-01 15:07:59 +01:00
- admin/: Go stdlib-only HTTP viewer, lists accounts from
  config/postfix-accounts.cf with per-mailbox message counts (INBOX and
  total, same numbers doveadm reports) and storage; quota from
  dovecot-quotas.cf; Basic Auth from .env; offline tests vs fixtures
  (go test -race ./...)
- compose: mail-admin service, build admin/Dockerfile, publishes
  127.0.0.1:19945 / 172.17.0.1:19945; config and mail-data mounted :ro,
  no docker socket
- NPM proxy host 66: location /admin/ -> 172.17.0.1:19945
- README: account admin section
Author
Owner

PR расширен: добавлена read-only админ-панель mail-admin (#74, scope G-8.10).

  • admin/ — Go stdlib-only HTTP-сервис: список аккаунтов из config/postfix-accounts.cf + счётчики сообщений (INBOX/всего, как у doveadm) и размер; квоты из dovecot-quotas.cf; Basic Auth; офлайн-тесты (go test -race ./...) vs admin/testdata/.
  • compose: сервис mail-admin (build admin/Dockerfile), порты 127.0.0.1:19945 / 172.17.0.1:19945, config+mail-data read-only, без docker.sock.
  • NPM proxy host 66: location /admin/ -> 172.17.0.1:19945.
  • Проверено реальными данными: вход в Roundcube + чтение письма (ano@), админка отдаёт 5 аккаунтов, HTTPS-сертификат LE валиден (SAN mail+webmail).
PR расширен: добавлена read-only админ-панель mail-admin (#74, scope G-8.10). - admin/ — Go stdlib-only HTTP-сервис: список аккаунтов из config/postfix-accounts.cf + счётчики сообщений (INBOX/всего, как у doveadm) и размер; квоты из dovecot-quotas.cf; Basic Auth; офлайн-тесты (go test -race ./...) vs admin/testdata/. - compose: сервис mail-admin (build admin/Dockerfile), порты 127.0.0.1:19945 / 172.17.0.1:19945, config+mail-data read-only, без docker.sock. - NPM proxy host 66: location /admin/ -> 172.17.0.1:19945. - Проверено реальными данными: вход в Roundcube + чтение письма (ano@), админка отдаёт 5 аккаунтов, HTTPS-сертификат LE валиден (SAN mail+webmail).
eSlider merged commit 403c79c3e4 into main 2026-09-01 15:09:01 +01:00
eSlider deleted branch feat/webmail#74 2026-09-01 15:09:01 +01:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: eSlider/mail-server#2