recipient_bcc_maps синтаксис , инвертирование

Общие вопросы по установке и настройке сервера Postfix.
Писать в этот форум могут только зарегистрированные пользователи.

Модераторы: prefer, alexandrnew, ALex_hha, Roman, Axel

Constin
Внёс свой вклад...
Внёс свой вклад...
Сообщения: 21
Зарегистрирован: 14 мар 2008, 15:14

recipient_bcc_maps синтаксис , инвертирование

Сообщение Constin » 10 фев 2009, 16:46

Всем доброго дня.

У меня появилась задачка отсылать на специальный ящик все письма , кроме тех, которые идут с домена компании на домен компании. Доменов у меня несколько.

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

Покурил мануал по поводу recipient_bcc_maps. не нашел там овзможности сделать конструкцию вида: все, кроме mydomain.ru

Есть мысли или я может пропустил что-нибудь?
Коллеги прошу помощи.

Аватара пользователя
prefer
Site Admin
Site Admin
Сообщения: 2341
Зарегистрирован: 08 июн 2007, 09:41

Сообщение prefer » 11 фев 2009, 08:46

Посмотрите для примера тему
viewtopic.php?t=3793
I prefer Postfix

Constin
Внёс свой вклад...
Внёс свой вклад...
Сообщения: 21
Зарегистрирован: 14 мар 2008, 15:14

Сообщение Constin » 11 фев 2009, 10:22

Тот топик без сомнения относится в bcc, но моей задачи никак не касается.

Неужели в постфиксе нет синтаксиса , с помощью которого можно сделать инвертирование написав не "письмо с vasya@pupkin.ru форвардится на redirect@test.ru" , а "все письма , кроме vasya@pupkin.ru форвардятся на redirect@test.ru"

Constin
Внёс свой вклад...
Внёс свой вклад...
Сообщения: 21
Зарегистрирован: 14 мар 2008, 15:14

Сообщение Constin » 11 фев 2009, 12:53

покурил еще мануалы

есть конструкия типа !@domain.ru test@domain.ru
но она не работает в bcc

Видимо, как принято на постфикс ру, на свой вопрос я в конечном счете отвечу сам

Constin
Внёс свой вклад...
Внёс свой вклад...
Сообщения: 21
Зарегистрирован: 14 мар 2008, 15:14

Сообщение Constin » 11 фев 2009, 13:47

ну как я и предполагал, отвечать придется самому:

main.cf
recipient_bcc_maps=regexp:/etc/postfix/recipient_bcc
sender_bcc_maps=regexp:/etc/postfix/recipient_bcc

recipient_bcc
!/@(companydomain1.ru|companydomain2.ru|companydomain3.ru)/ test@companydomain.ru

Аватара пользователя
prefer
Site Admin
Site Admin
Сообщения: 2341
Зарегистрирован: 08 июн 2007, 09:41

Сообщение prefer » 12 фев 2009, 09:03

Спасибо за доведенное до ума решение.

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

Кстати в экспериментальной версии Postfix появилось действие BCC
BCC user@domain

Send one copy of the message to the specified
recipient.

If multiple BCC actions are specified within the
same SMTP MAIL transaction, only the last action
will be used.

This feature is not part of the stable Postfix
release. user@domain
Send one copy of the message to the specified
recipient.

If multiple BCC actions are specified within the
same SMTP MAIL transaction, only the last action
will be used.

This feature is not part of the stable Postfix
release.
I prefer Postfix

Constin
Внёс свой вклад...
Внёс свой вклад...
Сообщения: 21
Зарегистрирован: 14 мар 2008, 15:14

Сообщение Constin » 18 май 2009, 15:22

Задача усложнилась

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



т.е. если письмо пришло или ушло с ящика test@companydomain1.ru не важно на какого или на какой домен, то копию отсылать не надо





Логически задача решения не имеет.

Есть варианты?

Аватара пользователя
prefer
Site Admin
Site Admin
Сообщения: 2341
Зарегистрирован: 08 июн 2007, 09:41

Сообщение prefer » 19 май 2009, 13:17

Логически задача решения не имеет.
Шахматисты говорят - "Если данный этюд не решается,то поставте на доску одну или несколько фигур и попробуйте снова".

Добавим smtpd демон и cleanup модуль.

Решение

Код: Выделить всё

файл main.cf 

recipient_bcc_maps =
sender_bcc_maps =
mybcc =regexp:/etc/postfix/bcc_filter

smtpd_sender_restrictions = check_sender_access regexp:/etc/postfix/filter_mailbox
smtpd_recipient_restrictions = check_recipient_access regexp:/etc/postfix/filter_mailbox

файл bcc_filter 

!/@(companydomain1.ru|companydomain2.ru|companydomain3.ru)/ test@companydomain.ru

файл filter_mailbox

!/test@companydomain1.ru/ FILTER smtp:[127.0.0.1]:1025

файл master.cf 

127.0.0.1:1025 inet n    -       n       -       -     smtpd
          -o cleanup_service_name=mycleanup

mycleanup unix n    -       n       -       0     cleanup
        -o recipient_bcc_maps=$mybcc
        -o sender_bcc_maps=$mybcc
I prefer Postfix

