Ключевые слова:sendmail, mail, (найти похожие документы)
From: Олег <rawsik@mail.ru.>
Newsgroups: email
Date: Mon, 21 Dec 2008 17:02:14 +0000 (UTC)
Subject: Как скопировать всю исходящую почту через sendmail
В этой заметке мы рассмотрим как организовать копирование
исходящий(возможно всей т.е. и входящей) почты проходящей через
sendmail. Было рассмотрено несколько вариантов муссировающих в
интернете, и выбран полностью рабочий, проверен на FreeBSD 6 и 7 RELEASE
1. Введение
Морально-этические соображения, касающиеся вопроса копирования исходящей
почты, находятся за рамками данной статьи и здесь не рассматриваются.
Следует отметить, что, как правило, копирование почты, в особенности без
уведомления корреспондентов, считается неэтичным, а в некоторых случаях
даже противозаконным. ). Создатели Sendmail намеренно исключили такую
возможность у самого почтовика, сославшись на то, что они хотят сделать
подглядывание за чужой почтой хотя бы немного сложнее.
С другой стороны, надо понимать, что вся почта передающаяся через
почтовый сервер, и через все остальные серверы по пути её следования,
может быть легко просмотрена их администраторами. Если нужно чтобы почту
не мог прочитать никто, нужно использовать системы шифрования почты,
такие как PGP/GPG и другие подобные.
2. Как копируют почту?
При использовании Sendmail в качестве основной почтовой программы (MTA),
копирование исходящей почты возможно одним из трёх способов:
* Копирование с помощью другой копии sendmail
* Копирование с помощью локального обработчика почты, обычноprocmail
* Копирование с помощью программы, подключенной через milter-интерфейс Sendmail
Ниже рассматривается, как можно настроить копирование почты по третьему
способу, то есть через milter-интерфейс Sendmail.
В качестве программы, выполняющей копирование почты, используется
программа Synonym.
3. Копирование через milter
Копирование почты выполняется с помощью внешней программы Synonym,
которая получает почтовое сообщение от Sendmail'а через Milter API.
Synonym на основе дотаточно грубых критериев выбирает часть писем и
передаёт их программе procmail, которая выполняет обработку на основе
любой информации в заголовках и теле письма.
4. Установка Synonym'a
Обновляем порты ( portsnap fetch update)
cd /usr/ports/mail/synonym
make install clean
в /etc/rc.conf добавляем
synonym_enable="YES"
5. Настройка Sendmail
в /etc/mail/domen.mc добаляем строчку:
INPUT_MAIL_FILTER(`Synonym', `S=local:/var/run/synonym/synonym.sock, T=C:10m;S:1s;R:1s;E:5m')
затем
cd /etc/mail
make install
make restart
этими коммандами мы собираем конфиг заново и перезапускаем sendmail
6. Настройка Synonym'a
конфиг - /usr/local/etc/synonym.conf
<Rules>
<Rule>
<Condition>
<Header>From</Header>
<Match>.*domen.ru</Match>
</Condition>
<Action>
<ActionType>Copy</ActionType>
<Address>seacher@domen</Address>
</Action>
</Rule>
</Rules>
в вышеописанном примере вся почта домена копируется на определённый ящик.
Можно составить в принципе любую конструкцию. и отправлять письма не
только на локальный ящик.
Например, можно фильтровать по "subject", по "to" и т.д.
Также, почту из ящика seacher@domen, можно раскидывать по
необходимостям, с помощью procmail
пример:
MAILDIR=$HOME
FORMAIL=/usr/local/bin/formail
# Copy monitored addresses to abuse@example.comЭтот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
:0 c
* ^(From|To).* Этот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
{
# Prevent mail loops
:0
* ^X-Loop
/dev/null
# Copy each message to "monitored" directory
:0 c
monitored
# Add an "X-Loop" header to prevent milter mail loops and mail a copy of the message to abuse@example.comЭтот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
:0
| $FORMAIL -I "X-Loop: Synonym" | mailx -s "Monitored email" abuse@example.comЭтот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script
}
# Copy messages from example.com containing attachments
# to attachments sub-directory for attachment report processing
:0
* ^From.*example\.com
{
:0 B
* filename=
attachments
}
# Discard all other messages
:0
*
/dev/null
7. Запуск
после этого запускаем synonym
/usr/local/etc/rc.d/synonym start
всё. копирование исходящей почты пошло!
* обсудить статью
* источник. Статьи по FreeBSD, Linux