Настройка архивирования всей исходящей почты в sendmail [2008]
В этой заметке мы рассмотрим как организовать копирование исходящий(возможно всей т.е. и входящей) почты проходящей через 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, которая выполняет обработку на основе любой информации в заголовках и теле письма.
в вышеописанном примере вся почта домена копируется на определённый ящик.
Можно составить в принципе любую конструкцию. и отправлять письма не только на локальный ящик. Например, можно фильтровать по "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 }