Как отправлять почту из терминала 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.comSendmail сам найдёт заголовок 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 
Alt-текст изображения выше: Консольный пример команды HELO при подключении к SMTP-серверу через telnet.

Alt-текст изображения выше: Пример ввода DATA и завершения письма точкой в отдельной строке при отправке через telnet.
Примечание: современные SMTP-серверы часто требуют аутентификацию и/или TLS. Telnet не поддерживает TLS — используйте openssl s_client для TLS-сессий:
openssl s_client -starttls smtp -crlf -connect smtp.example.com:587Mutt — текстовый почтовый клиент
Mutt сочетает в себе возможности чтения и отправки писем. Установите его:
sudo apt-get install muttПример отправки письма, используя содержимое файла:
cat sendmail.txt | mutt -s "Hello world" info@mail.comMutt поддерживает вложения и профили учетных записей. Для сложных сценариев (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 с корректной конфигурацией. Следуйте чеклисту безопасности и проверяйте логи при отладке.
Похожие материалы
Голосовой ввод на Chromebook — как включить
Как создать и управлять рабочим пространством Slack
Image Clipper в Samsung Gallery: как вырезать объект
Как быстро включить фонарик на Android
Как делиться экраном в Discord — руководство