Показаны сообщения с ярлыком mail. Показать все сообщения
Показаны сообщения с ярлыком mail. Показать все сообщения

Audit Logging в Exchange 2010

вторник, 26 октября 2010 г.
В Exchange 2010 есть новая полезная функция, которая позволяет отслеживать все изменения выполняемые пользователями или администраторами в системе. Все действия, независимо от того где они были выполнены, в EMS, EMC или ECP будут сохраняться в журнале аудита. В данном режиме не логируются командлеты “Get”, так как в результате мы получим огромный лог обычных ежедневных операций.

Для успешной настройки логирования необходимо выполнить следующие действия. Для большинства из них мы будем использовать командлет Set-AdminAuditLogConfig.

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

Аудит администратора по умолчанию выключен. Запустите командлет Get-AdminAuditLogConfig | fl для проверки:

Для включения аудита запустите следующий командлет:
Set-AdminAuditLogConfig –AdminAuditLogEnabled $true

Для настройки агента аудита, отсылающего почту на выбранный нами ящик выполните следующую команду:
Set-AdminAuditLogConfig –AdminAuditlogMailbox “AuditMailbox@mail.local”

Вы можете выбрать командлеты, которые будут подвергаться аудиту. К примеру вы можете логировать выполнение любых командлетов, связанных с транспортными функциями и почтовыми ящиками, использовав маску *mailbox* и *transport*.
Set-AdminAuditLogConfig –AdminAuditLogCmdlets *mailbox*, *transport*

Таким же способом мы можем отбирать логируемые параметры командлетов.
Set-AdminAuditLogConfig –AdminAuditLogParameters database, server

Cron и почта. Красивые и правильные отчёты о выполнении скриптов

среда, 11 ноября 2009 г.
Сегодня хочется поговорить о правильном оповещении себя любимого по почте о ходе выполнения скриптов в cron'е, т.к. на мой взгляд, самым главным в администрировании является молниеносная реакция на произошедшие события и ошибки.

Я использую планировщик сron в повседневно практике как средство резервного копирования, как средство мониторинга логов и выполнения других скриптов =). И в этом случаем для меня очень важен результат таких действий. Ведь может закончится место на диске, не правильно выставиться права на файлы после перезагрузки да и просто «коллеги» могу напакостить.
Сразу оговорю условия. Я буду рассматривать задачу с точки зрения шлюза в интернет, так как в этом случае наличие на нём установленного и настроенного почтовика стремится к нулю.
Так вот, cron по умолчанию отсылает результаты выполнения команд (проще говоря, то что должно выводится в консоль) на локальную почту пользователя. Пользы от такого довольно мало. Что бы поменять почту, на которую будут отсылаться письма, нужно определить переменную MAILTO в crontab'е:

$ crontab -e

MAILTO = user@ya.ru
# m h dom mon dow command
*/1 * * * * echo "123"; date

Однако, подождав, мы не получим ничего на нашу почту. Почта не ушла потому что у нас нет настроенного smtp сервера. И устанавливать такие монстры как sendmail, postfix и exim мы не будем. Зачем нам всё это на маленьком роутере, да и безопасности эти демоны ни капельки не добавят.

В этом случае лучшим решением, на мой взгляд, является msmtp. Маленькая программка, единственным назначением которой, является пересылка почты используя «большие» smtp сервера, к примеру gmail. Ставим:

$ sudo apt-get install msmtp

Конфигурируем на использование учётки на gmail:

$ nano ~/.msmtprc

defaults
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log

account gmail
host smtp.gmail.com
port 587
protocol smtp
auth on
from user@gmail.com
user user@gmail.com
password passWoRd

# Set a default account
account default : gmail

Не забываем права:

$ chmod 600 ~/.msmtprc

От этой учётки (той, которую указали в конфиге) мы будем получать письма.
Тепрь делаем финт ушами и создём симлинк на sendmail:

