Гид по технологиям

Как отправлять почту из терминала Linux

5 min read Sysadmin Обновлено 26 Nov 2025
Отправка почты из терминала Linux
Отправка почты из терминала Linux

Важное: для успешной отправки почты нужен настроенный почтовый сервер (локальный MTA или внешний SMTP). Если его нет, команды будут возвращать ошибки.

Для кого эта инструкция

  • Системные администраторы и DevOps, которые управляют серверными рабочими процессами.
  • Разработчики, автоматизирующие уведомления и отчёты.
  • Пользователи терминала, которым нужно быстро отправить файл или сообщение без графического клиента.

Что понадобится

  • Доступ к терминалу с правами пользователя, у которого есть доступ к почтовому агенту (MTA).
  • Установленные утилиты: mail/mailutils, sendmail или mutt, либо доступ к SMTP-серверу (порт 25/587/465).

Краткий обзор методов

  • mail — простая и часто предустановленная утилита.
  • sendmail — мощный локальный MTA для скриптов и сервера.
  • telnet — ручная отправка через SMTP для отладки и обучения.
  • mutt — текстовый почтовый клиент с поддержкой вложений.

Mail — простой старт

Утилита mail позволяет быстро отправлять сообщения и прикреплять файлы.

Проверьте наличие команды:

which mail

Если вывод похож на “/usr/bin/mail”, утилита установлена. Если нет, установите mailutils на Debian/Ubuntu:

sudo apt-get update && sudo apt-get install mailutils

Отправка содержимого файла в теле письма:

mail -s "Hello world" info@mail.com < message.txt

Отправка из echo:

echo "This is the message body" | mail -s "Hello world" info@mail.com

Добавление вложения (в mailutils реализация опции может отличаться; в некоторых сборках используется -a для заголовков и -A для вложений):

echo "Sample odt file" | mail -s "Attachments" info@mail.com -A ~/Documents/sample.odt

Важно: опции для вложений зависят от реализации mail. Если вложение не отправляется, используйте mutt или uuencode + mail.

Sendmail — отправка через локальный MTA

sendmail обычно используется как локальный агент передачи почты. Установите его так:

sudo apt-get install sendmail sendmail-cf -y

Пример содержимого файла письма (обратите внимание на заголовок Subject):

Subject: Hello World!
This is the message body
...
.

Отправьте письмо через sendmail:

cat sendmail.txt | /usr/sbin/sendmail info@mail.com

Sendmail сам найдёт заголовок Subject и сформирует SMTP-сессию. Этот метод удобен для автоматизации из скриптов.

Telnet — ручная SMTP-сессия для отладки

Telnet полезен для диагностики и когда нужно увидеть диалог с SMTP-сервером.

Подключитесь к SMTP-серверу (порт обычно 25, 587 или 465 для TLS проксирования):

telnet test.server.net 25

Пример простого диалога (последовательность команд SMTP):

HELO example.com
MAIL FROM:
RCPT TO:
DATA
Subject: Hello world
Hello world,
This is the body of the email
.
QUIT

Отправка через telnet: команда HELO

Alt-текст изображения выше: Консольный пример команды HELO при подключении к SMTP-серверу через telnet.

Отправка через telnet: составление письма

Alt-текст изображения выше: Пример ввода DATA и завершения письма точкой в отдельной строке при отправке через telnet.

Примечание: современные SMTP-серверы часто требуют аутентификацию и/или TLS. Telnet не поддерживает TLS — используйте openssl s_client для TLS-сессий:

openssl s_client -starttls smtp -crlf -connect smtp.example.com:587

Mutt — текстовый почтовый клиент

Mutt сочетает в себе возможности чтения и отправки писем. Установите его:

sudo apt-get install mutt

Пример отправки письма, используя содержимое файла:

cat sendmail.txt | mutt -s "Hello world" info@mail.com

Mutt поддерживает вложения и профили учетных записей. Для сложных сценариев (SMTP с авторизацией) настройте ~/.muttrc.

Дополнительные инструменты и альтернативы

  • ssmtp и msmtp — лёгкие клиенты для пересылки через внешний SMTP (хороши для простых скриптов).
  • mailx — расширенная версия mail с поддержкой SMTP-аутентификации.
  • Использование программных библиотек (Python smtplib, Node.js nodemailer) для сложной логики отправки.

