- Отправка почты из командной строки Linux
- Подготовка
- Синтаксис
- Примеры использования командной строки для email-отправки
- 1. Отправка письма с вложением
- 2. Несколько получателей
- 3. Отправка с копией
- 4. Указать отправителя
- 5. Отправка через другой SMTP сервер
- Примеры использования Mutt
- Как настроить отправку почты с Linux на реальный почтовый ящик
- Спасибо за ответ!
- Спасибо за ответ!
- Отправка почты из командной строки (консоли) Linux
Отправка почты из командной строки Linux
Подготовка
Для начала устанавливаем утилиту для отправки почты. В противном случае мы увидим ошибку mail: command not found.
В Debian / Ubuntu:
apt-get install mailutils
В CentOS / Red Hat:
yum install mailx
Синтаксис
Можно отправить сообщение следующей командой:
echo «Test text» | mail -s «Test title» master@dmosk.ru
* в данном примере будет отправлено письмо на электронный адрес master@dmosk.ru с темой Test title и телом письма — Test text.
Если при отправке возникли проблемы, можно проверить логи следующей командой:
Примеры использования командной строки для email-отправки
1. Отправка письма с вложением
Для разных типов дистрибутива Linux команды могут отличаться.
а) для CentOS / Red Hat:
echo ‘Attachment’ | mail -s ‘Subject attachment message’ -a /var/log/maillog master@dmosk.ru
echo ‘Attachment’ | mail -s ‘Subject attachment message’ -a /var/log/maillog -a /var/log/maillog2 master@dmosk.ru
echo ‘Attachment’ | mail -s ‘Subject attachment message’ -A /var/log/maillog -A /var/log/maillog2 master@dmosk.ru
* где /var/log/maillog и /var/log/maillog2 — файлы, которые будут прикреплены к письму. Обратите внимание, что обе команды отличаются по регистру опции a и A — все зависит от версии и сборки Linux (в каких-то нужно использовать маленькую, в каких-то — большую). Также обратите внимание, что в примере для Ubuntu мы отправим 2 файла — для этого просто добавляем к команде еще одну опцию прикрепления файла.
2. Несколько получателей
Для отправки письма нескольким получателям, просто перечисляем их через запятую:
echo «Test text» | mail -s «Test title» master@dmosk.ru,shmaster@dmosk.ru
* в данном примере мы отправил письмо на ящики master@dmosk.ru и shmaster@dmosk.ru.
3. Отправка с копией
Отправить копию на адрес master2@dmosk.ru:
echo «Test copy» | mail -s «Test copy title» master@dmosk.ru -c master2@dmosk.ru
Отправить скрытую копию на адрес master3@dmosk.ru:
echo «Test hidden copy» | mail -s «Test hidden copy title» master@dmosk.ru -b master3@dmosk.ru
4. Указать отправителя
В CentOS / Red Hat:
echo «Test text» | mail -s «Test title» -r postmaster@dmosk.ru master@dmosk.ru
В Debian / Ubuntu:
echo «Test text» | mail -s «Test title» master@dmosk.ru -aFrom:postmaster@dmosk.ru
5. Отправка через другой SMTP сервер
а) Для Ubuntu / Debian:
echo «Test text» | mail -s «Test title» -a «Smtp: smtp.mail.ru:25» -a «From: postmaster@dmosk.ru» -a «Return-path: postmaster@dmosk.ru» master@dmosk.ru
б) Для CentOS / Red Hat:
echo «Test text» | mail -s «Test title» -S smtp=»smtp.mail.ru:25″ master@dmosk.ru
Однако, если сторонний почтовый сервер работает по шифрованному каналу и требует аутентификацию, необходимо ввести следующее:
echo «Test text» | mail -v -s «Test title» -S smtp=»smtp.dmosk.ru:587″ -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user=»master@dmosk.ru» -S smtp-auth-password=»password» -S ssl-verify=ignore -S nss-config-dir=/etc/pki/nssdb -S from=postmaster@dmosk.ru master@dmosk.ru
* где smtp.dmosk.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. Сначала поставим ее.
а) если используем CentOS / Red Hat:
yum install mutt
б) если используем Ubuntu / Debian:
apt-get install mutt
Теперь можно пользоваться. Синтаксис:
echo «Текст сообщения» | mutt -s «Тема» [дополнительные опции] —
Примеры использования Mutt
1. Отправить вложение:
echo «Attachment» | mutt -s «subject» -a /var/log/maillog — master@dmosk.ru
* где /var/log/maillog — файл, который будет прикреплен к письму.
2. Указать отправителя:
echo «Mail From» | mutt -s «subject» -e ‘my_hdr From: Дмитрий
* данной командой mutt отправит письмо от postmaster@dmosk.ru.
3. Отправка через другой сервер.
Для начала, открываем файл с конфигурацией Mutt:
* в данном примере мы отправим всю нашу почту через узел smtp.mail.ru, порт 25.
Также можно добавить при необходимости:
set smtp_user = user
set smtp_pass = password
set ssl_verify_host = no
set ssl_verify_dates = no
set ssl_starttls = no
set ssl_force_tls = no
- smtp_user — имя учетной записи, под которой нужно авторизоваться на SMTP.
- smtp_pass — пароль для аутентификации.
- ssl_verify_host — нужно ли проверять валидность сертификата.
- ssl_verify_dates — нужно ли проверять дату действия сертификата.
- ssl_starttls — нужно ли использовать STARTTLS.
- ssl_force_tls — нужно ли принудительное использование TLS.
Теперь можно отправлять письмо:
echo «Mail From» | mutt -s «subject» -e ‘my_hdr From: Дмитрий
Источник
Как настроить отправку почты с Linux на реальный почтовый ящик
Поднят Centos 7 на виртуалке, за шлюзом. У Centos доступ в инет есть. Обновляется, скачивает.
Хочу настроить отправку сообщений на свой емайл на яндексе (есть и майл, и gmail для проверки).
Письмо не приходит. В логах:
Почтовый ящик указываю реальный, только для форума заменила на real_mail.
Как сделать, чтобы письмо дошло?
Порты ведь для этого открывать не надо, если только исходящая почта нужна?
Почтовые сервера yandex игнорируют получение почты от почтовых серверов с ненормальными именами. И не только яндекса, это в принципе защита от спама.
Имя должно быть mail.домен, pop.домен, smpt.домен или imap.домен.
У твоего почтового сервера должен быть белый IP и PTR запись в DNS твоего домена, ну либо почтовый сервер может находиться за шлюзом, но должны быть проброшены соответствующие порты.
Если у тебя всего этого нет.
То смотри pop и imap сервера твоего почтового ящика и настраивай почтовый клиент авторизоваться на этих серверах по имени и паролю.
Или описывай более нормально что ты делаешь? Ты настраиваешь почтовый сервер для некоторого домена?
на костылик — msmtp
Для корректной отправки сообщений необходимо использовать валидный адрес и валидный сервер. Один из вариантов — для уже установленного postfix настроить mail relay, чтобы письма уходили от имени ящика gmail и с серверов gmail.
Спасибо за ответ!
У меня есть белый IP. PTR запись в DNS — нет. Почтового сервера — нет.
Нужно, по сути, чтобы скрипт при обработке отсылал уведомление на мою почту с результатами. Нашла туториал со скриптом, там есть команда mail, решила проверить, как это работает. Выяснилось — не работает.
Нужен простой вариант. Без ДНС и PTR — никак? Не для домена.
Часть скрипта, в котором участвует mail:
Для того, чтобы отправить себе письмо, достаточно настроить msmtp и отправлять себе от своего имени (у меня это работает). Конфиг — девять строчек, примеров в интернете — валом. Дерзай.
Настраивать для этого MTA у себя не нужно, оно работает как smtp-клиент.
Спасибо за ответ!
Получилось настроить по инструкции. Спасибо большое!! Правда, сначала гугл ругнулся, что приложение ненадежное и авторизовывать не будет, но вот тут можете разрешить ненадежные приложения и письмо дошло.
connect to mx.yandex.ru[2a02:6b8::89]:25: Network is unreachable
А у тебя IPv6 настроен ? Почему он на 2a02:6b8::89 лезет, это первый вопрос, почему не получается — второй. Про ptr и правильные имена будет вопрос потом, когда Яндекс ответит и скажет reject.
хотя, если уже получилось, сеть уже как-то настроилась. Или шлётся через то, что IPv6 адреса не имеет.
Порты ведь для этого открывать не надо, если только исходящая почта нужна?
к почтовым серверам целая куча требований. Это так не работает. У тебя есть учетная запись на каком-нибудь публичном почтовом сервисе? Используй эту запись для настройки relay. Смысл в том, чтобы сказать твоего локальному MTA что использовать в качестве relay для отправки писем в паблик. Проблем не должно возникнуть, я думаю, там ничего сложного.
Источник
Отправка почты из командной строки (консоли) Linux
В данной статье мы рассмотрим основные утилиты для отправки электронных писем по 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:
Чтобы отправить простое сообщение из консоли Linux, воспользуйтесь командой:
# echo «Это тестовое письмо» | mail -s «Проверка отправки почты» admin@build-centos.ru
Проверьте, что письмо доставлено в ящик.
Если вам нужно посмотреть подробные логи отправки писем по SMTP, их можно посмотреть в файле:
Без указания дополнительных опций письмо отправляется с дефолтного почтового ящика и скорее всего будет помечено как спам в большинстве популярных почтовых сервисах.
Чтобы указать другого отправителя письма (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 сервер требует авторизации перед отправкой, вы можете указать имя пользователя и пароль с помощью параметров -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 команд для подключения, авторизации и отправки почты.
Если для отправки нужно использовать TLS шифрование и игнорировать проверку подлинности сертификата сервера, добавьте параметры:
-S smtp-use-starttls
-S ssl-verify=ignore
/.mailrc. Например, добавьте в этот файл такие строки:
Теперь для отправки письма через релей Gmail с аутентификацией достаточно выполнить команду:
$ echo «Test mail » | mail -v -s «Testing gmail auth» admin@build-centos.ru
Вы можете использовать команду отправки почты для в своих bash скриптом. Например, создайте следующий скрипт, которые будет отправлять вам информацию по свободному месту на дисках:
Добавьте этот скрипт в планировщик cron и вы будете регулярно получать письма с информацией о свободном месте на вашем сервере.
Еще одна популярная утилита для отправки почты в 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» admin@build-centos.ru
Таким образом, вы можете легко отправлять письма из командной строки, встраивать отправку email оповещений в свои bash скрипты или ватчдоги (удобно для контроля их выполнения).
Источник