Thank you for reading this post, don't forget to subscribe!
Подготовка
Для начала устанавливаем утилиту для отправки почты. В противном случае мы увидим ошибку mail: command not found.
В Debian / Ubuntu:
apt-get install mailutils
В CentOS / Red Hat:
yum install mailx
Синтаксис
Можно отправить сообщение следующей командой:
echo "Test text" | mail -s "Test title" master@test.ru
* в данном примере будет отправлено письмо на электронный адрес master@test.ru с темой Test title и телом письма — Test text.
Если при отправке возникли проблемы, можно проверить логи следующей командой:
tail /var/log/maillog
Примеры использования командной строки для email-отправки
1. Отправка письма с вложением
Для разных типов дистрибутива Linux команды могут отличаться.
а) для CentOS / Red Hat:
echo 'Attachment' | mail -s 'Subject attachment message' -a /var/log/maillog master@test.ru
б) для Ubuntu:
echo 'Attachment' | mail -s 'Subject attachment message' -a /var/log/maillog -a /var/log/maillog2 master@test.ru
… или:
echo 'Attachment' | mail -s 'Subject attachment message' -A /var/log/maillog -A /var/log/maillog2 master@test.ru
* где /var/log/maillog и /var/log/maillog2 — файлы, которые будут прикреплены к письму. Обратите внимание, что обе команды отличаются по регистру опции a и A — все зависит от версии и сборки Linux (в каких-то нужно использовать маленькую, в каких-то — большую). Также обратите внимание, что в примере для Ubuntu мы отправим 2 файла — для этого просто добавляем к команде еще одну опцию прикрепления файла.
2. Несколько получателей
Для отправки письма нескольким получателям, просто перечисляем их через запятую:
echo "Test text" | mail -s "Test title" master@test.ru,shmaster@test.ru
* в данном примере мы отправил письмо на ящики master@test.ru и shmaster@test.ru.
3. Отправка с копией
Отправить копию на адрес master2@test.ru:
echo "Test copy" | mail -s "Test copy title" master@test.ru -c master2@test.ru
Отправить скрытую копию на адрес master3@test.ru:
echo "Test hidden copy" | mail -s "Test hidden copy title" master@test.ru -b master3@test.ru
4. Указать отправителя
В CentOS / Red Hat:
echo "Test text" | mail -s "Test title" -r postmaster@test.ru master@test.ru
В Debian / Ubuntu:
echo "Test text" | mail -s "Test title" master@test.ru -aFrom:postmaster@test.ru
5. Отправка через другой SMTP сервер
echo "Test text" | mail -s "Test title" -S smtp="smtp.mail.ru:25" master@test.ru
Однако, если сторонний почтовый сервер работает по шифрованному каналу и требует аутентификацию, необходимо ввести следующее:
echo "Test text" | mail -v -s "Test title" -S smtp="smtp.test.ru:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="master@test.ru" -S smtp-auth-password="password" -S ssl-verify=ignore -S nss-config-dir=/etc/pki/nssdb -S from=postmaster@test.ru master@test.ru
* где smtp.test.ru — сервер smtp; 587 — порт для подключения к серверу отправки; smtp-use-starttls указывает на использование шифрования через TLS; smtp-auth=login задает аутентификацию с использованием логина и пароля; smtp-auth-user и smtp-auth-password — соответственно логин и пароль; ssl-verify=ignore отключает проверку подлинности сертификата безопасности; nss-config-dir указывает на каталог с базами nss; from задает поле FROM
Mutt
При возникновении проблем, можно воспользоваться программой mutt. Сначала поставим ее.
а) если используем CentOS / Red Hat:
yum install mutt
б) если используем Ubuntu / Debian:
apt-get install mutt
Теперь можно пользоваться. Синтаксис:
echo "Текст сообщения" | mutt -s "Тема" [дополнительные опции] -- <кому отправить>
Примеры использования Mutt
Отправить вложение :
echo "Attachment" | mutt -s "subject" -a /var/log/maillog -- master@test.ru
* где /var/log/maillog — файл, который будет прикреплен к письму.
Указать отправителя:
echo "Mail From" | mutt -s "subject" -e 'my_hdr From: Дмитрий <postmaster@test.ru>' -- master@test.ru
* данной командой mutt отправит письмо от postmaster@test.ru.