Constin
Внёс свой вклад...
Внёс свой вклад...
Сообщения: 21
Зарегистрирован: 14 мар 2008, 15:14

Сообщение Constin » 22 май 2009, 16:25

вот спасибо, не ожидал!
попробую

Constin
Внёс свой вклад...
Внёс свой вклад...
Сообщения: 21
Зарегистрирован: 14 мар 2008, 15:14

Сообщение Constin » 22 май 2009, 16:51

А почему у вас recipient_bcc стоит в smtpd_sender_restrictions = check_sender_access regexp

а не в recipient_bcc_maps =
sender_bcc_maps =

?

Аватара пользователя
prefer
Site Admin
Site Admin
Сообщения: 2341
Зарегистрирован: 08 июн 2007, 09:41

Сообщение prefer » 24 май 2009, 10:46

Давайте рассмотрим работу решения подробнее.

Демон smtpd на 25 порту передает письма стандартному cleanup.
В main.cf recipient_bcc_maps и sender_bcc_maps пустые т.е. никакие blind carbon-copy не будут посылаться.
Параметры smtpd_sender_restrictions и smtpd_recipient_restrictions содержат критерий направления письма на порт 1025.
Смотрите содержимое файла filter_mailbox.

Демон smtpd на 1025 порту передает письма модифицированному mycleanup.
В master.cf для mycleanup заданы значения recipient_bcc_maps и sender_bcc_maps т.е. blind carbon-copy будут посылаться.
Отключена повторная обработка алиасов (предполагаем что почтовые ящики виртуальные).
А также отключен критерий направления письма на порт 1025.


Отправляем письмо с test@companydomain1.ru на user@example.ru
При отправке с test@companydomain1.ru blind carbon-copy не должны посылаться.

Путь письма через Postfix:

smtpd -> cleanup -> qmgr -> smtp


Отправляем письмо с user@companydomain1.ru на user@example.ru
При отправке с user@companydomain1.ru blind carbon-copy должны посылаться.

Путь письма через Postfix:

smtpd -> cleanup -> qmgr -> smtpd (1025 port) -> mycleanup -> qmgr -> smtp


Решение

Код: Выделить всё

файл main.cf

recipient_bcc_maps =
sender_bcc_maps =
mybcc =regexp:/etc/postfix/bcc_filter

smtpd_sender_restrictions = check_sender_access regexp:/etc/postfix/filter_mailbox
smtpd_recipient_restrictions = check_recipient_access regexp:/etc/postfix/filter_mailbox

Код: Выделить всё

файл bcc_filter

!/@(companydomain1.ru|companydomain2.ru|companydomain3.ru)/ test@companydomain.ru

Код: Выделить всё

файл filter_mailbox

!/test@companydomain1.ru/ FILTER smtp:[127.0.0.1]:1025

Код: Выделить всё

файл master.cf

127.0.0.1:1025 inet n    -       n       -       -     smtpd
          -o cleanup_service_name=mycleanup
          -o smtpd_sender_restrictions=
          -o smtpd_recipient_restrictions=

mycleanup unix n    -       n       -       0     cleanup
        -o recipient_bcc_maps=$mybcc
        -o sender_bcc_maps=$mybcc
        -o virtual_alias_maps=

I prefer Postfix

Constin
Внёс свой вклад...
Внёс свой вклад...
Сообщения: 21
Зарегистрирован: 14 мар 2008, 15:14

Сообщение Constin » 25 май 2009, 09:25

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

May 25 10:11:52 mail postfix/smtpd[23541]: fatal: parameter "smtpd_recipient_restrictions": specify at least one working instance of: check_relay_domains, reject_unauth_destination, reject, defer or defer_if
_permit

Аватара пользователя
prefer
Site Admin
Site Admin
Сообщения: 2341
Зарегистрирован: 08 июн 2007, 09:41

Сообщение prefer » 25 май 2009, 09:55

В smtpd_recipient_restrictions должен быть некий минимальный набор правил. Об этом и сообщение.
Я условно показал что smtpd_sender_restrictions и smtpd_recipient_restrictions содержат только одно правило.
I prefer Postfix

pelegrim
Новичок
Новичок
Сообщения: 3
Зарегистрирован: 03 июн 2009, 11:29

Сообщение pelegrim » 03 июн 2009, 11:38

prefer писал(а):В smtpd_recipient_restrictions должен быть некий минимальный набор правил. Об этом и сообщение.
Я условно показал что smtpd_sender_restrictions и smtpd_recipient_restrictions содержат только одно правило.
приветствую
работает ли конфиг?
у меня такая же ситуация
если можно пример smtpd_recipient_restrictions с минимальным набором правил для этого случая
спс

Аватара пользователя
prefer
Site Admin
Site Admin
Сообщения: 2341
Зарегистрирован: 08 июн 2007, 09:41

Сообщение prefer » 03 июн 2009, 11:49

Конфигурация тестировалась в "песочнице".

Код: Выделить всё

smtpd_sender_restrictions = permit_mynetworks,
                            check_sender_access regexp:/etc/postfix/filter_mailbox 

smtpd_recipient_restrictions = permit_mynetworks,
                               check_recipient_access regexp:/etc/postfix/filter_mailbox,
                               reject_unauth_destination
I prefer Postfix

Ответить