From 152e93d9979828107ea07f600a8699e42ec3bfc8 Mon Sep 17 00:00:00 2001 From: Liosha84 Date: Thu, 5 Nov 2026 22:34:48 +0100 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B0=D1=80=D0=BE=D0=BB=D0=B8=20=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D1=8B=D1=85=20=D1=8F=D1=89=D0=B8=D0=BA=D0=BE=D0=B2?= =?UTF-8?q?=20=E2=80=94=20=D0=B5=D1=89=D1=91=20=D0=B8=20=D0=B2=20=D0=BB?= =?UTF-8?q?=D0=BE=D0=B3:=20=D0=B2=D0=B8=D0=B4=D0=BD=D0=BE=20=D0=B2=20Jambo?= =?UTF-8?q?tron=20=D0=B1=D0=B5=D0=B7=20=D0=BA=D0=BE=D0=BD=D1=81=D0=BE?= =?UTF-8?q?=D0=BB=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit После передеплоя (новая база) владелец видит пароли admin@ и trap@ в проект → Сервисы → mail → Логи; файл /app/data/initial-passwords.txt остаётся. α Co-Authored-By: Claude Opus 5.5 --- README.md | 2 +- .../main/java/com/mailserver/config/DataInitializer.java | 7 ++++--- docker-compose.jambotron.yml | 3 ++- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 8f5a683..aa7a9af 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ cd frontend && npm install && npx ng serve # http://loca В мастере деплоя выбрать `docker-compose.jambotron.yml`, домен дать сервису `mail`, порт `8080`. - Пароль базы и ключ токенов создаёт контейнер `secrets-init` при первом запуске (том `secrets`) — вводить ничего не нужно, в git ничего нет. -- Ящики `admin@mail.test` (первый) и `trap@mail.test` (ловушка) создаются при старте, их пароли — в файле `/app/data/initial-passwords.txt` контейнера `mail` (том `data`, права 600): `docker exec <контейнер mail> cat /app/data/initial-passwords.txt`. Прочитать и сменить пароль в настройках. +- Ящики `admin@mail.test` (первый) и `trap@mail.test` (ловушка) создаются при старте, их пароли печатаются в лог сервиса `mail` при первом запуске (в Jambotron: проект → Сервисы → `mail` → Логи) и лежат в файле `/app/data/initial-passwords.txt` контейнера `mail` (том `data`, права 600): `docker exec <контейнер mail> cat /app/data/initial-passwords.txt`. Прочитать и сменить пароль в настройках. - Регистрация открыта (`MAIL_REGISTRATION=true`): любой может завести ящик в `MAIL_DOMAINS`. Наружу письма не уходят, поэтому для тестового стенда это безопасно; закрыть — `MAIL_REGISTRATION=false`. - Наружу открыты только веб-почта и API. SMTP (3025) — внутри сети ВМ, наружу ничего не отправляется (`OUTBOUND_MODE=off`). - Домен ящиков — `MAIL_DOMAINS` (по умолчанию `mail.test`). diff --git a/backend/src/main/java/com/mailserver/config/DataInitializer.java b/backend/src/main/java/com/mailserver/config/DataInitializer.java index 6423d00..0c9cd88 100644 --- a/backend/src/main/java/com/mailserver/config/DataInitializer.java +++ b/backend/src/main/java/com/mailserver/config/DataInitializer.java @@ -28,8 +28,8 @@ import java.util.Locale; *
  • the catch-all mailbox ({@code mailserver.catch-all}) if it does not exist yet — mail to unknown addresses is * stored there, so it must exist.
  • * - * A generated password is appended to {@code mailserver.passwords-file} (mode 600, in the data volume) — read it once - * and change the password. Without the file setting it is printed to the log once. + * A generated password is printed to the log once (visible in Jambotron: project → Services → mail → Logs) and appended + * to {@code mailserver.passwords-file} (mode 600, in the data volume) — change it after the first login. */ @Configuration public class DataInitializer { @@ -63,7 +63,8 @@ public class DataInitializer { log.info("Mailbox created: {}", address); } else if (file != null) { appendPassword(file, address, secret); - log.warn("Mailbox created: {} — password in {} (change it)", address, file); + // also in the log: the owner sees it in Jambotron (project → Services → mail → Logs) without a shell + log.warn("Mailbox created: {} — password: {} (also in {}; change it)", address, secret, file); } else { log.warn("Mailbox created: {} — password: {} (shown once, change it)", address, secret); } diff --git a/docker-compose.jambotron.yml b/docker-compose.jambotron.yml index d2434a2..8fb0d4b 100644 --- a/docker-compose.jambotron.yml +++ b/docker-compose.jambotron.yml @@ -2,7 +2,8 @@ # Outside, only the web client + API (service "mail", port 8080) through Jambotron's Caddy — give it a domain. # SMTP (3025) stays inside the VM's docker network; nothing is sent outside (OUTBOUND_MODE=off). # Secrets are generated on the first start into the "secrets" volume — nothing to type in, nothing in git. -# Mailboxes admin@ and trap@mail.test (catch-all): passwords in /app/data/initial-passwords.txt +# Mailboxes admin@ and trap@mail.test (catch-all): passwords in the "mail" log on the first start +# (Jambotron: project → Services → mail → Logs) and in /app/data/initial-passwords.txt # of the "mail" container (docker exec cat /app/data/initial-passwords.txt). name: reactive-mail