Справочник команд
Полный список того, что умеет mailnode. Каждая команда печатает результат и пишет действие в журнал. Запускать от root.
Общие
| Команда | Что делает |
|---|---|
mailnode init | инициализация узла: база, ключи, каталоги, первые конфиги |
mailnode version | показать версию |
mailnode doctor | проверка служб, портов, MX и очереди |
mailnode render | пересобрать конфиги Postfix, Dovecot, OpenDKIM и rspamd из базы, перезапустить службы |
mailnode render --no-reload | только собрать файлы, службы не трогать |
Домены
mailnode domain add example.ru # домен, ключ DKIM создаётся сразу
mailnode domain ls
mailnode domain rm example.ru # удаляет домен и его ключи
Ящики
mailnode mailbox add ivan@example.ru --password 'секрет' --quota 2G
mailnode mailbox ls
mailnode mailbox passwd ivan@example.ru 'новый-пароль'
mailnode mailbox rm ivan@example.ru
Квота: 500M, 2G, 0 — без ограничения. Пароль можно не указывать — узел сгенерирует.
Алиасы
mailnode alias add info@example.ru ivan@example.ru
mailnode alias add sales@example.ru ivan@example.ru,petr@example.ru
mailnode alias ls
mailnode alias rm info@example.ru
DKIM
mailnode dkim show example.ru
Печатает селектор и полную TXT-запись. Руками ключ не меняется: он создан при добавлении домена и переезжает вместе с бандлом.
TLS
mailnode tls show # какой сертификат используется и до какой даты
mailnode tls caddy # забрать сертификат, выпущенный Caddy
mailnode tls auto # выпустить через Let's Encrypt напрямую
mailnode tls set /путь/fullchain.pem /путь/privkey.pem
Состояние: бандл
mailnode export /root/node.tar.gz # домены, ящики, ключи, настройки
mailnode bundle-info /root/node.tar.gz # что внутри, без разворачивания
mailnode import /root/node.tar.gz # развернуть на другом узле
mailnode import --force ... # перезаписать существующее
mailnode import --no-render ... # не пересобирать конфиги
Импорт сверяет SHA256 каждого файла с манифестом и отказывается от повреждённого бандла.
Узлы
mailnode nodes add mx2 root@10.0.0.2
mailnode nodes ls
mailnode nodes rm mx2
mailnode sync # развернуть бандл на все узлы
mailnode sync mx2 # только на один
mailnode replicate # скопировать почту
mailnode replicate --dry-run
mailnode replicate --target mx2 --one-way
Бэкапы
mailnode backup # в /var/backups/mailnode
mailnode backup --dir /mnt/backup
mailnode backup --keep 14 # сколько архивов хранить
mailnode backup --remote root@10.0.0.5:/backup
mailnode target add --name s3 --kind s3 --endpoint ... --bucket ... --access-key ... --secret-key ...
mailnode target test s3 # отправить пробный файл в хранилище
mailnode backup --target s3 # только в это хранилище
Спам и карантин
mailnode spam ls ivan@example.ru
mailnode spam release ivan@example.ru 42 # вернуть письмо в «Входящие»
mailnode spam rm ivan@example.ru 42
Автоответы
mailnode autoresponder set ivan@example.ru --subject "Отпуск" --text "Вернусь 3 ноября"
mailnode autoresponder show ivan@example.ru
mailnode autoresponder off ivan@example.ru
Переезд
mailnode migrate --source imap.example.com --user ivan@example.com \
--password 'пароль' --to ivan@example.ru --ssl
Дополнительно: --no-ssl для сервера без TLS, --folder-only — только письма, без учётных данных.
DMARC
mailnode dmarc ingest /var/spool/dmarc/*.xml
mailnode dmarc report example.ru
Настройки
mailnode config ls
mailnode config get message_size_limit
mailnode config set message_size_limit 104857600
Алерты
mailnode alert # проверить узел и, если есть проблемы, написать админу
mailnode alert --dry-run # только показать
mailnode alert --to admin@example.ru
База и журнал
mailnode db info # размер, таблицы, число записей
mailnode db dump # последние действия из журнала
LDAP / Active Directory
mailnode ldap status
mailnode ldap set --server ldap://dc.example.ru --base "dc=example,dc=ru" \
--bind "cn=svc,dc=example,dc=ru" --password 'пароль'
AD проверен не был
Код есть, но живого домена при разработке не было. Включайте на тестовом узле и проверяйте вход: при ошибке конфиг откатывается.
Самопроверка и восстановление
mailnode selftest # полная проверка узла
mailnode restore /root/mailnode-20261026-0330.tar.gz
mailnode restore --yes архив.tar.gz # без вопроса
mailnode queue ls
mailnode queue flush
mailnode queue rm --id 4F2C1A9B3D
mailnode queue rm --all
Ловушка домена и ключи
mailnode catchall example.ru set ivan@example.ru
mailnode catchall example.ru show
mailnode catchall example.ru off
mailnode dkim rotate example.ru --selector mail2
Импорт из mailcow
mailnode import-mailcow --docker --db-password 'DBROOT'
mailnode import-mailcow --host 10.0.0.5 --user root --password 'пароль'
Коды возврата
0 — успех, 1 — ошибка выполнения, 2 — неверные аргументы. В скриптах удобно проверять так:
mailnode domain add example.ru || echo "домен не добавлен"