Сервер в кармане, или просто о сложном!

главная - Статьи - 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

И там, и там список получателей разделяется запятыми.

Авторизуйтесь для добавления комментариев!


    забыли пароль?    новый пользователь?