Записи с Меткой ‘ ssmtp

logwatch + ssmtp debian 6

apt-get install logwatch ssmtp

Для дополнительных настроек можно скопировать конфигурацию по-умолчанию и изменить нужные опции:
mkdir /etc/logwatch/conf/
cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf
Стандартный файл настроен хорошо прокомментирован и понятен. Но привожу список настроек на которые стоит обратить внимание:

MailTo – указывает на какой адрес отсылать отчёты. Если у вас не настроена почта для root имеет смысл указать необходимый адрес полностью
MailFrom – имя отправителя письма
Print – указывает либо печатать вывод в консоль (YES) либо отправлять отчёт на почту (NO)
Save – позволяет задать путь сохранения отчёта на сервере при необходимости
Archives – при составлении отчёта просматривать архивные файлы логов (типа /var/log/messages.1.gz). Если отчёт генериться за одни день нет смысла включать эту опцию. Также эта опция зависит от режима ротации логов в системе
Range – указывает период за который составляется отчёт (All, Today, Yesterday)
Detail – уровень детализации отчёта
Service = All – запускает анализ логов по всем сервисам определенным в /usr/share/logwatch/scripts/services/
Service = «-eximstats» – дополнительно можно исключить определенные сервисы из набора для анализа

cat /etc/logwatch/conf/logwatch.conf
mailer = "/usr/sbin/sendmail -t"
TmpDir = /tmp
MailFrom = info@uxxxxxk.ru
MailTo = dmurrdj@gmail.com
Save = /root/logwatch
Range = Yesterday
Detail = high

 

 cat /etc/ssmtp/ssmtp.conf
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
#root=info@uxxxxxk.ru # kto shlet pis'ma
root=info@uxxxxxk.ru

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.yandex.ru:465

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=ServerSambaTruckstar

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
#FromLineOverride=YES

UseTLS=Yes
AuthUser=info@uxxxxxk.ru
AuthPass=ksjhdfgkfsdlkhsdklfgjsldkj
FromLineOverride=Yes

 

cat /etc/ssmtp/revaliases
# sSMTP aliases
#
# Format:       local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
#for yandex
root:info@uxxxxxxk.ru:smtp.yandex.ru:465

 

Проверим работу logwatch. Отчет должен сформироваться и прийти на почту.

# /etc/cron.daily/00logwatch

Mutt, ssmtp

Спасибо: http://habrahabr.ru/post/82919/ + afiskon + 
paskal

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 говорит нечто вроде:

. . .
[->] MAIL FROM:<root@localhost>
[<-] 573 root@localhost failed to route the address
ssmtp: 573 root@localhost failed to route the address

тоже не проблема, просто ssmtp указал неверный адрес отправителя, и smtp-сервер это заметил. Когда будем слать почту через mutt, все будет задано верно.

Чтобы mutt слал почту через ssmtp, в домашнем каталоге пользователя, от имени которого мы собираемся слать отчеты, нужно подправить файл .muttrc

set sendmail="/usr/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, либо все-таки написать свой собственный скрипт отправки электронной почты. Но это уже совсем другая история.

Настройка Smtp Relay Server — Ssmtp

Если у вас есть свой сервер, вы наверняка не раз задумывались о том, чтобы иметь возможность отсылать с него логи себе на почту, или дать возможность веб-сайту на этом сервере рассылать письма.

Обычно настраивается postfix или sendmail или ещё что-нибудь громоздкое. Я предлагаю вам вместо этого настроить smtp relay server, ssmtp, который предназначен именно для пересылки отправляемых писем на “большой” сервер —Яндекс почта для доменаGoogle Apps for domain, или просто почтовый аккаунт Gmail или Yandex, если вам потребуется посылать письма только себе.

Настройка на примере Ubuntu.

Сначала уставновим ssmtp и отредактируем revaliases. Вставьте либо секцию для gmail, либо секцию для yandex mail, заменив ubuntu на ваше имя пользователя, а sendlogs на имя пользователя почты. Если вы используете почту для домена, просто введите полное имя пользователя своего домена, например, noreply@realmfpa.ru. Ctrl+OEnter для сохранения, Ctrl+X для выхода.

sudo apt-get install ssmtp
sudo nano /etc/ssmtp/revaliases

#for yandex
root:sendlogs@yandex.ru:smtp.yandex.ru:465
ubuntu:sendlogs@yandex.ru:smtp.yandex.ru:465
#for gmail
root:sendlogs@gmail.com:smtp.gmail.com:587
ubuntu:sendlogs@gmail.com:smtp.gmail.com:587

Далее отредактируем ssmtp.conf. Вместо имеющегося текста вставьте приведенную здесь секцию general, и либо секцию для gmail, либо секцию для yandex mail. Советую использовать для учетной записи отправки почты пароль только из букв и цифр; мне не удалось заставить сервер понимать пароль со специальными символами — он выдавал ошибку при попытке отправить письмо.

sudo nano /etc/ssmtp/ssmtp.conf

#general
hostname=localhost
FromLineOverride=NO
AuthUser=yourrobotuser@domain.com
AuthPass=password
#for yandex
mailhub=smtp.yandex.ru:465
UseTLS=YES
#for gmail
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES

Если вы хотите настроить отправку писем для своего веб-сайта, использующего php, сделайте следующие изменения в файле php.ini:

#for apache
sudo nano /etc/php5/apache2/php.ini
#for nginx and php-fpm
sudo nano /etc/php5/fpm/php.ini[/bash]

Найдите (Ctrl+W) строку sendmail_path (она задокументирована с помощью ;) и ниже неё вставьте:

sendmail_path = ssmtp -t

