Всем привет. Впопрос по postfix.
Нужно дублировать всю входящую/исходящую почту что идет через постфикс, за исключением 2-3 ящиков.
Делаю как пишут умные люди:/etc/postfix/main.cf:
sender_bcc_maps = regexp:/etc/postfix/sender_bcc_regexp/etc/postfix/sender_bcc_regexp:
!/^(name1|name2|name3)./ backup@domain.ruПроверяю как работает regexp:
postmap -fq - regexp:/etc/postfix/filename <test
где содержимое test:
name1@domain.ru
noname@domain.ruПравила отрабатываются: видно только noname@domain.ru
НО смотря логи вижу что почта для name1,name1,name3 все равно дублируется на backup@domain.ru
Postfix 2.2.2, последний...
Чего я не понимаю?
>/etc/postfix/sender_bcc_regexp:
>!/^(name1|name2|name3)./ backup@domain.ruИМХО правильно будет без точки
!/^(name1|name2|name3)/ backup@domain.ru
>>/etc/postfix/sender_bcc_regexp:
>>!/^(name1|name2|name3)./ backup@domain.ru
>
>ИМХО правильно будет без точки
>!/^(name1|name2|name3)/ backup@domain.ruПопробовал - тоже самое.
В regexp'ах плаваю, помогайте!
1. sender_bcc_maps позволит копировать почту, адрес отправителя которой имеется в sender_bcc_regexp. Поэтому речь не может идти о копировании всей входящей/исходящей почты, как Вы указывали.
2. В данном случае
!/^(name1|name2|name3)/ backup@domain.ru
поиск адресов будет идти в $myorigin, $mydestination, $inet_interfaces или $proxy_interfaces. Вам необходимы локальные адреса?
>1. sender_bcc_maps позволит копировать почту, адрес отправителя которой имеется в sender_bcc_regexp. Поэтому
>речь не может идти о копировании всей входящей/исходящей почты, как Вы
>указывали.
>2. В данном случае
>!/^(name1|name2|name3)/ backup@domain.ru
>поиск адресов будет идти в $myorigin, $mydestination, $inet_interfaces или $proxy_interfaces. Вам необходимы
>локальные адреса?У меня есть на текущий момент 100 ящиков, надо чтобы почта входящая и исходящая для 97 ящиков копировалась в отдельный ящик - backup@domain.ru.
Если я пишу !/^(name1|name2|name3)/ backup@domain.ru то насколько я понимаю это условие расшифровывается как "все, что не содержит name1, name2, name3 писать в backup@domain.ru". Я правильно понимаю?
И я использую как sender_bcc_maps так и recipient_bcc_maps чтобы и исходящая писалась и входящая.
Примечание: если пишу /^(name1|name2|name3)/ backup@domain.ru (без восклицательного знака в начале) то копируется почта ТОЛЬКО для указанных ящиков - name1, name2, name3.
>Если я пишу !/^(name1|name2|name3)/ backup@domain.ru то насколько я понимаю это условие расшифровывается
>как "все, что не содержит name1, name2, name3 писать в backup@domain.ru".
>Я правильно понимаю?
man 5 postconfsender_bcc_maps (default: empty)
...
The table search order is as follows:- Look up the "user+extension@domain.tld" address including the
optional address extension.- Look up the "user@domain.tld" address without the optional
address extension.- Look up the "user+extension" address local part when the sender
domain equals $myorigin, $mydestination, $inet_interfaces or
$proxy_interfaces.- Look up the "user" address local part when the sender domain
equals $myorigin, $mydestination, $inet_interfaces or
$proxy_interfaces.- Look up the "@domain.tld" part.
...
Ман прочитан первым делом. Порядок поиска понятен, но какое отношение он имеет к выражению regexp'а ?
regexp правильныйpostmap -fq test regexp:/etc/postfix/sender_bcc_regexp
backup@domain.rupostmap -fq name1 regexp:/etc/postfix/sender_bcc_regexp
postmap -fq name2 regexp:/etc/postfix/sender_bcc_regexp
postmap -fq name3 regexp:/etc/postfix/sender_bcc_regexp
ничего не находят.Попробуйте такие вараинты:
!/(name1|name2|name3)/ backup@domain.ru
!/(name1|name2|name3)@local.tld/ backup@domain.ru
Оба нерабочие. ;-(
Сори, правильно конечно так
!/(name1|name2|name3)@local\.tld/ backup@domain.ru
но думаю это не поможет. А если указать пока только один?
!/^name1/ backup@domain.ru
В общем, правила с "!" нерабочие - без отрицания все работает как часы. Но не хочется получать геморрой с редактированием списка из 100 адресов и потом за ним наблюдать. ;-(
Спасибо за помощь, буду думать дальше.
Странно, проверил у себя - все работает.mydestination = ..., local.tld
!/^(name1|name2)/ user@local.tld
Проверяю через telnet
MAIL FROM: name1@local.tld
или
MAIL FROM: name2@local.tld
копия письма не уходит на user@local.tld.
MAIL FROM: test@local.tld
или любой другой адрес - копия уходит.
>НО смотря логи вижу что почта для name1,name1,name3 все равно дублируется на
>backup@domain.ru
>Чего я не понимаю?
Например, то что sender_bcc_maps не имеет ни кого отношения к "почта для" nameN
>>НО смотря логи вижу что почта для name1,name1,name3 все равно дублируется на
>>backup@domain.ru
>>Чего я не понимаю?
>Например, то что sender_bcc_maps не имеет ни кого отношения к "почта для"
>nameNт.к. мне надо копировать и для входей и исходящей почты, то использованы обе настройки
так у вас заработало решение jonatan'a?
>т.к. мне надо копировать и для входей и исходящей почты, то использованы
>обе настройки
Вот тут есть примерно про тоже, что нужно, и про регэкспы
http://www.opennet.me/base/net/postfix_tls.txt.html, а вот здеся просто разбирается вопрос о бакапе почты.
http://www.postfix.ru/viewtopic.php?p=452&
плюс еще вот http://www.opennet.me/openforum/vsluhforumID3/12241.html если используется MySQL. Я использовал на основе последнего, вполне работает. У меня правда юзерей меньше, поэтому обхожусь без регэкспов..