Чеклист перед отправкой почты из терминала

  • Убедитесь, что MTA запущен и принимает соединения.
  • Проверьте DNS (MX/A) и обратные записи (PTR) на сервере, если отправляете в интернет.
  • Если SMTP требует аутентификацию — используйте msmtp/mutt или библиотеку с поддержкой TLS.
  • Для вложений используйте mutt или корректный mime-энкодинг (uuencode/base64).

Базовые советы по безопасности

  • Не храните пароли в открытом виде в скриптах. Используйте защищённые хранилища или системные переменные с ограниченным доступом.
  • При передаче паролей используйте TLS (порт 587 с STARTTLS или 465 с implicit TLS).
  • Ограничьте доступ к локальному MTA и логам — в них могут оказаться адреса и содержимое писем.

Частые ошибки и как их исправлять

  • “Connection refused” — MTA не запущен или порт закрыт в брандмауэре.
  • “Relay denied” — сервер требует аутентификацию или адрес не разрешён для ретрансляции.
  • Некорректное кодирование вложений — используйте mutt или правильно формируйте MIME.

Шпаргалка команд (cheat sheet)

  • Проверка наличия mail: which mail
  • Установка mailutils: sudo apt-get install mailutils
  • Отправка файла: mail -s “Тема” адрес < файл.txt
  • Sendmail: cat файл | /usr/sbin/sendmail адрес
  • Telnet SMTP: telnet smtp.example.com 25
  • TLS через OpenSSL: openssl s_client -starttls smtp -crlf -connect smtp.example.com:587
  • Mutt: cat файл | mutt -s “Тема” адрес

Когда этот подход не подходит

  • Вам нужно массово рассылать промо-письма — лучше использовать специализированные сервисы (SendGrid, Mailgun).
  • Требуется гибкая маршрутизация и очередь — используйте полноценный MTA и очередь сообщений.

Краткая терминология

  • MTA — агент передачи почты (Mail Transfer Agent).
  • SMTP — протокол для передачи почты.
  • TLS — шифрование транспорта.

Ответственные роли — быстрый чеклист

  • Системный администратор: настроить MTA, DNS (MX/PTR), брандмауэр, мониторинг очередей.
  • Разработчик: выбрать библиотеку/инструмент, обеспечить безопасное хранение секретов.
  • Оператор: тестировать логирование, проверять отказоустойчивость и обработку ошибок.

Примеры использования в сценариях

  • Автозапуск скрипта отчёта по крону — отправка отчёта через mail/msmtp.
  • Отправка логов при инциденте — отправка через sendmail из обработчика ошибок.
  • Диагностика доставки — ручная SMTP-сессия через telnet/openssl.

Часто задаваемые вопросы

Как проверить, доставлено ли письмо?

Проверьте логи MTA (/var/log/mail.log или /var/log/maillog) и статус доставки. Внешние серверы могут присылать bounce-сообщения.

Как отправлять письма через защищённый SMTP с аутентификацией?

Используйте msmtp, mutt или библиотеку, поддерживающую STARTTLS/SSL и аутентификацию. Настройте параметры хоста, порта, логина и источник пароля.

Можно ли отправлять вложения через mail, если опция -A не работает?

Да. Воспользуйтесь mutt, uuencode или сформируйте MIME через командные утилиты (например, using sendmail с правильно сформированными заголовками).

Итог

Отправка почты из терминала — полезный навык для администраторов и разработчиков. Простые команды подходят для одноразовых операций, а для надежной автоматизации лучше использовать msmtp/mutt или полноценный MTA с корректной конфигурацией. Следуйте чеклисту безопасности и проверяйте логи при отладке.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Голосовой ввод на Chromebook — как включить
Chromebook

Голосовой ввод на Chromebook — как включить

Как создать и управлять рабочим пространством Slack
Производительность

Как создать и управлять рабочим пространством Slack

Image Clipper в Samsung Gallery: как вырезать объект
Мобильные советы

Image Clipper в Samsung Gallery: как вырезать объект

Как быстро включить фонарик на Android
Android.

Как быстро включить фонарик на Android

Как делиться экраном в Discord — руководство
Руководство

Как делиться экраном в Discord — руководство

Установка Microsoft Teredo в Windows 10
Windows

Установка Microsoft Teredo в Windows 10