Основы почтового агента (MTA) [108.3]

Рейтинг: 68.5% · 14 голосов
Полный курс LPIC-1 (экзамены 101-500 и 102-500): архитектура, загрузка, пакеты, команды и текст, ФС и права, шелл-скрипты, пользователи, сервисы, сеть, безопасность. Debian и RHEL.
Ответить
Аватара пользователя
Sergey_Sysadmin
Сообщения: 134
Зарегистрирован: 11 май 2026, 05:31

Основы почтового агента (MTA) [108.3]

Сообщение Sergey_Sysadmin »

Оглавление курса (41)
  1. Введение в LPIC-1 и как устроен путь администратора
  2. Железо, устройства и модули ядра [101.1]
  3. Загрузка системы: от BIOS до systemd [101.2]
  4. systemd, цели и уровни выполнения [101.3]
  5. План разметки диска и swap [102.1]
  6. Загрузчик GRUB 2 [102.2]
  7. Разделяемые библиотеки [102.3]
  8. Управление пакетами в Debian: dpkg и apt [102.4]
  9. Управление пакетами RPM, DNF и Zypper [102.5]
  10. Linux как гость виртуализации [102.6]
  11. Командная строка Bash [103.1]
  12. Обработка текста фильтрами [103.2]
  13. Базовое управление файлами [103.3]
  14. Потоки, конвейеры и перенаправление [103.4]
  15. Процессы: создание, мониторинг, сигналы [103.5]
  16. Приоритеты выполнения процессов [103.6]
  17. Регулярные выражения [103.7]
  18. Редактор vi и vim [103.8]
  19. Разделы и создание файловых систем [104.1]
  20. Целостность и обслуживание ФС [104.2]
  21. Монтирование файловых систем [104.3]
  22. Урок 21. Права доступа и владение: rwx, chmod, umask и специальные биты
  23. Жёсткие и символические ссылки
  24. FHS и поиск файлов в системе [104.7]
  25. Окружение и кастомизация оболочки [105.1]
  26. Урок 25. Написание простых bash-скриптов [105.2]
  27. Графика, рабочие столы и доступность
  28. Учётные записи пользователей и групп
  29. Автоматизация задач: cron, at, таймеры [107.2]
  30. Локализация и интернационализация [107.3]
  31. Системное время и синхронизация [108.1]
  32. Системное логирование [108.2]
  33. Основы почтового агента (MTA) [108.3] (вы здесь)
  34. Печать и CUPS [108.4]
  35. Основы интернет-протоколов [109.1]
  36. Постоянная конфигурация сети [109.2]
  37. Диагностика сети [109.3]
  38. DNS на стороне клиента [109.4]
  39. Задачи администрирования безопасности [110.1]
  40. Настройка безопасности хоста [110.2]
  41. Шифрование данных: SSH и GnuPG [110.3]
Урок 32. Основы почтового агента (MTA) [108.3]

Даже если у вас давно нет своего почтового сервера, MTA на машине почти наверняка есть и работает. Через него уходят отчеты cron, предупреждения smartd, письма от unattended-upgrades, логи fail2ban. Задача этого урока - научиться понимать, как почта вообще движется между машинами, кто такие псевдонимы и форварды, как заглянуть в очередь и отправить тестовое письмо. Это базовый уровень администратора: не настроить публичный релей с DKIM, а уверенно разбираться, почему системные уведомления уходят или застревают.

Изображение

Как это работает

Почта в Unix живет на трех ролях. MUA (mail user agent) - это то, чем пишет человек: mutt, Thunderbird, веб-клиент. MTA (mail transfer agent) - сервер, который принимает письмо и тащит его дальше по сети: Postfix, Exim, Sendmail. MDA (mail delivery agent) - кладет письмо в конечный ящик пользователя: procmail, maildrop или встроенный local-агент самого MTA. На экзамене важно различать эти три буквы и не путать роли.

Транспорт между серверами - это протокол SMTP, обычно порт 25 между MTA, и порты 587 (submission) или 465 (submission over TLS) для отправки от клиента. MTA берет домен из адреса после знака at, спрашивает у DNS запись MX этого домена, узнает имя принимающего сервера и открывает к нему SMTP-соединение. Если доставить прямо сейчас не вышло (сервер недоступен), письмо не теряется - оно ложится в локальную очередь и MTA повторяет попытки по нарастающему интервалу несколько суток.

Псевдонимы (aliases) - это таблица переадресации на стороне сервера, файл /etc/aliases. Строка вида root: admin означает: все, что адресовано локальному root, доставлять пользователю admin. Псевдоним может указывать на другого пользователя, на внешний адрес, на список адресов через запятую, на файл или на программу через канал. Псевдонимы общесистемные, их правит администратор.

Важная деталь: MTA читает не сам текстовый /etc/aliases, а его скомпилированную хэш-базу /etc/aliases.db. Поэтому после правки текста надо пересобрать базу командой newaliases (это псевдоним для sendmail -bi). Забыли пересобрать - изменения не применились, классические грабли.

Форвард (~/.forward) - это та же идея, но в руках самого пользователя и без прав root. Файл лежит в домашнем каталоге, содержит адреса или каналы, и пользователь сам решает, куда пересылать свою почту. Пересборка базы тут не нужна, MTA читает .forward на лету при доставке.

Команды и примеры

Что популярно в 2026. Postfix - фактический стандарт и дефолт почти везде (Debian, Ubuntu, RHEL ставит его при выборе mail-сервера). Exim - дефолт в Debian для некоторых конфигураций и очень популярен на хостингах с cPanel. Sendmail - легаси: исторический прародитель, еще встречается на старых RHEL-системах, но новые установки на нем почти не делают. Ключевая идея совместимости: все три понимают команду sendmail и ключи -bp, -bi, -t, поэтому базовые навыки переносимы.

