Что делает этот модуль #
Многие вещи на сервере уведомляют вас по почте: истекающий сертификат, заполняющийся диск, отчёт ночной задачи. Но только что установленный сервер не умеет отправлять эту почту — или пытается сделать это напрямую и в итоге попадает в папку спама, если вообще не отклоняется целиком.
Модуль smtp решает это, настраивая исходящую почту хоста через smarthost (relay, которому уже разрешено доставлять: Amazon SES, корпоративный почтовый сервер, ваш провайдер…). Он настраивает postfix, чтобы тот пересылал всю системную почту на этот smarthost, безопасно хранит пароль, переписывает отправителя на действительного и позволяет вам проверить отправку, чтобы убедиться, что письмо доходит, — сообщая реальную ошибку, если что-то идёт не так.
Держите под рукой данные smarthost: host, порт (обычно 587) и учётные данные, если требуется аутентификация. Пароль не передаётся в командной строке: он читается из stdin или из хранилища секретов, так что не остаётся в истории.
Типовые задачи #
Выберите, что хотите сделать. В каждом рецепте команда уже написана — просто замените smarthost и отправителя на свои и нажмите Копировать.
1
Настроить почтовый relay
Направьте сервер на ваш smarthost, чтобы почта действительно отправлялась.
Подключитесь по SSH к своему серверу под пользователем ubuntu.
Запустите команду с данными вашего smarthost. Пароль запрашивается через stdin, поэтому не остаётся в истории:
$ sudo imaxe smtp configure \
--host email-smtp.eu-west-1.amazonaws.com \
--user AKIAIOSFODNN7EXAMPLE \
--from [email protected]Если ваш smarthost не требует аутентификации, опустите --user. Для другого порта или режима TLS добавьте --port или --no-tls.
[email protected]. Продолжите с рецепта Отправить тестовое письмо.2
Отправить тестовое письмо
Убедитесь, что сообщение отправляется и доходит, прежде чем полагаться на оповещения.
Отправьте тестовое письмо на адрес, где вы сможете его проверить:
$ sudo imaxe smtp test --to [email protected]Если опустить --to, письмо отправляется на настроенного отправителя. Проверьте свой почтовый ящик (и папку спама), чтобы подтвердить доставку.
3
Посмотреть статус почты
Проверьте одним взглядом, настроен ли relay и активен ли он.
Сводка по relay, smarthost, отправителю и статусу MTA:
$ sudo imaxe smtp statusНужно для скрипта или панели? Добавьте --json для машиночитаемого вывода:
$ sudo imaxe smtp status --json4
Посмотреть действующую конфигурацию
Запросите активные настройки, не раскрывая пароль.
Показывает host, порт, пользователя, отправителя и режим TLS, которые действительно используются (пароль никогда не выводится):
$ sudo imaxe smtp show5
Удалить relay
Отключает пересылку и возвращает postfix в прежнее состояние.
Отключает relay исходящей почты и восстанавливает базовую конфигурацию postfix:
$ sudo imaxe smtp removeconfigure.Чаще всего отправитель не верифицирован на smarthost (SES требует верифицировать домен или адрес --from) или учётные данные неверны. Запустите imaxe smtp test: он возвращает реальную ошибку MTA, чтобы вы точно знали, что настроить.
Синопсис #
imaxe smtp <subcomando> [--host HOST] [--from CORREO] [flags]Все подкоманды требуют привилегий root (используйте sudo), потому что они трогают конфигурацию postfix, пишут в /etc/imaxe/ и перезагружают системные сервисы. Пароль smarthost никогда не передаётся как флаг: он читается из stdin или из хранилища секретов. Добавьте --json к status или show, чтобы получить машиночитаемый вывод, пригодный для скриптинга.
Подкоманды #
| Подкоманда | Что делает | Значимые флаги |
|---|---|---|
| configure | Настраивает relay исходящей почты через smarthost. Пароль читается из secrets/stdin. | --host, --port, --user, --from, --tls / --no-tls |
| test | Отправляет тестовое письмо и сообщает реальную ошибку MTA, если не удаётся. | --to |
| status | Статус: настроен ли relay, smarthost, отправитель и активный MTA. | --json |
| show | Показывает действующую конфигурацию, не раскрывая пароль. | --json |
| remove | Отключает relay и восстанавливает postfix. | — |
Аргументы и флаги #
| Флаг | Тип | По умолчанию | Описание |
|---|---|---|---|
| --host req. | string | — | SMTP-smarthost, на который пересылать почту (напр. email-smtp.eu-west-1.amazonaws.com). Обязателен в configure. |
| --port | int | 587 | SMTP-порт smarthost. |
| --user | string | — | SMTP-пользователь для аутентификации. Если опущен, relay настраивается без аутентификации. |
| --from | string | — | Переписывает отправителя всех сообщений (sender_canonical). Полезно для использования верифицированного на smarthost адреса. |
| --tls / --no-tls | bool | --tls | Принудительно включает TLS в соединении со smarthost (по умолчанию). --no-tls отключает его. |
| --to | string | отправитель | В test: получатель тестового письма. По умолчанию — настроенный отправитель. |
| --json | bool | false | В status/show выдаёт результат как JSON в stdout. |
Опции --password не существует. Учётные данные читаются из stdin во время configure или из хранилища секретов (password_secret, по умолчанию smtp), так что они никогда не появляются в истории или в таблице процессов.
Файлы и пути #
| Путь | Содержимое |
|---|---|
| /etc/imaxe/smtp.yml | Конфигурация модуля: host, порт, TLS, пользователь, отправитель и ссылка на секрет пароля. |
| /etc/postfix/main.cf | Конфигурация postfix, которую модуль настраивает для пересылки (relayhost, canonical отправителя…). |
| /var/log/mail.log | Лог postfix с каждой попыткой доставки и причиной отказов. |
Пример smtp.yml:
enabled: true
host: email-smtp.eu-west-1.amazonaws.com
port: 587
tls: true
username: AKIAIOSFODNN7EXAMPLE
from: [email protected]
password_secret: smtpКоды возврата и логи #
Каждый запуск возвращает код, который можно проверить через echo $? — удобно для сцепления в скриптах:
test письмо принято к доставке.Следите за почтовым логом в реальном времени, пока отлаживаете отправку:
$ sudo tail -f /var/log/mail.log
$ sudo imaxe smtp test --to [email protected]Устранение неполадок #
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Выдаёт AUTH (код 4) | Неверные пользователь или пароль smarthost. | Проверьте --user и снова запустите configure, повторно введя пароль через stdin. |
| Выдаёт SEND (код 5), отправитель отклонён | Адрес --from не верифицирован на smarthost (типично для SES). | Верифицируйте домен или адрес у провайдера и повторите test. |
| Выдаёт CONFIG (код 3) | Relay ещё не настроен на этом хосте. | Запустите imaxe smtp configure с данными smarthost. |
| Почта отправляется, но попадает в спам | Не настроено выравнивание SPF/DKIM в домене отправителя. | Настройте записи почтового провайдера для домена --from. |
Застряли с модулем Почта?
Напишите нам, приложив вывод «imaxe <module> status --json», и мы быстро ответим.