$ sudo ln -s /usr/bin/msmtp /usr/sbin/sendmail

Сейчас при выполнении команды из crontab'а к нам на почту (ту что мы указали в MAILTO) благополучно приходит почта с того адреса, который мы указали в конфиге msmtprc. =)
Ещё один маленький нюанс. Мы все помним, что есть три стандартных потока: stdin stdout и stderr. По умолчанию из крона отсылаются два потока: стандартный поток вывода и стандартный поток вывода ошибок. Для того чтобы мы получали только вывод ошибок на почту необходимо поменять строку в crontabe на следующую:

*/1 * * * * echo "123" > /dev/null

Так мы отправили весь стандартный вывод в «бездну».
И наоборот — чтобы получать только вывод скрипта и никаких ошибок:

*/1 * * * * echo "123" 2>/dev/null

Напомню, что 2 — это поток вывода ошибок.
Ну и напоследок, отправляем всё в небытие (не по теме, но может кому-то пригодится):

*/1 * * * * echo "123"> /dev/null 2>&1

Тут мы отправили стандартный вывод в /dev/null и тудаже вывод ошибок.
Вернёмся к почте. При такой отправке результатов к нам на почту приходят письма примерно с такой темой:

Cron echo "123" 2> /dev/null

Что не есть информативно. Куда лучше было бы получать письма, в теме которых было что-то красивое и удобное. Однако для этого одним только MAILTO из crontab'а не обойтись.
Здесь нам понадобится команда mail. Если у вас её нет, тогда поставим heirloom-mailx:

$ sudo apt-get install --no-install-recommends heirloom-mailx

Теперь нужно указать в конфиге mail, что мы будем использовать msmtp.

$ nano ~/.mailrc

set sendmail="/usr/bin/msmtp"

Проверяем отправку почты

$ mail -s "Здесь будет тема письма." user@ya.ru

Далее пишем текст письма и нажимаем Ctr-D (^D ;).
Ну и собственно кронтаб:

*/1 * * * * echo "123" | mail -s "Проверка крона" user@ya.ru

Или вот так, если логи/текст у нас уже сформированы и хранятся в файле super_logs.txt

*/1 * * * * mail -s "Проверка крона" user@ya.ru < super_logs.txt

Вместо вывода

Каждый из способов чем-то лучше другого. Для себя же я отсановился на варианте отправки результатов выполнения скрипта через утилиту mail, а ошибки принимаю через директиву MAILTO.

Логирование писем, отосланных через функцию mail()

воскресенье, 9 августа 2009 г.

Если у вас свой сервер (или хостинг-сервер), на котором расположено множество различных проектов, то, возможно, вы сталкивались со следующей проблемой: из-за уязвимости в скрипте на один из проектов попал вредоносный код, занимающийся рассылкой спама. Найти виновника порой бывает весьма проблематично. Так что оптимальным выходом будет просто логировать действия функции mail()

Все крайне просто
Создайте файл /usr/local/bin/phpsendmail и поместите в него следующий код:

#!/usr/bin/php
/**
This script is a sendmail wrapper for php to log calls of the php mail() function.
Author: Till Brehm, www.ispconfig.org
*/
$sendmail_bin = '/usr/sbin/sendmail';
$logfile = '/var/log/mail.form';
//* Get the email content
$logline = '';
while ($line = fgets(STDIN)) {
if(stristr($line,'to:') || stristr($line,'from:')) $logline .= trim($line).' ';
$mail .= $line;
}

//* compose the sendmail command
$command = 'echo "'.$mail.'" | '.$sendmail_bin.' ';
for ($i = 1; $i < $_SERVER['argc']; $i++) {
$command .= $_SERVER['argv'][$i].' ';
}

//* rotate log if it gets too big
if(is_file($logfile) && filesize($logfile) > 10000000) {
if(is_file($logfile.'.old')) unlink($logfile.'.old');
exec('cp -pf '.$logfile.' '.$logfile.'.old');
exec('cat /dev/null > '.$logfile);
}