Псевдонимы и пересборка базы:

Код: Выделить всё

# правим таблицу
sudoedit /etc/aliases
# строка, например:
#   root: ops@example.com
# пересобираем хэш-базу (любой из вариантов)
sudo newaliases
sudo sendmail -bi
Пользовательский форвард:

Код: Выделить всё

# от своего имени, в своем домашнем каталоге
echo "myaccount@gmail.com" > ~/.forward
chmod 600 ~/.forward
# можно копию оставлять локально - адрес с обратным слешем перед логином:
#   \khovanskiy, backup@example.com
Просмотр очереди - три равнозначных способа:

Код: Выделить всё

mailq            # самый короткий
sendmail -bp     # то же самое, классический ключ
postqueue -p     # если MTA - именно Postfix
В Exim своя утилита:

Код: Выделить всё

exim -bp         # очередь
exiqgrep -i      # только ID писем в очереди
exim -M ID       # принудительно протолкнуть письмо
Отправка тестового письма. Простой путь через mail (пакет mailutils в Debian/Ubuntu, mailx или s-nail в RHEL/Fedora):

Код: Выделить всё

# Debian/Ubuntu
sudo apt install mailutils
# RHEL/Fedora
sudo dnf install s-nail

echo "test body" | mail -s "Тема теста" you@example.com
Жесткий тест прямо через sendmail-интерфейс, минуя MUA:

Код: Выделить всё

sendmail -v you@example.com <<'EOF'
Subject: lpic test
From: root@$(hostname)

Письмо-пробник.
EOF
Ключ -t заставляет sendmail взять получателей из заголовков письма (To, Cc, Bcc), а -v показывает диалог SMTP. После отправки смотрите журнал: на современных системах с journald это journalctl -u postfix (или -t postfix), на старых - /var/log/mail.log в Debian и /var/log/maillog в RHEL.

Частые грабли
  • Правили /etc/aliases, но не запустили newaliases - MTA продолжает читать старую .db. Изменения молча игнорируются.
  • ~/.forward с правами доступными группе или others, или принадлежащий не тому пользователю - MTA из соображений безопасности его проигнорирует. Нужны владелец-пользователь и режим 600 или 644.
  • Цикл пересылки: alias A шлет на B, а .forward у B - обратно на A. Письмо отбивается с ошибкой loops back to myself.
  • Думают, что MTA вообще не установлен, а на машине стоит local-only Postfix, слушающий только 127.0.0.1 - наружу письма не уходят, копятся в очереди.
  • Путают submission (587) с релеем на 25. С нынешними правилами провайдеров письмо с динамического IP по 25 порту почти гарантированно не примут.
  • mailq показывает скопившиеся письма с пометкой deferred - это не доставка, а застрявшая очередь; смотрите причину в выводе и в логе, а не радуйтесь, что письма ушли.
Мини-лаба
  • Проверьте, какой MTA установлен: which sendmail и затем ls -l на этот путь (увидите ссылку на postfix, exim или sendmail.sendmail).
  • Добавьте в /etc/aliases строку перенаправления для root на вашего обычного пользователя и выполните newaliases.
  • Создайте ~/.forward от имени обычного пользователя, положите туда внешний адрес, выставьте chmod 600.
  • Отправьте тестовое письмо на root командой mail и убедитесь по очереди и логу, что сработал alias.
  • Посмотрите очередь тремя командами: mailq, sendmail -bp и postqueue -p (или exim -bp) - сравните вывод.
  • Отправьте письмо с ключом sendmail -v и прочитайте SMTP-диалог; найдите соответствующие строки в journalctl или /var/log/mail.log.
  • Уберите .forward и alias, снова пересоберите базу, проверьте, что почта root опять приходит локально.
Контрольные вопросы
  • Чем роль MTA отличается от MDA и MUA, и какой компонент кладет письмо в конечный ящик?
  • Какую запись DNS запрашивает MTA, чтобы узнать, куда доставлять письмо для домена?
  • Почему после редактирования /etc/aliases изменения не вступают в силу до newaliases, и что эта команда делает физически?
  • Чем ~/.forward принципиально отличается от записи в /etc/aliases по правам и по необходимости пересборки?
  • Тремя командами можно посмотреть почтовую очередь - назовите их и скажите, какая работает только с Postfix.
  • Что означает статус deferred у письма в выводе mailq и где искать причину?
👍4 ❤️4 🔥 😄 🤔2
Аватара пользователя
Lbbv
Сообщения: 1
Зарегистрирован: 04 июн 2026, 04:16

Re: Основы почтового агента (MTA) [108.3]

Сообщение Lbbv »

А обязательно держать MTA на каждой машине? У меня на ноуте postfix только для cron-отчетов, можно ли его вообще выкинуть и слать через ssmtp/msmtp на внешний релей?
👍1 ❤️ 🔥1 😄 🤔1
Аватара пользователя
love2002
Сообщения: 1
Зарегистрирован: 08 июн 2026, 11:43

Re: Основы почтового агента (MTA) [108.3]

Сообщение love2002 »

Поймал loops back to myself - оказалось в /etc/aliases root ссылался на меня, а у меня в .forward стоял обратно root. Снес forward и все поехало.
👍 ❤️ 🔥 😄 🤔1
Ответить
← Предыдущая глава
Системное логирование [108.2]
Следующая глава →
Печать и CUPS [108.4]

Все главы курса «LPIC-1: администратор Linux (101 + 102)»

Поделиться темой: ✈ Telegram VK

Вернуться в «LPIC-1: администратор Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей