LINUX.ORG.RU
ФорумAdmin

Перенаправление писем с Postfix на сервер DLP-системы

 ,


0

2

Доброго времени суток всем!

ВАЖНО: всё сделано абсолютно законно, сотрудники знают о мониторинге, расписывались в куче документов и т.п.

Необходимо реализовать следующую схему:

1) наш почтовый сервер (mail.domain.com) при отправке/получении писем, сверяет список отправителей/получателей со списком из файла (например, dlp_users);
2.а) если отправитель/получатель НЕ указаны в файле dlp_users, то письмо стандартно обрабатывается и отправляется в место назначения;
2.б) если если отправитель/получатель указаны в файле dlp_users, то письмо отправляется на сервер в локальной сети (например, сервер системы DLP - dlp.domain.com - IP 192.168.1.10);
3.б) сервер системы DLP возвращает письмо без изменений почтовому серверу mail.domain.com по SMTP;
4.б) почтовый сервер видит, что письмо пришло от сервера DLP, поэтому пропускает проверку отправителей/получателей, и стандартно обрабатывает и отправляет его (письмо) в место назначения.

Как планировалось реализовать:

1) с помощью параметров smtpd_recipient_restrictions и smtpd_sender_restrictions в main.cf исходящие и входящие письма проверяются по списку пользователей dlp_users. Если отправитель или получатель попадает в этот список, то письмо перенаправляется на сервер DLP с помощью указания фильтра в dlp_users:
test@domain.com FILTER smtp:192.168.1.10
2) письмо возвращается от сервера DLP и для избежания петель в соответствии с transport_maps = hash:/etc/postfix/transport сразу отправляется на локальный порт встроенного контентного фильтра - 127.0.0.1:10025.

Проблема в том, что устранить петли таким образом не удалось. При отправке/получении письма для абонента из списка dlp_users письмо начинает ходить между почтовым сервером и сервером DLP, пока не отбрасывается из-за превышения числа hop'ов.

Пробовали указывать для защиты от петель smtpd_client_restrictions = check_client_access hash:/etc/postfix/dlp_server в main.cf при этом в dlp_server указать: 192.168.1.10 FILTER smtp:127.0.0.1:10025 Но это тоже не помогло.

Выдержки из конфигов:
main.cf
transport_maps = hash:/etc/postfix/transport
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/dlp_users
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/dlp_users
dlp_users
test@domain.com FILTER smtp:192.168.1.10
transport
192.168.1.10 smtp:[127.0.0.1]:10025

Всё примерно так же, как при настройке антивируса и пр.

В master.cf описываете два smtpd процесса, один стандартный, у него указываете smtpd_recipient_restrictions, smtpd_sender_restrictions, другой на не стандартном порту (допустим 10025), без этих фильтров. Потом делаете DNAT приходящего от ip-адреса DLP-системы, только не вешайте второй smtpd на 127.0.0.1/8 (localhost), на эти адреса DNAT не сработает.

mky ★★★★★ ()

Если

сервер системы DLP возвращает письмо без изменений

То не проще ли будет использовать: recipient_bcc sender_bcc?

И не городить такие надстройки.

Bootmen ★★★ ()
Ответ на: комментарий от mky

Большое спасибо за ответ. Обязательно попробую. По результатам отпишусь

alexjob24 ()
Ответ на: комментарий от Bootmen

Может быть проще. Дело в том, что я вообще не админ и никогда не админил почтовик. Поэтому до чего сам докопался, то и пытаюсь сделать.

Спасибо за ответ, почитаю про этот параметр. Возможно попробуем применить

alexjob24 ()
Ответ на: комментарий от Bootmen

Почитал про recipient_bcc sender_bcc, но это не то. Просматривать все письма самостоятельно не вариант, это должна делать система DLP со всеми её плюшками (контентным анализом и т.п.).

alexjob24 ()
Ответ на: комментарий от alexjob24

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

Bootmen ★★★ ()
Ответ на: комментарий от Bootmen

Дело в том, что система DLP анализирует проходящие через её сервер письма по куче разных параметров (начиная c адресатов и заканчивая разбором архивов и анализом pdf). После этого она формирует событие на своей консоли управления и отдает письмо обратно почтовому серверу.

Я не понимаю, что даст прикручивание скрипта или файла в данном случае. Каким образом после _bcc данные попадут в систему DLP для анализа? Как DLP будет разбирать письмо после _bcc (поля отправителей и получателей будут исходными?)?

Не могли бы Вы немного пояснить свою точку зрения

alexjob24 ()
Ответ на: комментарий от mky

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

Apr 7 13:51:22 host 192.168.1.10[192.168.1.10] said: 442 192.168.1.1: Bad Connection. (Network error ) (in reply to end of DATA command)

где 192.168.1.10 - DLP, а 192.168.1.1 - почтовик

alexjob24 ()
Ответ на: комментарий от alexjob24

Никогда не видел подобного сообщения. Возможно, что дополнительный порт (10025) перекрыт в iptables. Но, странно, что доходит до передачи тела письма (команда DATA).

Проверьте, что в выводе команды netstat процесс smtpd слушает этот порт. Откройте его для всей локальной сети (192.168) и попробуйте к какого-нибудь компа отправить письмо telnet'ом на порт 10025, будет видно после какой команды происходит ошибка.

mky ★★★★★ ()
Ответ на: комментарий от alexjob24

А давайте проще. Вам нужно письмо. Вам его доставляет _bcc Что еще? Ага еще крутить. доставлять обратно, боротся с постфиксом... Удачи. :)) Если упадет DLP то еще принять дерьма за недоставку...

Bootmen ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.