- Установка и настройка почтового клиента mutt на Linux и FreeBSD
- Установка
- Настройка клиента
- IMAP + SMTP
- POP3 + SMTP
- Примеры настройки для разных почтовых систем
- Яндекс
- @Mail.ru
- GMAIL
- Отправка почты из консоли
- Массовая рассылка из консоли с помощью mutt
- Отправка почты из командной строки (консоли) Linux
- Mutt, ssmtp и отправка отчетов
Установка и настройка почтового клиента mutt на Linux и FreeBSD
Установка
yum install mutt
apt-get install mutt
pkg install mutt
Настройка клиента
Рассмотрим принцип настройки клиента Mutt для работы по IMAP и POP3.
IMAP + SMTP
Открываем конфигурационный файл:
И приводим его к следующему виду:
set from = master@dmosk.ru
set imap_user = master@dmosk.ru
set imap_pass = password
set smtp_pass = password
set realname = «Дмитрий Моск»
set smtp_url = smtp://smtp.dmosk.ru:465/
set folder = imaps://imap.dmosk.ru:993
set spoolfile = +INBOX
set postponed = +[Gmail]/Drafts
set use_from = yes
set editor=’nano’
set sort = reverse-threads
set sort_aux = last-date-received
set fast_reply=yes
set include=yes
set forward_quote=yes
set delete=yes
set imap_keepalive = 900
set copy = no
set move = no
/.mutt/cache/headers
set message_cachedir =
/.mutt/cache/bodies
set certificate_file =
set ssl_starttls = yes
set ssl_force_tls = yes
set smtp_authenticators = ‘login’
* где необходимо обратить внимание на следующие опции:
- master@dmosk.ru — адрес электронной почты; Используем для поля from и в качестве логина.
- master — имя учетной записи;
- password — пароль;
- Дмитрий Моск — отображаемое имя;
- smtp.dmosk.ru — SMTP-сервер; В данном примере мы подключаемся к серверу по SSL-порту 465. Также могут быть варианты 587 и 25.
- imap.dmosk.ru — сервер IMAP. Подключение выполняем по SSL-порту 993. Также можно использовать порт 143.
Для проверки вводим команду:
При запросе подтвердить принятие сертификата, нажимаем a.
POP3 + SMTP
Открываем конфигурационный файл:
И приводим его к следующему виду:
set from = master@dmosk.ru
set smtp_pass = password
set realname = «Дмитрий Моск»
set smtp_url = smtp://smtp.mail.ru:465/
set pop_user = master@dmosk.ru
set pop_pass = password
set pop_host = pops://pop.dmosk.ru:995/
set pop_reconnect = yes
set pop_checkinterval = 1
set pop_delete = no
set mbox_type = mbox
set folder =
/mail
set mbox = +Inbox
set spoolfile= +Inbox
set use_from = yes
set editor=’nano’
set sort = reverse-threads
set sort_aux = last-date-received
set fast_reply=yes
set include=yes
set forward_quote=yes
set delete=yes
set imap_keepalive = 900
set copy = no
set move = no
/.mutt/cache/headers
set message_cachedir =
/.mutt/cache/bodies
set certificate_file =
set ssl_starttls = yes
set ssl_force_tls = yes
set smtp_authenticators = ‘login’
* где необходимо обратить внимание на следующие опции:
- master@dmosk.ru — адрес электронной почты; Используем для поля from и в качестве логина.
- master — имя учетной записи;
- password — пароль;
- Дмитрий Моск — отображаемое имя;
- smtp.dmosk.ru — SMTP-сервер; В данном примере мы подключаемся к серверу по SSL-порту 465. Также могут быть варианты 587 и 25.
- imap.dmosk.ru — сервер IMAP. Подключение выполняем по SSL-порту 993. Также можно использовать порт 143.
Для проверки вводим команду:
При запросе подтвердить принятие сертификата, нажимаем a.
Примеры настройки для разных почтовых систем
Яндекс
По умолчанию, доступ на Яндекс из почтовых клиентов закрыт. Необходимо зайти на почту в браузере, кликнуть по значку шестеренки — Все настройки — Почтовые программы — Включить «С сервера imap.yandex.ru по протоколу IMAP». Подробнее в инструкции Настройка почты GMAIL и Яндекс для подключения по IMAP или POP3.
Далее создаем файл с настройкой mutt:
set realname = «Дмитрий Моск»
set from = username@yandex.ru
set use_from = yes
set imap_user = username@yandex.ru
set imap_pass = password
set smtp_url = smtp://smtp.yandex.ru:465/
set smtp_pass = password
set smtp_authenticators = ‘login’
set ssl_starttls = yes
set ssl_force_tls = yes
set folder = imaps://imap.yandex.ru:993
set spoolfile = +INBOX
set postponed = +[Gmail]/Drafts
set record = =Отправленные
@Mail.ru
set realname = «Дмитрий Моск»
set from = username@mail.ru
set use_from = yes
set imap_user = username@mail.ru
set imap_pass = password
set smtp_url = smtp://smtp.mail.ru:465/
set smtp_pass = password
set smtp_authenticators = ‘login’
set ssl_starttls = yes
set ssl_force_tls = yes
set folder = imaps://imap.mail.ru:993
set spoolfile = +INBOX
set postponed = +[Gmail]/Drafts
set record = =Отправленные
GMAIL
Как в случае с Яндексом, в GMAIL также необходимо включить поддержку imap. Для этого заходим в настройки почты (кликаем по значку шестеренки) — Настройки — Пересылка и POP/IMAP — Включить IMAP.
На этом не все — Google требует безопасную аутентификацию OAuth2. Чтобы у нас заработал Mutt, необходимо разрешить подключение с устаревших приложений. Для этого заходим в настройки общего аккаунта Google — Безопасность — прокручиваем до «Ненадежные приложения, у которых есть доступ к аккаунту» — кликаем по Открыть доступ (не рекомендуется) — меняем положение переключателя «Небезопасные приложения заблокированы» на положение «включено».
Подробнее о включении IMAP и POP3 для почты от Google читайте в инструкции Настройка почты GMAIL и Яндекс для подключения по IMAP или POP3.
set realname = «Дмитрий Моск»
set from = username@gmail.com
set use_from = yes
set imap_user = username@gmail.com
set imap_pass = password
set smtp_url = smtp://smtp.gmail.com:465/
set smtp_pass = password
set smtp_authenticators = ‘login’
set ssl_starttls = yes
set ssl_force_tls = yes
set folder = imaps://imap.gmail.com:993
set spoolfile = +INBOX
set postponed = +[Gmail]/Drafts
set record = =Отправленные
Отправка почты из консоли
Для быстрой отправки почты из командной строки можно воспользоваться Mutt. Для этого используем приложение со следующим синтаксисом:
echo «Текст сообщения» | mutt -s «Тема» [дополнительные опции] —
Источник
Массовая рассылка из консоли с помощью mutt
Недавно я столкнулся с задачей: требовалось разослать тысячи писем с ссылкой на опрос всем студентам нашего университета.
Проблема массовой рассылки в том, что в поле СС виден весь список именной рассылки.
Я решил эту задачу через простой почтовый клиент mutt.
Mutt является текстовым почтовым клиентом для Unix-подобных систем. Первоначально он был написан Майклом Элкинсом в 1995 году и выпущен под лицензией GNU General Public License.
Прежде всего, в корневой папке юзера нужно создать файл конфигурации:
Тут мы объясним программе как нас зовут и какой адрес увидит получатель:
set realname=«John Smith»
set from=«jsmith@whitehouse.gov»
set use_from=yes
После этого нужно создать само письмо.
Само письмо, естественно, на html:
Теперь нам нужен файл со списком рассылки, назовем его list.
Примечательно, что список может быть любых размеров.
Теперь, когда все подготовленно, пора переходить к самой рассылке:
Этот простенький скрипт на языке bash посылает поочередно (for I in `cat list`; do cat body), на каждый адрес (— $I), раз в три секунды (sleep 3 — чтобы сервер не принял нас за спамеров) письмо (body) из списка (list) с вложенным нами файлом (attachment.pdf) и показывает результат работы (echo $I).
Команда «set content_type=text/html» говорит о том, что письмо нужно форматировать в html.
Вот и все, надеюсь мой опыт вам пригодится.
Источник
Отправка почты из командной строки (консоли) 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 скрипты или ватчдоги (удобно для контроля их выполнения).
Источник
Mutt, ssmtp и отправка отчетов
В свое время, когда меня еще не было на Хабре, эта статья была опубликована в песочнице. К сожалению, она никому не понравилась и со временем была удалена. Долго думал, что с ней делать — забить, запостить таки на Хабре или в своем блоге Записки программиста. Решил, раз она писалась для Хабра, пусть на нем и будет опубликована. Итак, под катом — статья о практике отправки отчетов по e-mail. Сейчас, перечитывая текст, понимаю, что статья — не фонтан, но может кому-нибудь пригодится.
Часто передо мной встает задача вроде такой: необходимо ежемесячно (или еженедельно/ежедневно) обработать такие-то логи, построить по ним отчет и отправить его на заданный E-Mail. В этой статье я как раз хотел бы рассказать о второй части такой задачи, а именно об отправке отчетов. Казалось бы, такая рутинная операция, но трудности с ней возникают чаще, чем может показаться на первый взгляд.
Я предпочитаю использовать уже готовые, проверенные временем, программы, а не писать каждый раз собственные скрипты. В большинстве случаев нужная программа уже была когда-то кем-то написана, зачем изобретать велосипед?
Для отправки отчетов я пользуюсь mutt. В нем меня привлекает простота интерфейса, возраст (читай — стабильность) программы и то, что mutt портирован если не под все, то почти под все unix-like системы. В моей любимой FreeBSD искать его следует в /usr/ports/mail/mutt.
Чтобы при помощи mutt послать письмо с аттачем, достаточно команды
mutt -s Subject -a File User@Host.com
где Subject — тема сообщения, File — имя прикрепляемого файла, а User@Host.com — получатель письма. К письму можно прикрепить несколько файлов или указать несколько получателей. Текст письма программа читает из stdin.
По умолчанию mutt использует sendmail в качестве MTA. Обычно с этим не возникает трудностей — после установки mutt мы можем сразу приступить к написанию скриптов и все будет прекрасно работать. Но мне приходилось сталкиваться с ситуацией, когда посылка писем напрямую с сервера просто запрещена правилами фаервола. В этом случае следует использовать сторонний SMTP сервер.
Проблема в том, что mutt не имеет функций MTA, то есть работа с SMTP — не его задача. Тем не менее, можно научить его слать почту через заданный smtp-сервер и поможет ему в этом программа ssmtp.
Строго говоря, ssmtp является не MTA, а просто smtp-клиентом, эмулирующим работу sendmail. Если вы, как и я, пользуетесь FreeBSD, то можете поставить ssmtp из портов — /usr/ports/mail/ssmtp.
Настройка ssmtp производится путем редактирования файла /usr/local/etc/ssmtp/ssmtp.conf (в вашей ОС путь к файлу может быть другим). Вот как он примерно выглядит:
root=reports@example.ru # от чьего имени шлем письма
mailhub=smtp.example.ru:465 # smtp-сервер и порт
hostname=localhost # имя нашего хоста, желательно вписать верное
UseTLS=Yes # используем зашифрованное соединение
AuthUser=reports@example.ru # логин
AuthPass=qwerty # пароль
FromLineOverride=Yes # Поле From: может задавать mutt
Если вы хотите слать отчеты через Gmail, конфиг будет выглядеть немного иначе:
root=reports@gmail.com
mailhub=smtp.gmail.com:587
hostname=localhost
UseSTARTTLS=YES
AuthUser=reports@gmail.com
AuthPass=qwerty
Пытаемся послать тестовое письмо с помощью ssmtp:
echo «» | ssmtp -v -s Hello admin@example.ru
Если письмо успешно дошло, значит все было сделано правильно. Если ssmtp говорит нечто вроде:
тоже не проблема, просто ssmtp указал неверный адрес отправителя, и smtp-сервер это заметил. Когда будем слать почту через mutt, все будет задано верно.
Чтобы mutt слал почту через ssmtp, в домашнем каталоге пользователя, от имени которого мы собираемся слать отчеты, нужно подправить файл .muttrc
set sendmail=»/usr/local/sbin/ssmtp» # путь к ssmtp
set realname=»Example Report System» # имя отправителя
set from=»reports@example.ru» # e-mail отправителя
Проверяем работу mutt:
echo «» | mutt -s Hello admin@example.ru
Письмо должно успешно дойти до получателя. Если вы хотите использовать mutt в скриптах, запускаемых по крону, нужно иметь ввиду, что mutt находится в каталоге /usr/local/bin, который по умолчанию не прописан в переменную окружения PATH в вашем crontab. Решения два — либо исправить переменную окружения PATH в кронтабе, либо использовать полное имя mutt в скриптах.
Бывает и такое, что на сервере, с которого приходится слать отчеты, у нас нет root-привилегий. В этом случае либо придется уговаривать админа установить и настроить mutt, либо все-таки написать свой собственный скрипт отправки электронной почты. Но это уже совсем другая история.
Источник