Вот и всё, вы и ваш сайт можете отправлять письма. Для тестирования можете создать и отправить тестовое письмо:

nano test

To:youraccount@gmail.com
From:yourrobotuser@domain.com
Subject: Test

This is a test mail.

ssmtp -t < test

Если вылезает такое: 
Сообщение отправить не удалось, процесс-потомок вернул 127 (Exec error.).
Сообщение отправить не удалось. 
Значит смотри пути к MTA агенту!

Также Была проблема
Отправить файл по почте из консоли
$ ls > file.txt
$ echo "Смотри вложение" | mutt -x -s "Метод 3" -a file.txt -- zendzirou@gmail.com

Элементарный способ настройки архивации в linux.
В качестве архиватора был выбран 7z, который присутствует как на unix, так и на ms системах, отлично сжимает, а кроме того ещё и бесплатен. Установка пакета производится командой:

sudo apt-get install 7z

Команда архивации, для добавления в cron:

7z -t7z -mx=9 -r -ssc a "имя-архива"-$(date +%Y-%m-%d_%H).7z "каталог-который-жмем"

После радуемся жизни.
Источник 1
Источник 2

Решил кроме простого архивирования добавить автоматическую отправку архивов по почте с помощью mutt, где столкнулся с проблемой.
В моём случае получилась следующая команда:

7z -t7z -mx=9 -r -ssc a /backups/$(date +%Y-%m-%d)/ip-$(date +%Y-%m-%d).7z /share/bases/1c_base/!bases/ip && 7z -t7z -mx=9 -r -ssc a /share/backups/$(date +%Y-%m-%d)/ooo-$(date +%Y-%m-%d).7z /share/bases/1c_base/!bases/ooo && 7z -t7z -mx=9 -r -ssc a /share/backups/$(date +%Y-%m-%d)/service-$(date +%Y-%m-%d).7z /share/bases/service_base/!base/ && mutt -s “Backup” -a /backups/$(date +%Y-%m-%d)/*-$(date +%Y-%m-%d).7z - pupkin@bk.ru backup_files_at_$(date +%Y-%m-%d)

Архивация проходит на ура, а вот в:

mutt -s “Backup” -a /backups/$(date +%Y-%m-%d)/*-$(date +%Y-%m-%d).7z - pupkin@bk.ru backup_files_at_$(date +%Y-%m-%d)

появилась такая проблема:

Не удалось получить информацию о -: Нет такого файла или каталога
-: не удалось вложить файл.

Предполагаю, что ошибка кроется в маске для файлов вида

*-$(date +%Y-%m-%d).7z

, но если не так, то тогда как? О.о

Он ругается не на имя файла, а на ‘-‘ после имени
Поставь после файла не «-«, а «—»

mutt -s “Backup” -a /backups/$(date +%Y-%m-%d)/*-$(date +%Y-%m-%d).7z -- pupkin@bk.ru backup_files_at_$(date +%Y-%m-%d)
zhekas, спасибо, оно самое. 

Еще 
mkdir -v /var/log/mutt
mkdir -v /var/spool/mutt
: > /var/log/mutt/mail
: > /var/log/mutt/sent
: > /var/log/mutt/postponed
: > /var/spool/mutt/mail
chmod -R 644 /var/log/mutt
chown -R root.root /var/log/mutt
chmod 755 /var/log/mutt
chown root.root /var/spool/mutt
chown root.root /var/spool/mutt/mail
chmod 755 /var/spool/mutt
chmod 644 /var/spool/mutt/mail

и добавляем в /root/.murrrc 

set folder=«/var/log/mutt/mail»
set spoolfile=«/var/spool/mutt/mail»
#set record=«/var/log/mutt/sent» - если добавить то не отправляет....
set postponed=«/var/log/mutt/postponed»

Конечный мой вариант:
/etc/ssmtp/ssmtp.conf
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=vash@domen.ru

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.yandex.ru:465

# Where will the mail seem to come from?
#rewriteDomain=

# The full hostname
hostname=Server

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
#FromLineOverride=YES

UseTLS=Yes
AuthUser=info@jhfkjhgkutsikhgruck.ru
AuthPass=75486jfhfk
FromLineOverride=Yes
/etc/ssmtp/revaliases
# sSMTP aliases
#
# Format:       local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
#for yandex
root:mail@domen.ru:smtp.yandex.ru:465
/root/.muttrc
set sendmail="/usr/sbin/ssmtp"
set realname="Daily Sale Report"
set from="info@jhfkjhgkutsikhgruck.ru"
set folder=«/var/log/mutt/mail»
set spoolfile=«/var/spool/mutt/mail»
#set record=«/var/log/mutt/sent»
set postponed=«/var/log/mutt/postponed»
/etc/weekly_report_usa
#!/bin/bash
if [ -d /mnt/0000000000/smsgate/ ]; then
echo "Existing buffer directory" | tee /var/log/mail.log
else
mkdir -p -m 777 /mnt/0000000000/smsgate/
echo "Created buffer created" | tee /var/log/mail.log
fi
echo "Send mail to xxx@xxx.com, yyy@yyy.ru" | tee /var/log/mail.log
echo "" | mutt -x -s "Weekly Report UTS" -a /mnt/0000000000/smsgate/WeeklyReport.xls -- xxx@yyy.com
echo "" | mutt -x -s "Weekly Report UTS " -a /mnt/0000000000/smsgate/WeeklyReport.xls -- xxx@yyy.ru
echo "Remove report.XLS file"
rm /mnt/0000000000/smsgate/WeeklyReport.xls

/etc/crontab

0 /2 * * 1 root /bin/bash /etc/weekly_report_usa