Документация по ОС FreeBSD Пятница, 29.03.2024, 08:56
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Mail

Контроль переписки в Postfix («большой брат» следит за тобой) [2010]

Задача — требуется контролировать переписку определенных сотрудников (официальная версия — создать backup почтовой переписки с возможностью последующего просмотра). Другими словами необходимо, чтобы при отправке письма пользователем (например, user@mydomain.ru), доставлял его почту как обычно адресату, а также дублировал это письмо в определенный ящик (например, big_brother@mydomain.ru).

На первый взгляд задача довольно не простая, но как оказалось — всё довольно легко реализуется. Имеем — операционная система FreeBSD и почтовый сервер на базе Postfix. Вот какие возможности для решения этой задачи предоставляет нам Postfix:

  • always_bcc = address
    Доставляет копии ВСЕХ сообщений (входящих и исходящих) на указанный адрес (поддерживается с Postfix v.2.1). Например, указав в /usr/local/etc/postfix/mail.cf строку always_bcc = backup@mydomain.ru можно сделать полный бэкап всей почты на адрес backup@mydomain.ru, вот только не повезет тому, кто это всё разгребать будет.
  • sender_bcc_maps = type:table и recipient_bcc_maps = type:table
    Таблицы соответствия отправителя/получателя с адресами доставки копий сообщений (функция доступна в Postfix 2.1 и выше.) То что нам и нужно.

Рассмотрим 2 варианта реализации — на основе файлов (индексированных карт hash) и базы данных MySQL.

Способ с использованием индексированных hash карт

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

1. Создаем файл в каталоге /usr/local/etc/postfix/, содержащий записи о том с какого почтового адреса копировать почту и на какой отправлять копии — назовем его sender_bcc. Добавляем в него строчку в формате:

user@mydomain.ru backup@mydomain.ru
user2@mydomain.ru backup@mydomain.ru

2. Добавляем в main.cf строчку

sender_bcc_maps = hash:/usr/local/etc/postfix/sender_bcc

3. Обязательно создаем индексированный файл:

postmap /usr/local/etc/postfix/sender_bcc

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

Аналогичные шаги нужно проделать для получения возможности копирования входящей почты. Вместо sender_bcc_maps следует использовать recipient_bcc_maps.

recipient_bcc_maps = hash:/etc/postfix/recipient_bcc

Внимание! После внесения изменений не забываем перестроить хэш:

postmap /usr/local/etc/postfix/recipient_bcc
postmap /usr/local/etc/postfix/sender_bcc

Способ с использованием MySQL

Подразумевается, что вы уже используете MySQL совместно с Postfix для хранения учетных записей, транспорта и т.д.

1. Создаем табличку bcc в вашей базе данных

CREATE TABLE bcc (
id int(10) unsigned NOT NULL auto_increment,
sender varchar(128) NOT NULL default '',
recipient varchar(128) NOT NULL default '',
copy varchar(128) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;

2. в /usr/local/etc/postfix/ создаем файлы sender_bcc.cf и recipient_bcc.cf:
sender_bcc.cf

user = postfix_user
password = postfix_password
dbname = mail_database
query = SELECT copy FROM bcc WHERE sender = '%s'
hosts = 127.0.0.1

recipient_bcc.cf

user = postfix_user
password = postfix_password
dbname = mail_database
query = SELECT copy FROM bcc WHERE recipient = '%s'
hosts = 127.0.0.1

3. В main.cf добавляем строчки

sender_bcc_maps = mysql:/usr/local/etc/postfix/sender_bcc.cf
recipient_bcc_maps = mysql:/usr/local/etc/postfix/recipient_bcc.cf

4. Перезапускам Postfix для применения изменений. Изменения данных в таблице MySQL bcc применяются без перезапуска Postfix.

Избавляемся от дублирования сообщений bcc_maps

Чтобы не происходило дублирования почты при использовании bcc_maps в master.cf следует добавить строчку:

-o receive_override_options=no_address_mappings

В моём случае это выглядит так:

smtp inet n - n - - smtpd
#AntiSPAM + DrWeb
 -o receive_override_options=no_address_mappings
 -o content_filter=kas3scan:127.0.0.1:9026

Напоследок — неплохая статья по настройке Postfix , хотя сам несколько иначе строил, но руки пока не доходят написать свою статью полностью. Хотя есть некоторые наработки, описания которых не встречал в сети.



Источник: http://www.mdex.nnov.ru/kontrol-perepiski-postfix.html
Категория: Mail | Добавил: oleg (03.04.2010) | Автор: Dreamer
Просмотров: 1298 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024