Phase 0 done: close out and record milter spike results

De-risk spike confirmed emersion/go-milter v0.4.1 (BSD-2) interoperates with
Postfix 3.7.11 (bookworm) over protocol v6: reads From/To(per-rcpt)/Subject/
queue-id, gets client IP from Connect(), and fails open when the milter dies.
Progress tracker updated; Phase 1 (Docker + supervisord) is next.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-11 14:58:34 +03:00
parent 4e589e1080
commit 248a4db7a8
+12 -5
View File
@@ -46,10 +46,17 @@
## Текущее состояние ## Текущее состояние
- **Текущая фаза:** 0 (ещё не начата) - **Текущая фаза:** 0 ✅ закрыта → следующая **Фаза 1** (Docker + supervisord + три процесса)
- **Модель:** Opus - **Модель для Фазы 1:** Opus
- **Статус:** план и решения утверждены; инфраструктура workflow настроена - **Статус:** каркас собран и проверен на сервере; спайк milter снял главный риск ТЗ 7.3
- **Следующий шаг:** начать Фазу 0 — `go mod init codeberg.org/mix/selfpost`, структура каталогов, `LICENSE` (AGPL-3.0), скелет README, сборка с ldflags-версией; затем спайк go-milter на `selfpost.mixfed.ru`. - **Следующий шаг (Фаза 1):** `Dockerfile` (bookworm-slim: postfix, opendkim, cyrus-sasl, supervisor, logrotate); `supervisord.conf` с `priority=` (opendkim→panelpostfix); стартовая обёртка Postfix с ожиданием milter-сокетов; панель `:8080` с заглушкой + stub journal-milter listener + stub log-tailer; непривилегированный пользователь панели. Проверка: `docker build`, контейнер стартует, три процесса живы.
### Сделано в Фазе 0
- Go-модуль `codeberg.org/mix/selfpost`, каркас `cmd/panel` + `cmd/selfpost-backup`, общий `internal/buildinfo` (версия через ldflags).
- `Makefile` (статическая сборка `CGO_ENABLED=0`), `LICENSE` (полный AGPL-3.0), скелет `README.md`, `.gitattributes` (LF).
- Проверено на сервере: `go vet` чист, `make build` даёт статические бинарники, версия впечатывается.
- **Спайк go-milter** (де-риск ТЗ 7.3): v0.4.1 (BSD-2) ↔ Postfix 3.7.11 bookworm, протокол v6. Подтверждено чтение From/To(per-rcpt)/Subject/queue-id, client IP из Connect(), **fail-open** при падении milter'а. Детали: `dev/spike-milter-notes.md`.
- **Провижён dev-сервер:** Go 1.26.5, Docker 29.6.1, git, rsync, make. Host-postfix (спайковый) остановлен+отключён.
## Рабочая петля (dev loop) — ВАЖНО ## Рабочая петля (dev loop) — ВАЖНО
@@ -66,4 +73,4 @@
## Журнал фаз ## Журнал фаз
_(пока пусто — заполняется по мере закрытия фаз)_ - **Фаза 0** (2026-07-11, Opus) — каркас проекта + build-пайплайн + спайк go-milter (риск ТЗ 7.3 снят). Коммиты `4e589e1` (каркас), `87388b4` (план).