Отправка smtp сообщений linux

Отправка почты из командной строки Linux

Обновлено: 05.05.2022 Опубликовано: 31.03.2017

Подготовка

Для начала устанавливаем утилиту для отправки почты. В противном случае мы увидим ошибку mail: command not found. В Debian / Ubuntu:

Синтаксис

* в данном примере будет отправлено письмо на электронный адрес master@dmosk.ru с темой Test title и телом письма — Test text. Если при отправке возникли проблемы, можно проверить логи следующей командой:

Примеры использования командной строки для email-отправки

1. Отправка письма с вложением

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. Несколько получателей

* в данном примере мы отправил письмо на ящики master@dmosk.ru и shmaster@dmosk.ru.

3. Отправка с копией

4. Указать отправителя

5. Отправка через другой SMTP сервер

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

Однако, если сторонний почтовый сервер работает по шифрованному каналу и требует аутентификацию, необходимо ввести следующее:

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

При возникновении проблем, можно воспользоваться программой mutt. Сначала поставим ее. а) если используем CentOS / Red Hat:

Примеры использования Mutt

echo «Mail From» | mutt -s «subject» -e ‘my_hdr From: Дмитрий ‘ — master@dmosk.ru

Читайте также:  Ставим linux на телефон

* данной командой mutt отправит письмо от postmaster@dmosk.ru. 3. Отправка через другой сервер. Для начала, открываем файл с конфигурацией Mutt:

* в данном примере мы отправим всю нашу почту через узел smtp.mail.ru, порт 25. Или при необходимости авторизации на почтовом сервере:

set smtp_url=»smtp://smtp_user@smtp.mail.ru:465″
set smtp_pass = password
set ssl_verify_host = no
set ssl_verify_dates = no
set ssl_starttls = no
set ssl_force_tls = yes

  • smtp_user — имя учетной записи, под которой нужно авторизоваться на SMTP.
  • smtp_pass — пароль для аутентификации.
  • ssl_verify_host — нужно ли проверять валидность сертификата.
  • ssl_verify_dates — нужно ли проверять дату действия сертификата.
  • ssl_starttls — нужно ли использовать STARTTLS (обычно, при подключении по порту 587).
  • ssl_force_tls — нужно ли использование SSL/TLS (обычно, при подключении по порту 465).

Теперь можно отправлять письмо:

echo «Mail From» | mutt -s «subject» -e ‘my_hdr From: Дмитрий ‘ — master@dmosk.ru

Источник

Отправка почты из командной строки (консоли) Linux

21.04.2021

VyacheslavK

CentOS, Linux, Ubuntu

комментария 4

В данной статье мы рассмотрим основные утилиты для отправки электронных писем по SMTP из консоли Linux – mail/mailx/mutt. Данная инструкция применима ко всем современным дистрибутивам Linux.

Для отправки почты из командной строки Linux вам нужно установить Mail User Agent, которые умеет подключаться к smtp серверам для отправки и получения почты.

В первую очередь рассмотрим утилиту mail (mailx). Для ее установки, выполните:

Mailx содержит в себе несколько утилит для работы с почтой, мы же подробно остановимся на mail.

Обратите внимание, что на вашем хосте обязательно должен быть установлен какой-нибудь почтовый сервер. Например, postfix или sendmail:

Основные опции при отправке писем:

Чтобы отправить простое сообщение из консоли Linux, воспользуйтесь командой:

# echo «Это тестовое письмо» | mail -s «Проверка отправки почты» [email protected]

Проверьте, что письмо доставлено в ящик.

Если вам нужно посмотреть подробные логи отправки писем по SMTP, их можно посмотреть в файле:

Без указания дополнительных опций письмо отправляется с дефолтного почтового ящика и скорее всего будет помечено как спам в большинстве популярных почтовых сервисах.

Чтобы указать другого отправителя письма (mail from), используйте ключ -r:

# echo «Это тестовое письмо 2» | mail -s «Проверка отправки почты 2» -r [email protected] [email protected]

Если нужно отправить письмо нескольким получателям, перечислите их через запятую:

# echo «Это тестовое письмо 3» | mail -s «Проверка отправки почты 3» -r ad[email protected] [email protected], [email protected]

Как видите, письмо было отправлено двум получателям. А с помощью ключа -c вы можете отправить копию письма на указанный ящик:

# echo «Это тестовое письмо 4» | mail -s «Проверка отправки почты 4» -r [email protected] -c [email protected]

Читайте также:  Usb dvd привод linux

Если вам нужно прикрепить к письму файл, укажите путь к файлу в параметре –a.

# echo «Файл во вложении» | mail -s «Проверка вложения» -a /root/test.txt -r [email protected] [email protected]

В указанных почтовый ящик должно прийти письмо с вложением. Если нужно отпрравить два или более файлов, добавьте каждый файл через собственный атрибут –a:

# echo «Вложены 2 файла » | mail -s «Вложение нескольких файлов » -a /root/test.txt -a /root/message.log -r [email protected] [email protected]

