системный фильтр exim

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
moreh
рядовой
Сообщения: 24
Зарегистрирован: 2010-06-07 13:48:50

системный фильтр exim

Непрочитанное сообщение moreh » 2010-08-03 16:43:48

можно ли определить системным фильтром существование почтового ящика? если да то как?
а если нет, то такой вопрос, у меня системным фильтром копируются входящие письма в определённый ящик(сделано фильтром потому что там есть по домену), а в конфиге exim ещё идёт копирование не существующих писем в ящик еррор, дак вот получается, что сначала входящее письмо на не существующий ящик копируется в фильтре а потом когда проходит все проверки копируется ещё в ящик еррор, как этого избежать? или как сделать копирование писем в системном фильтре после всех проверок?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

moreh
рядовой
Сообщения: 24
Зарегистрирован: 2010-06-07 13:48:50

Re: системный фильтр exim

Непрочитанное сообщение moreh » 2010-08-05 13:42:51

Вобщем я тут разобрался получилось довольно красиво :) И так вопрос был мною задан, я и отвечу на него вдруг кому понадобится готовое решение.

Значит задача состояла в том что бы:
1. Письма приходящие на не существующие адреса перенаправлять на ящик error@local.domain
2. Письма отправленые на внешние домены, от юзеров которым не разрешено отправлять почту в мир, перенаправлять в ящик error@local.domain
3. Письма которые пришли с внешнего мира, юзерам которым не разрешено получать письма с внешки, перенаправлять в ящик error@local.domain
4. Письма которые отправлены на внешние домены и которые не подходят под вышеописанные правила(это для юзеров которым разрешено и которые не попадают в error), копировать в ящик outgoing@local.domain
5. Все входящие письма, которые не подходят под вышеописанные правила и не попадают в error копировать в admink@local.domain

И так сам файл фильтра

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

logfile /var/log/exim/filter

#Перенаправляем все входящие на не существующие адреса на error@local.domain
if ($recipients match "@local.domain" and $recipients is "${lookup mysql{SELECT `goto` FROM `alias` WHERE \
                   `address`='$recipients' and `active`='1'}}")
then                                                      #тут может быть как то сделать можно более логично? :) потому что $recipients does not match не работает :(
else
seen deliver error@local.domain   
finish
endif

#Перенаправляем все входящие письма от доменов отличных от local.domain
#на адрес error@local.domain, для всех юзеров, которым запрещено принимать письма с инета
if ($sender_address does not match "@local.domain" and $recipients is "${lookup mysql{SELECT `goto` FROM `alias` WHERE \
                   `address`='$recipients' and `noinet`='1'}}")
then
seen deliver error@local.domain
finish
endif

#Перенаправляем все исходящие письма на внешние домены отличные от local.domain
#на адрес error@local.domain, для всех юзеров которым запрещено посылать письма в инет
if ($recipients does not match "@local.domain"  and $sender_address is "${lookup mysql{SELECT `goto` FROM `alias` WHERE \
                   `address`='$sender_address' and `noinet`='1'}}")
then
seen deliver error@local.domain
finish
endif


if $recipients does not match "@local.domain" #копируем все исходящие которые уходят не на локальный домен
then
unseen deliver outgoing@local.domain
endif

if $recipients match "@local.domain"    #копируем все входящие на @local.domain admink@local.domain
then
unseen deliver admink@local.domain
endif

Ну вот и всё, всё оказалось очень просто...
Критика и предложения приветствуются.