У даній статті ми розглянемо основні утиліти для відправки електронних листів по SMTP з консолі Linux – поштою/mailx/бовтанка. Дана інструкція застосовна до всіх сучасних дистрибутивів Linux.

Для відправки пошти з командного рядка Linux вам потрібно встановити Mail User Agent, які вміє підключатися до smtp серверів для відправки та отримання пошти.

В першу чергу розглянемо утиліту поштою (mailx). Для її установки, виконайте:

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

Mailx містить в собі кілька утиліт для роботи з поштою, ми ж докладно зупинимося на поштою.

Зверніть увагу, що на вашому хості обов’язково повинен бути встановлений який-небудь поштовий сервер. Наприклад, postfix або sendmail:

# yum install sendmail –y

Основні опції при відправці листів:

  • -s – Тема:
  • -c – Копія:
  • -b – BCc:
  • -r – Від:

Щоб відправити просте повідомлення з консолі 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 це бовтанка:

# 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

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

Leave a Reply

Your email address will not be published. Required fields are marked *