главная - Статьи - Linux, FreeBSD
Отправка почты из командной строки Linux
Теги: Linux Почтовый сервер
Устанавливаем команду mail.
CentOS/RedHat:
# yum install mailx
Ubuntu/Debian:
$ sudo apt-get install mailutils
После этого можно выполнять консольную команду mail:
$ echo "Message Body" | mail -s "Message Subject" receiver@example.com
Поле From:
Чтобы изменить поле From: в теле письма, используйте ключ -r:
$ echo "Message Body" | mail -s "Message Subject" -r "source@domain.com" receiver@example.com
Это может несколько улучшить спам-рейтинг с точки зрения принимающих серверов. Например, вы хотите с какого-то внутреннего сервера отправлять уведомления на свой ящик в gmail, но gmail может отклонить письмо (да и не только gmail, ясное дело). Пример: есть шлюз с внешним ip 1.2.3.4 и внутренним ip 192.168.24.1. Внутренний сервер имеет только внутренний ip (lan или dmz). При отправке письма командой mail письмо будет отправлено через внешний шлюз (1.2.3.4), и его ip прекрасно поймет внешний почтовик.
Что "увидит" gmail? Что пришло письмо с ip 1.2.3.4, а отправитель, скажем, root@localhost.local (ну или как у вас hostname). Ясное дело, это не публичный адрес и его срочно надо в спам! Что делать нам? Не поднимать же полноценный почтовый сервер (а почему бы и нет ;))
Вполне может быть, что у вашего внешнего ip уже есть какое-либо имя, выданнео провайдером (например, s4-3-2-1.provider.com). Узнать это можно командой "ping -a 1.2.3.4". Или вы можете на любом вашем хостинге создать A-запись для ip 1.2.3.4 с именем что-то типа srv1234.yourdomain.com и это имя вписать в ключ -r:
$ echo "Message Body" | mail -s "Message Subject" -r "techadmin@srv1234.yourdomain.com" receiver@example.com
$ echo "Message Body" | mail -s "Message Subject" -r "techadmin@s4-3-2-1.provider.com" receiver@example.com
где techadmin@ - произвольно взятое имя почтового ящика.
Внешний почтовый сервер терпимее отнесется к письму, в поле From: которого стоит название хоста, с которого и пришло письмо.
Отправка тела письма из файла
Если тело письма находится в отдельном файле, можно напрямую использовать его для отправки письма. Это может быть полезным при вызове команды mail из скриптов.
$ mail -s "Message Subject" receiver@example.com < /var/txt/mailbody.txt
Другие опции
Отправить скрытую копию письма:
-b address
Отправить копию письма:
-c address
И там, и там список получателей разделяется запятыми.
Авторизуйтесь для добавления комментариев!