Отправка почты из командной строки (консоли) Linux

В данной статье мы рассмотрим основные утилиты для отправки электронных писем по SMTP из консоли Linux – mail/mailx/mutt. Данная инструкция применима ко всем современным дистрибутивам Linux.

Для отправки почты из командной строки Linux вам нужно установить Mail User Agent, которые умеет подключаться к smtp серверам для отправки и получения почты.

В первую очередь рассмотрим утилиту mail (mailx). Для ее установки, выполните:

установка mailx в linux

Mailx содержит в себе несколько утилит для работы с почтой, мы же подробно остановимся на mail.

Обратите внимание, что на вашем хосте обязательно должен быть установлен какой-нибудь почтовый сервер. Например, postfix или sendmail:

# yum install sendmail –y

Основные опции при отправке писем:

  • -s — Subject:
  • -c — Cc:
  • -b — BCc:
  • -r — From:

Чтобы отправить простое сообщение из консоли Linux, воспользуйтесь командой:

# echo "Это тестовое письмо" | mail -s "Проверка отправки почты" admin@build-centos.ru

Проверьте, что письмо доставлено в ящик.

отправка тестового письма из консоли linux с помощью mail

Если вам нужно посмотреть подробные логи отправки писем по SMTP, их можно посмотреть в файле:

# cat /var/log/maillog

smtp логи отправки в var/log/maillog

Без указания дополнительных опций письмо отправляется с дефолтного почтового ящика и скорее всего будет помечено как спам в большинстве популярных почтовых сервисах.

Чтобы указать другого отправителя письма (mail from), используйте ключ -r:

# echo "Это тестовое письмо 2" | mail -s "Проверка отправки почты 2" -r admin@build-centos.ru test@build-centos.ru

Если нужно отправить письмо нескольким получателям, перечислите их через запятую:

# echo "Это тестовое письмо 3" | mail -s "Проверка отправки почты 3" -r admin@build-centos.ru test@build-centos.ru, test-2@build-centos.ru

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

Как видите, письмо было отправлено двум получателям. А с помощью ключа -c вы можете отправить копию письма на указанный ящик:

# echo "Это тестовое письмо 4" | mail -s "Проверка отправки почты 4" -r admin@build-centos.ru -c test@build-centos.ru

Если вам нужно прикрепить к письму файл, укажите путь к файлу в параметре –a.

# echo "Файл во вложении" | mail -s "Проверка вложения" -a /root/test.txt -r admin@build-centos.ru test@build-centos.ru

отправка письма с вложением

В указанных почтовый ящик должно прийти письмо с вложением. Если нужно отпрравить два или более файлов, добавьте каждый файл через собственный атрибут –a:

# echo "Вложены 2 файла " | mail -s "Вложение нескольких файлов " -a /root/test.txt -a /root/message.log -r admin@build-centos.ru test@build-centos.ru

Вы можете отправить письмо через конкретный SMTP сервер. Его имя и порт подключения указываются в параметре -S smtp= :

# echo "Messages smtp server" | mail -s "Test smtp server" -S smtp="build-centos.ru:25" -r admin@build-centos.ru admin@build-centos.ru

показать заголовки smtp письма

Если удаленный SMTP сервер требует авторизации перед отправкой, вы можете указать имя пользователя и пароль с помощью параметров -S smtp-auth-user и -S smtp-auth-password.

# echo "Test auth mailbox" | mail -v -s "Test auth" -S smtp="build-centos.ru:25" -S smtp-auth=login -S smtp-auth-user="admin@build-centos.ru" -S smtp-auth-password="password" -S from=admin@build-centos.ru admin@build-centos.ru

При запуске этой команды перед вами появятся список SMTP команд для подключения, авторизации и отправки почты.

лог smtp подключения

Если для отправки нужно использовать TLS шифрование и игнорировать проверку подлинности сертификата сервера, добавьте параметры:

-S smtp-use-starttls
-S ssl-verify=ignore

Чтобы не задавать все параметры в командной строке, вы можете указать их в файле ~/.mailrc. Например, добавьте в этот файл такие строки:

set smtp-use-starttls
set ssl-verify=ignore
set smtp=smtp://smtp.gmail.com:587
set smtp-auth=login
set smtp-auth-user=dmadm2021@gmail.com
set smtp-auth-password=sdf#23ddsH3sq9-
set from= dmadm2021@gmail.com

Теперь для отправки письма через релей Gmail с аутентификацией достаточно выполнить команду:

$ echo "Test mail " | mail -v -s "Testing gmail auth" admin@build-centos.ru

Вы можете использовать команду отправки почты для в своих bash скриптом. Например, создайте следующий скрипт, которые будет отправлять вам информацию по свободному месту на дисках:

#!/bin/bash
du -h | mail -s "Server 1 disk usage" admin@build-centos.ru

Добавьте этот скрипт в планировщик cron и вы будете регулярно получать письма с информацией о свободном месте на вашем сервере.

0 0 * * * /home/root/freespace.sh

Еще одна популярная утилита для отправки почты в Linux это mutt:

# sudo apt-get install mutt — для Debian/Ubuntu

# yum install mutt -y — для CentOS/Redhat

установка mutt в linux

Синтаксис mutt такой же, как и у mail/ mailx:

# echo "Text messages mutt" | mutt -s "Test mutt" admin@build-centos.ru

отправка тестового письма из mutt

Если вам нужно просто проверить работу удаленного SMTP сервера, вы можете отправить письмо вручную через telnet.

Таким образом, вы можете легко отправлять письма из командной строки, встраивать отправку email оповещений в свои bash скрипты или ватчдоги (удобно для контроля их выполнения).


Предыдущая статья Следующая статья


Комментариев: 3 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)