The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"postfix prce regexp"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"postfix prce regexp"  +/
Сообщение от taphy (ok) on 10-Авг-09, 05:36 
Доброго времени суток, подскажите плиз как создать правильный header_cheks (что-то не въезжается в pcre-регулярные выражения однако.. )

цель - проанализировать заголовок TO: надо пропустить почту в определенные домены в адреса  либо postmaster@ либо support@ либо набор цифр (цифры могут начинаться с +) - все остальное в эти домены - зарежектить (в другие домены - пропустить)

на perl это получается отфильтровать:
$res !~ /\:\s<(postmaster|support|(\+)?(?>\d+))@((E|e)(2|(to))myplace|e2m\.(S|s)omewhere|email2myplace|te?xt(M|m)e)/
(отбрасывается все что не совпадает с темплэйтом - в перле все ок)

Как описать это же в синтаксисе понятном pcre?

Заранее огромное спасибо!  

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "postfix prce regexp"  +/
Сообщение от Michael (??) on 10-Авг-09, 09:17 

>Заранее огромное спасибо!

юзайте тулсу prce_test для проверки выражений

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "postfix prce regexp"  +/
Сообщение от taphy (ok) on 10-Авг-09, 10:02 
>
>>Заранее огромное спасибо!
>
>юзайте тулсу prce_test для проверки выражений

Спасибо за совет, обязательно воспользуюсь

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "postfix prce regexp"  +/
Сообщение от angra (ok) on 10-Авг-09, 09:27 
pcre это _perl_ compatible regular expressions. Различия между ними и собственно perl минимальны. Самая частая проблема при переходе с perl на pcre это правила экранирования, убедитесь что вы правильно экранируете для postfix и/или покажите соответствующую строку конфига, если не уверены.
Кстати ваш регекс на perl несколько корявый, как вариант опишите _четко_ все условия и мы вам дадим более вменяемый вариант.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "postfix prce regexp"  +/
Сообщение от taphy (ok) on 10-Авг-09, 10:01 
:) корявый не то слово (самой смотреть противно..)
условия - надо одним (желательно) разом отсортировать примерно так:
OK для аккаунтов
postmaster
support
(+)12345457347 (количество цифр варьируется, "+" появляется далеко не в каждом варианте)
в доменах
e2myplace.*
e2m.somewhere.*
email2myplace.*
txtme.*
textme.*

(.* в хвосте - так как могут быть и .net и .com и тп)

REJECT для любых других  вариантов аккаунтов в этих же доменах
OK для любых других аккаунтов в любых других доменах

а строка конфига (пока что) ~такая же как и кривое перловое выражение в предыдущем посте
/etc/postfix/header_checks:
!/^To:  (postmaster|support|(\+)?\d+)@(e(2|(to))myplace|e2m\.somewhere|email2myplace|te?xtme)/ WARN

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "postfix prce regexp"  +/
Сообщение от angra (ok) on 11-Авг-09, 08:41 
Регекс:
(?:postmaster|support|\+?\d+)\@(?:e(?:2|to)myplace|e2m\.somewhere|email2myplace|te?xtme)\.[A-z]{2,3}

Но тут нужно учесть необходимость ограничений по краям, например \s+ в начале и $(конец строки) в конце. Иначе под него попадет что-то вроде asdf1@txtme.wtf.somedomain.com

Не стоит забывать, что верхний регистр является допустимым в заголовках, а значит желательна опция i после закрывающего / или в конструкции вида (?i:шаблон). Также адрес может быть как в виде "To: email" так и "To: имя<email>", причем в To разрешается перечислять много адресов через запятую.

Ну и наконец главное, возможно у вас действительно задача проверки заголовков, но в большинстве случаев нужна проверка to: из конверта и не при локальной доставке, а еще на этапе smtp сессии дабы не порождать рикошет. Обычно MTA при принятии решений смотрит только на конверт, а в заголовке To: можно прописать вообще все что угодно.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "postfix prce regexp"  +/
Сообщение от taphy (ok) on 13-Авг-09, 05:40 
angra, биг-биг спасибо, обязательно попробую!
и вот абсолютно точно - ведь не стого начала - именно конверт нужно проверять а не хедеры
так что сейчас подобный регэксп (предложенный - сечас попробую)  помещен в /etc/postfix/recipient.regexp:

в /etc/postfix/main.cf:
smtpd_recipient_restrictions =
                warn_if_reject check_recipient_access regexp:/etc/postfix/recipient.regexp,
                permit_mynetworks,
                reject_unauth_destination,
                warn_if_reject reject_unknown_sender_domain,
                reject_rbl_client zen.spamhaus.org,
                reject_rbl_client bl.spamcop.net,
                permit


(сидит перед permit_mynetworks, поскольку и из своих сеток отосланное по ошибке  не должно пролезать..)

