fix
This commit is contained in:
@@ -48,7 +48,7 @@ gofmt -l . # список неотформатированных файл
|
||||
1. `parseCSV` → `validateRow` — структурная проверка без сети (email, пароль, дубликаты в файле).
|
||||
2. `enrichRow` — сверка с живым mailcow: несуществующий домен → `error`, существующий ящик → `exists` (пропуск). Работает только если заданы креды.
|
||||
3. `checkDomainQuota` — воспроизводит проверку mailcow: свободная квота домена = `max_quota_for_domain` − Σ(выделенных квот существующих ящиков). Если Σ квот импортируемых строк домена превышает свободную — возвращает `quotaWarn` (в МиБ). UI показывает предупреждение и **блокирует** импорт до подъёма квоты домена (домены с квотой 0 = безлимит пропускаются).
|
||||
4. `handleImport` — POST на `/api/v1/add/mailbox`, ответ разбирается `parseMailcowMsg`. Используется **только** `add` — существующие ящики никогда не модифицируются (идемпотентность).
|
||||
4. `handleImport` — POST на `/api/v1/add/mailbox`, ответ разбирается `parseMailcowMsg`. Используется **только** `add` — существующие ящики никогда не модифицируются (идемпотентность). Payload **явно** задаёт `imap_access`/`pop3_access`/`smtp_access`/`sieve_access`/`sogo_access` = `1`: иначе mailcow берёт их из серверного `$MAILBOX_DEFAULT_ATTRIBUTES`, и при переопределённых дефолтах ящик создаётся, но логин не проходит (симптом «пароль не подходит»). Пароль mailcow хеширует как есть — искажения нет.
|
||||
|
||||
### Ключевые соглашения
|
||||
|
||||
|
||||
Reference in New Issue
Block a user