//* Write the log
system('echo "'.date("Y-m-d H:i:s").' '.$_ENV['PWD'].' '.$logline.'" >> '.$logfile);

//* Execute the command
return shell_exec($cmd);


Это логгер всех сообщений с ротированием лог-файла.
Не забудьте указать верный путь к sendmail в переменной $sendmail_bin

Затем сделайте скрипт исполняемым

chmod +x /usr/local/bin/phpsendmail

Создайте лог-файл, смените владельца на пользователя, от которого запускается веб-сервер и дайте ему права на запись

touch /var/log/mail.form
chown www-data:www-data /var/log/mail.form
chmod 0700 /var/log/mail.form

Приведите ваш конфигурационный файл php.ini к следующему виду (измените параметр sendmail_path)

[mail function]
; For Win32 only.
;SMTP = localhost
;smtp_port = 25

; For Win32 only.
;sendmail_from = me@example.com

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
sendmail_path = /usr/local/bin/phpsendmail

И перезапустите веб-сервер

/etc/init.d/apache2 restart

Проверить логгер можно с помощью нехитрого скрипта:

mail('yourname@yourdomain.com','This is a test message subject','This is a test message body');
echo 'Mail sent.';


Запустите этот сценарий через web и проверьте лог:cat /var/log/mail.form

Оригинал: http://howtoforge.org/how-to-log-emails-sent-with-phps-mail-function-to-detect-form-spam

Отправка e-mail писем с вложениями из консоли

четверг, 9 апреля 2009 г.
Чтобы отослать электронное письмо из командной строки, можно воспользоваться утилитой mail. Также она может встречаться под названием mailx или Mail. Для отправки письма пишем следующую команду:

$ mail -s "Тема письма" pupkin@mail.ru
Привет!
Я пишу тебе из консоли!
Ctrl+D


Комбинация клавиш Ctrl+D (^D) с новой строки позволяет завершить ввод письма. После этого у меня появляется приглашение ввести получателя копии - просто жму "Enter", и письмо отправляется.

Если тело письма находится в файле, то можно просто воспользоваться перенаправлением входного потока:

$ mail -s "Письмо из файла" pupkin@mail.ru

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

$ ls | mail -s "Вывод команды" pupkin@mail.ru

Кроме того, утилита позволяет не только читать письма, но и получать их, отвечать и делать прочие полезные манипуляции. Но вот чего она, похоже, не позволяет - так это добавить вложение к письму. Однако, это не беда. Есть немало способов отправить файл из консоли по электронной почте. Я рассмотрю три из них, которые не потребовали от меня разбираться в чем-то или что-то скачивать/устанавливать.

1. Если нужно отправить двоичный файл письмом, можно его просто закодировать с помощью uuencode. Команда будет выглядет следующим образом:

$ uuencode image.jpg image.jpg | mail -s "Метод 1" sombeody@somewhere.net

И хотя файл действительно закодируется и отправится, это не является вложением в полном смысле электронной почты. некоторые почтовые клиенты адэкватно отреагируют на файл в письме, другие же покажут его как простой текст, и раскодировать его придется вручную.

2. С помощью консольной утилиты mpack. Эта утилита пакует файл в сообщение и отсылает полученное сообщение туда, куда изволите.

$ mpack -s "Метод 2" image.jpg sombeody@somewhere.net

3. С помощью полноценного консольного почтового клиента mutt. Можно запустить его, сформировать письмо и отправить куда надо. А можно запустить mutt в режиме эмуляции диалога mailx (параметр -x), при этом передав через параметры все необходимое, чтобы не получать лишних вопросов от этой программы. Второй вариант выглядит так:

$ echo "Смотри вложение" | mutt -x -s "Метод 3" -a image.jpg sombeody@somewhere.net