В этом документе приведено описание всех доступных эндпоинтов API панели управления MailAdmin.
- Базовый URL:
/api - Формат данных: JSON
- Аутентификация: Большинство эндпоинтов требуют передачи JWT токена в заголовке
Authorization. Формат:Authorization: Bearer <token>
Аутентификация пользователя и получение токена.
- Аутентификация: Не требуется.
- Тело запроса:
{ "username": "admin@example.com", "password": "your_password" } - Успешный ответ (200 OK):
Примечание: Также устанавливается HttpOnly Cookie
{ "access_token": "eyJhbGciOi...", "user": { "username": "admin@example.com", "superadmin": true } }refreshToken.
Обновление Access Token с использованием Refresh Token.
- Аутентификация: Использует Cookie
refreshToken. - Успешный ответ (200 OK):
{ "access_token": "eyJhbGciOi..." }
Выход из системы.
- Аутентификация: Не требуется. Очищает куку
refreshToken. - Успешный ответ:
200 OK(без тела).
Получение информации о текущем пользователе.
- Аутентификация: Требуется JWT.
- Успешный ответ (200 OK): Данные пользователя (Claims).
Смена пароля текущего пользователя.
- Аутентификация: Требуется JWT.
- Тело запроса:
{ "new_password": "new_secure_password" } - Успешный ответ (200 OK):
{ "message": "password changed successfully" }
Доступно только для SuperAdmin.
Получение списка всех администраторов.
- Аутентификация: Требуется JWT (SuperAdmin).
- Успешный ответ (200 OK): Массив объектов администраторов.
Получение деталей конкретного администратора и управляемых им доменов.
- Аутентификация: Требуется JWT (SuperAdmin).
- Успешный ответ (200 OK):
{ "admin": { ... }, "domains": ["example.com", "test.com"] }
Создание нового администратора.
- Аутентификация: Требуется JWT (SuperAdmin).
- Тело запроса:
{ "username": "newadmin@example.com", "password": "secure_password", "superadmin": false, "active": true, "domains": ["example.com"] } - Успешный ответ (201 Created): Созданный объект администратора.
Редактирование администратора.
- Аутентификация: Требуется JWT (SuperAdmin).
- Тело запроса:
{ "password": "optional_new_password", "active": true, "superadmin": false, "phone": "+123456789", "email_other": "backup@gmail.com", "domains": ["example.com", "newdomain.com"] } - Успешный ответ:
200 OK(без тела).
Удаление администратора.
- Аутентификация: Требуется JWT (SuperAdmin).
- Успешный ответ:
204 No Content.
Получение списка доменов с их статистикой.
- Аутентификация: Требуется JWT.
- Параметры строки запроса (Query):
search(string, optional) — поиск по имени или описанию.active(bool, optional) — фильтр по статусу (true/false).
- Успешный ответ (200 OK):
[ { "domain": "example.com", "description": "Основной домен", "aliases": 10, "mailboxes": 5, "maxquota": 10240, "quota": 2048, "transport": "virtual", "backupmx": false, "active": true, "mailboxes_count": 3, "aliases_count": 2, "quota_used": 1500 } ]
Создание нового домена. Примечание: Автоматически создаются RFC-алиасы (postmaster, abuse, hostmaster).
- Аутентификация: Требуется JWT (SuperAdmin).
- Тело запроса:
{ "domain": "newdomain.com", "description": "Описание", "aliases": 0, "mailboxes": 0, "maxquota": 0, "quota": 0, "transport": "virtual", "backupmx": false, "active": true } - Успешный ответ (201 Created): Созданный объект домена.
Редактирование домена.
- Аутентификация: Требуется JWT (SuperAdmin).
- Тело запроса: Те же поля, что и при создании (кроме
domain). - Успешный ответ (200 OK): Обновленный объект домена.
Каскадное удаление домена и всех связанных с ним ящиков, алиасов и настроек.
- Аутентификация: Требуется JWT (SuperAdmin).
- Успешный ответ:
204 No Content.
Генерация рекомендуемых DNS-записей (MX, SPF, DKIM, DMARC) для домена.
- Аутентификация: Требуется JWT (Доступ к домену).
- Успешный ответ (200 OK):
{ "domain": "example.com", "spf": "v=spf1 ip4:1.2.3.4 mx a -all", "dkim": "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...", "dmarc": "v=DMARC1; p=quarantine; rua=mailto:postmaster@example.com" }
Получение списка ящиков.
- Аутентификация: Требуется JWT.
- Параметры строки запроса (Query):
domain(string) — обязателен, если не указанsearch.search(string, optional) — поиск по username или имени.page(int, default 1).limit(int, default 50).active(bool, optional).
- Заголовки ответа:
X-Total-Count— общее количество. - Успешный ответ (200 OK): Массив объектов
Mailboxс полямиquota_usedиmessages.
Создание почтового ящика. Примечание: Автоматически создается зеркальный алиас.
- Аутентификация: Требуется JWT (Доступ к домену).
- Тело запроса:
{ "username": "user@example.com", "password": "secure_password", "name": "Иван Иванов", "quota": 1024, "active": true, "phone": "+123456789", "email_other": "backup@gmail.com" } - Успешный ответ (201 Created): Созданный объект.
Редактирование ящика.
- Аутентификация: Требуется JWT (Доступ к домену).
- Тело запроса:
{ "password": "optional_new_password", "name": "Новое Имя", "quota": 2048, "active": true, "phone": "+123456789", "email_other": "backup@gmail.com" } - Успешный ответ (200 OK): Обновленный объект.
Удаление ящика и связанных алиасов/автоответчиков.
- Аутентификация: Требуется JWT (Доступ к домену).
- Успешный ответ:
204 No Content.
Массовое создание ящиков со стандартным паролем.
- Тело запроса:
{ "domain": "example.com", "prefixes": ["user1", "user2"], "password": "common_password", "quota": 1024, "active": true } - Ответ (201 Created):
{"created": 2}
Массовое удаление.
- Тело запроса:
{"usernames": ["user1@example.com", "user2@example.com"]} - Ответ:
204 No Content
Массовое изменение статуса (активен/заблокирован).
- Тело запроса:
{"usernames": ["user1@example.com"], "active": false} - Ответ:
204 No Content
Список алиасов пересылки.
- Аутентификация: Требуется JWT.
- Параметры Query:
domain,search,page,limit.
Создание алиаса.
- Тело:
{"address": "info@example.com", "goto": "user@example.com,boss@example.com", "domain": "example.com", "active": true} - Ответ:
201 Created.
Редактирование.
- Тело:
{"goto": "new@example.com", "active": true}
Удаление.
Только для SuperAdmin.
GET /api/aliases/domain-aliases?domain=...POST /api/aliases/domain-aliases(Тело:AliasDomainобъект)DELETE /api/aliases/domain-aliases/:alias_domain
Просмотр логов аудита действий администраторов.
- Параметры:
page,limit(max 500),domain.
Сводная статистика для главной страницы (кол-во доменов, ящиков, занятая квота, последние логи).
Доступно только для SuperAdmin.
GET /api/system/health— Статус RAM, CPU, Диска, сервисов (Postfix, Dovecot, MySQL и др.).GET /api/system/queue— Просмотр почтовой очереди Postfix.POST /api/system/queue/flush— Принудительная отправка очереди.DELETE /api/system/queue/:id— Удаление письма из очереди (idилиall).GET /api/system/logs?lines=200&search=...— Просмотр системных логов/var/log/mail.log.GET /api/system/fail2ban— Список забаненных IP.DELETE /api/system/fail2ban/unban?ip=...&jail=...— Разбан IP.
GET /api/tools/check-mx/:domain— Быстрая проверка MX-записей.POST /api/tools/send-email— Отправка тестового письма.POST /api/tools/broadcast— Рассылка объявлений по всем ящикам домена.
GET /api/mailboxes/:username/vacationPUT /api/mailboxes/:username/vacation- Тело:
{"subject": "...", "body": "...", "active": true, "activefrom": "...", "activeuntil": "...", "interval_time": 1}
- Тело:
GET /api/sieve/:username— Получение правил (в т.ч.GLOBALдля суперадмина).POST /api/sieve/:username— Сохранение правил (JSON).POST /api/sieve/:username/import— Импорт сырого.sieveфайла с сервера в веб-интерфейс.