add kerio format support

This commit is contained in:
2026-07-17 11:42:12 +07:00
parent ccd8e8eb1b
commit 11175b4e31
4 changed files with 155 additions and 33 deletions
+23 -1
View File
@@ -11,6 +11,8 @@
- **Проверка подключения** к API (домены/ящики читаются, чтобы подтвердить ключ и allow-list).
- **Выбор домена**: после проверки подключения можно выбрать домен из списка mailcow —
тогда в CSV достаточно логина без `@домена` (email собирается как `логин@выбранный_домен`).
- **Экспорт Kerio Connect** распознаётся автоматически — файл выгрузки пользователей
из старого сервера скармливается как есть, без ручной конвертации (см. «Формат CSV»).
- **Предпросмотр**: разбор CSV, структурная валидация (email, пароль, дубликаты),
плюс — если задан ключ — сверка с живым mailcow: пропуск существующих ящиков и
отсев несуществующих доменов.
@@ -47,7 +49,27 @@ petrov@amega.kz;An0therPass!;Пётр Петров
| `password` | да | <8 символов → предупреждение |
| `name` | нет | ФИО; по умолчанию = localpart |
| `quota` | нет | МиБ; иначе «квота по умолчанию» |
| `active` | нет | `1`/`0`, по умолчанию `1` |
| `active` | нет | `1`/`0` (`yes`/`no`, `да`/`нет`), по умолчанию `1` |
### Экспорт из Kerio Connect
Файл выгрузки пользователей Kerio (`Name;FullName;Description;Enable;...`)
распознаётся автоматически по заголовкам — конвертировать его вручную не нужно.
При разборе такого файла предпросмотр пишет «формат: экспорт Kerio».
Kerio экспортирует логины **без домена**, поэтому домен нужно выбрать в списке UI —
иначе файл будет отклонён с соответствующей ошибкой. Соответствие колонок:
| колонка Kerio | → mailcow | примечание |
|-----------------------|--------------|--------------------------------------------------|
| `MailAddress` | логин | запасной вариант — `Name` |
| `Description` | `password` | Kerio хранит пароль именно здесь |
| `FullName` | `name` | пусто → mailcow подставит логин |
| `Enable` | `active` | `No` → ящик создаётся выключенным |
| `DiskSizeLimit (kB)` | `quota` | kB пересчитываются в МиБ; пусто → квота по умолчанию |
| `Role` | — | учётки с ролью `*admin` помечаются «служебная» и не импортируются |
Остальные колонки выгрузки (`ConsumedSize`, `LastLogin`, `Groups` и прочие) игнорируются.
## Запуск