В данной статье мы рассмотрим основные утилиты для отправки электронных писем по SMTP из консоли Linux – mail/mailx/mutt. Данная инструкция применима ко всем современным дистрибутивам Linux.
Для отправки почты из командной строки Linux вам нужно установить Mail User Agent, которые умеет подключаться к smtp серверам для отправки и получения почты.
В первую очередь рассмотрим утилиту mail (mailx). Для ее установки, выполните:
- Для Debian/Ubuntu:
# sudo apt-get install mailutils
- Для CentOS/Redhat установите пакет с помощью yum (dnf)
# dnf install mailx
Mailx содержит в себе несколько утилит для работы с почтой, мы же подробно остановимся на mail.
# yum install sendmail –y
Основные опции при отправке писем:
- -s — Subject:
- -c — Cc:
- -b — BCc:
- -r — From:
Чтобы отправить простое сообщение из консоли Linux, воспользуйтесь командой:
# echo "Это тестовое письмо" | mail -s "Проверка отправки почты" [email protected]
Проверьте, что письмо доставлено в ящик.
Если вам нужно посмотреть подробные логи отправки писем по SMTP, их можно посмотреть в файле:
# cat /var/log/maillog
Без указания дополнительных опций письмо отправляется с дефолтного почтового ящика и скорее всего будет помечено как спам в большинстве популярных почтовых сервисах.
Чтобы указать другого отправителя письма (mail from), используйте ключ -r:
# echo "Это тестовое письмо 2" | mail -s "Проверка отправки почты 2" -r [email protected] [email protected]
Если нужно отправить письмо нескольким получателям, перечислите их через запятую:
# echo "Это тестовое письмо 3" | mail -s "Проверка отправки почты 3" -r [email protected] [email protected], [email protected]
Как видите, письмо было отправлено двум получателям. А с помощью ключа -c вы можете отправить копию письма на указанный ящик:
# echo "Это тестовое письмо 4" | mail -s "Проверка отправки почты 4" -r [email protected] -c [email protected]
Если вам нужно прикрепить к письму файл, укажите путь к файлу в параметре –a.
# echo "Файл во вложении" | mail -s "Проверка вложения" -a /root/test.txt -r [email protected] [email protected]
В указанных почтовый ящик должно прийти письмо с вложением. Если нужно отпрравить два или более файлов, добавьте каждый файл через собственный атрибут –a:
# echo "Вложены 2 файла " | mail -s "Вложение нескольких файлов " -a /root/test.txt -a /root/message.log -r [email protected] [email protected]
Вы можете отправить письмо через конкретный SMTP сервер. Его имя и порт подключения указываются в параметре -S smtp= :
# echo "Messages smtp server" | mail -s "Test smtp server" -S smtp="build-centos.ru:25" -r [email protected] [email protected]
Если удаленный 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="[email protected]" -S smtp-auth-password="password" -S [email protected] [email protected]
При запуске этой команды перед вами появятся список SMTP команд для подключения, авторизации и отправки почты.
Если для отправки нужно использовать TLS шифрование и игнорировать проверку подлинности сертификата сервера, добавьте параметры:
-S smtp-use-starttls
-S ssl-verify=ignore
set smtp-use-starttls set ssl-verify=ignore set smtp=smtp://smtp.gmail.com:587 set smtp-auth=login set [email protected] set smtp-auth-password=sdf#23ddsH3sq9- set from= [email protected]
Теперь для отправки письма через релей Gmail с аутентификацией достаточно выполнить команду:
$ echo "Test mail " | mail -v -s "Testing gmail auth" [email protected]
Вы можете использовать команду отправки почты для в своих bash скриптом. Например, создайте следующий скрипт, которые будет отправлять вам информацию по свободному месту на дисках:
#!/bin/bash du -h | mail -s "Server 1 disk usage" [email protected]
Добавьте этот скрипт в планировщик cron и вы будете регулярно получать письма с информацией о свободном месте на вашем сервере.
0 0 * * * /home/root/freespace.sh
Еще одна популярная утилита для отправки почты в Linux это mutt:
# sudo apt-get install mutt
— для Debian/Ubuntu
# yum install mutt -y
— для CentOS/Redhat
Синтаксис mutt такой же, как и у mail/ mailx:
# echo "Text messages mutt" | mutt -s "Test mutt" [email protected]
Таким образом, вы можете легко отправлять письма из командной строки, встраивать отправку email оповещений в свои bash скрипты или ватчдоги (удобно для контроля их выполнения).