Вы можете отправить письмо через конкретный SMTP сервер. Его имя и порт подключения указываются в параметре -S smtp= :

# echo «Messages smtp server» | mail -s «Test smtp server» -S smtp=»build-centos.ru:25″ -r [email protected] [email protected]

Если удаленный SMTP сервер требует авторизации перед отправкой, вы можете указать имя пользователя и пароль с помощью параметров -S smtp-auth-user и -S smtp-auth-password.

При запуске этой команды перед вами появятся список 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-u[email protected] set smtp-auth-password=sdf#23ddsH3sq9- set from= [email protected]

Теперь для отправки письма через релей Gmail с аутентификацией достаточно выполнить команду:

$ echo «Test mail » | mail -v -s «Testing gmail auth» [email protected]

Вы можете использовать команду отправки почты для в своих bash скриптом. Например, создайте следующий скрипт, которые будет отправлять вам информацию по свободному месту на дисках:

Добавьте этот скрипт в планировщик cron и вы будете регулярно получать письма с информацией о свободном месте на вашем сервере.

0 0 * * * /home/root/freespace.sh

Еще одна популярная утилита для отправки почты в 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» [email protected]

Если вам нужно просто проверить работу удаленного SMTP сервера, вы можете отправить письмо вручную через telnet.

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

Предыдущая статья Следующая статья

Источник

Использование SMTP команд для отправки почты по Telnet

Обновлено: 22.02.2022 Опубликовано: 30.10.2017

При помощи данных команд удобно тестировать работу почтовых серверов.

Читайте также:  Php get version linux

Подключение по telnet

Проще всего подключиться к почтовому серверу из командной строки Linux:

Мы должны увидеть ответ сервера с кодом 220 (готовность к работе), например:

220 relay.dmosk.ru ESMTP Postfix

Отправка сообщения SMTP командами

В ответ получаем встречное приветствие с кодом 250, например, 250 relay.dmosk.ru.

Вводим адрес, от которого будем отправлять сообщение:

В ответ должны получить 250 2.1.0 Ok.

На какой адрес отправляем сообщение:

Получаем ответ 250 2.1.5 Ok.

Получим 354 End data with . — это означает, что можно вводить текст сообщения:

Чтобы закончить, с новой строки ставим точку и нажимаем Enter:

В ответ должны увидеть что-то подобное: 250 2.0.0 Ok: queued as A340FC4B70C, где последний код — идентификатор сообщения, присвоенный сервером.

220 relay.dmosk.ru ESMTP Postfix

502 5.5.2 Error: command not recognized
helo domain.local
250 relay.dmosk.ru
mail from:master@dmosk.ru
250 2.1.0 Ok
rcpt to:test@dmosk.ru
250 2.1.5 Ok
data
354 End data with .
subject:test subject
test text
.
250 2.0.0 Ok: queued as A5E60C4B70C

Подключение по шифрованному каналу

Если нам нужно подключиться к серверу по защищенному каналу SSL/TLS, то используем для подключения команду openssl. Мы можем подключиться к портам 587 (STARTTLS) или 465 (SMTP over SSL).

а) Для подключения по порту 587:

openssl s_client -starttls smtp -connect smtp.yandex.ru:587

б) Для подключения по порту 465:

openssl s_client -connect smtp.yandex.ru:465

Далее проходим аутентификацию и можно делать отправку вышеописанными командами.

Аутентификация

Если почтовый сервер требует аутентификацию, необходимо сначала авторизоваться в системе.

Для этого вместо или после приветствия вводим:

* EHLO — расширенное приветствие, которое позволит получить возможности почтового сервера.

В ответ мы получаем, примерно, следующее:

250-relay.dmosk.ru Hello [192.168.0.15]
250-SIZE 10485760
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-X-ANONYMOUSTLS
250-AUTH LOGIN PLAINT
250-X-EXPS GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250-XEXCH50
250-XRDST
250 XSHADOW

* в списке мы можем увидеть разные методы аутентификации (перечислены после AUTH).

Получаем base64

Данные авторизации передаются в закодированном виде с использованием стандарта Base64.

Чтобы закодировать свои логин и пароль, можно воспользоваться одним из перечисленных способов ниже.

2. Powershell:

perl -MMIME::Base64 -e «print encode_base64(‘текст’);»

LOGIN

При данном методе мы по очереди передаем закодированные логин и пароль.

После этого отправляем логин в base64, например dmosk:

Если аутентификация прошла успешно, увидим:

235 2.0.0 Authentication successful

PLAIN

Данный метод аутентификации отличается от вышеописанного тем, что логин с паролем передаются одной строкой. Base64 для них получаем следующей командой, например, в unix-shell:

echo -ne «\0username\0password» | base64

* где username и password — логин и пароль для аутентификации; \0 — нулевой байт.

Видим приглашение на ввод аутентификационных данных:

Вводим нашу последовательность:

Источник

Оцените статью
Adblock
detector