вопрос кстати - а я дыру в секурити я не сделаю таким образом? все что не проанализировано этим правилом - куда попадает: в (ОК + --> к адресату) или по дальнейшему списку пойдет оцениваться?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "postfix prce regexp"  +/
Сообщение от taphy (ok) on 11-Авг-09, 01:33 
нет.. все равно ничего не понимаю..
pcretest не жалуется на ситаксис - типа все ок
но заданный шаблон не работает.. пробую самое примитивное:

/^To: support@/         WARN some errors

при этом ок - ожидаемый результат достигнут:
Aug 11 09:11:33 test-shaggy postfix/pickup[5643]: D10C1481CE: uid=0 from=<root>
Aug 11 09:11:33 test-shaggy postfix/cleanup[5650]: D10C1481CE: message-id=<20090810211133.D10C1481CE@myhost.e2myplace.com>
Aug 11 09:11:33 test-shaggy postfix/nqmgr[5644]: D10C1481CE: from=<root@myhost.e2myplace.com>, size=313, nrcpt=1 (queue active)
Aug 11 09:11:33 test-shaggy postfix/local[5652]: D10C1481CE: to=<taphy@myhost.e2myplace.com>, orig_to=<postmaster@myhost.e2myplace.com>, relay=local, delay=0, status=sent (mailbox)

Aug 11 09:11:35 test-shaggy postfix/pickup[5643]: CEAFF481CE: uid=0 from=<root>
Aug 11 09:11:35 test-shaggy postfix/cleanup[5650]: CEAFF481CE: warning: header To: support@myhost.e2myplace.com from local; from=<root@myhost.e2myplace.com> to=<support@myhost.e2myplace.com>: some errors
Aug 11 09:11:35 test-shaggy postfix/cleanup[5650]: CEAFF481CE: message-id=<20090810211135.CEAFF481CE@myhost.e2myplace.com>
Aug 11 09:11:35 test-shaggy postfix/nqmgr[5644]: CEAFF481CE: from=<root@myhost.e2myplace.com>, size=310, nrcpt=1 (queue active)
Aug 11 09:11:35 test-shaggy postfix/local[5652]: CEAFF481CE: to=<support@myhost.e2myplace.com>, relay=local, delay=0, status=sent (mailbox)

после попытки инвертировать шаблон - чушь какая-то - вываливается warning на header Received, но проверка ЭТОГО хедера не задана!! (подскажите плиз как же это вообще работает в таком случае? где я вру?):
!/^To: support@/                WARN some errors

Aug 11 09:24:36 test-shaggy postfix/pickup[5677]: 1EDCD481CE: uid=0 from=<root>
Aug 11 09:24:36 test-shaggy postfix/cleanup[5697]: 1EDCD481CE: warning: header Received: by myhost.e2myplace.com (Postfix, from userid 0)??id 1EDCD481CE; Tue, 11 Aug 2009 09:24:35 +1200 (NZST) from local; from=<root@myhost.e2myplace.com to=<taphy@myhost.e2myplace.com>: some errors
Aug 11 09:24:36 test-shaggy postfix/cleanup[5697]: 1EDCD481CE: warning: header To: taphy@myhost.e2myplace.com from local; from=<root@myhost.e2myplace.com> to=<taphy@myhost.e2myplace.com>: some errors
Aug 11 09:24:36 test-shaggy postfix/cleanup[5697]: 1EDCD481CE: message-id=<20090810212435.1EDCD481CE@myhost.e2myplace.com>
Aug 11 09:24:36 test-shaggy postfix/nqmgr[5678]: 1EDCD481CE: from=<root@myhost.e2myplace.com>, size=308, nrcpt=1 (queue active)
Aug 11 09:24:36 test-shaggy postfix/local[5699]: 1EDCD481CE: to=<taphy@myhost.e2myplace.com>, relay=local, delay=1, status=sent (mailbox)


Aug 11 09:20:54 test-shaggy postfix/pickup[5677]: DF529481CE: uid=0 from=<root>
Aug 11 09:20:54 test-shaggy postfix/cleanup[5685]: DF529481CE: warning: header Received: by myhost.e2myplace.com (Postfix, from userid 0)??id DF529481CE; Tue, 11 Aug 2009 09:20:54 +1200 (NZST) from local; from=<root@myhost.e2myplace.com> to=<support@myhost.e2myplace.com>: some errors
Aug 11 09:20:54 test-shaggy postfix/cleanup[5685]: DF529481CE: message-id=<20090810212054.DF529481CE@myhost.e2myplace.com>
Aug 11 09:20:54 test-shaggy postfix/nqmgr[5678]: DF529481CE: from=<root@myhost.e2myplace.com>, size=310, nrcpt=1 (queue active)
Aug 11 09:20:55 test-shaggy postfix/local[5687]: DF529481CE: to=<support@myhost.e2myplace.com>, relay=local, delay=1, status=sent (mailbox)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "postfix prce regexp"  +/
Сообщение от taphy (ok) on 11-Авг-09, 01:39 
понятно что при добавлении /^Received:/ IGNORE  - все становится ок.. но я не вижу в хедерах письма ничего что могло бы заставить срабатывать /^To:/ шаблон на проверке Received: ..

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру