[Exim 4.71] перестал действовать редирект

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
atomic
рядовой
Сообщения: 18
Зарегистрирован: 2008-11-25 12:03:12
Откуда: город из стекла, стали и бетона..

[Exim 4.71] перестал действовать редирект

Непрочитанное сообщение atomic » 2010-03-04 10:50:24

Всем привет!

стоит в конфиге редирект от одного ящика (test@mydomain.ru) на другой. Но с условием: что разрешен он только с определенного IP:

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

alluser:
   driver  = redirect
   condition = ${if match_ip{$sender_host_address}{192.168.xx.xx}}
   local_parts = test
   data = ${lookup mysql{SELECT goto FROM alias_alluser WHERE \
           address='${quote_mysql:$local_part@$domain}'}} 
такая конструкция работает у меня на Exim 4.69. однако тут - нет.
Соотв. как только я закомменчу строки с condition и local_parts все ОК становится.

в чем может быть трабл?

спасибо.
А я романтик, мне не нужны билеты,
Я на собаках уеду на край света...

Хостинговая компания 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/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: [Exim 4.71] перестал действовать редирект

Непрочитанное сообщение Alex Keda » 2010-03-04 11:02:52

c отладочкой письмо запульните
там всё будет
Убей их всех! Бог потом рассортирует...

Аватара пользователя
atomic
рядовой
Сообщения: 18
Зарегистрирован: 2008-11-25 12:03:12
Откуда: город из стекла, стали и бетона..

Re: [Exim 4.71] перестал действовать редирект

Непрочитанное сообщение atomic » 2010-03-04 14:17:56

хм...что-то не в куриваю.
запускаю с ключами -d+all -dh 192.168.xx.xx
не вижу там вывода о проверки моей части редиректа которая под вопросом...
не понимаю до сих пор что его не устраивает в данной конфигурации...
А я романтик, мне не нужны билеты,
Я на собаках уеду на край света...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: [Exim 4.71] перестал действовать редирект

Непрочитанное сообщение dikens3 » 2010-03-04 18:53:14

local_parts - это КОМУ письмо.

http://www.lissyara.su/doc/exim/4.62/ge ... r_routers/

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

senders  	 routers‡  	 address list†  	 незадана

   Если эта опция установлена, роутер пропускается, если адрес отправителя сообщения не совпадает с чем-то в списке. Смотрите раздел 3.12, для получения порядка, в котором оцениваются предварительные условия.
   Существуют проблемы относительно проверки, когда работа роутеров зависит от отправителя. Когда exim проверяет адрес в установке “errors_to”, он устанавливает отправителя в нулевую (null) строку. Когда для проверки конфигурационного файла используется опция “-bt”, также необходимо использовать опцию “-f”, для установки соответствующего отправителя. Для входящей почты, отправитель не установлен, когда проверяется отправитель, но он доступен, когда проверяется любой получатель. Если включена команда SMTP VRFY, она должна использоваться после MAIL, если имеет значение адрес отправителя.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
atomic
рядовой
Сообщения: 18
Зарегистрирован: 2008-11-25 12:03:12
Откуда: город из стекла, стали и бетона..

Re: [Exim 4.71] перестал действовать редирект

Непрочитанное сообщение atomic » 2010-03-05 1:42:53

dikens3 писал(а):local_parts - это КОМУ письмо.
ну так да.
я и хочу чтобы редирект действовал только для человека с IP 192.168.xx.xx когда он отправляет письмо на ящик test@mydomain.ru. А дальше, естественно, с ящика test@mydomain.ru идет письмо по заданным в базе "редиректов" адресатам
А я романтик, мне не нужны билеты,
Я на собаках уеду на край света...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: [Exim 4.71] перестал действовать редирект

Непрочитанное сообщение dikens3 » 2010-03-05 10:53:36

Ну тут хз.

Вообще поясню, что редирект сработает для:

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

test@mydomain.ru
test@yandex.ru
test@rambler.ru
test@ЛЮБОЙ_ДОМЕН
Смотри переменные, может изменились или обнуляются в новой версии.
В полезных скриптах есть отладка, попробуй и лог скинь сюда. Должен же быть там ответ?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
atomic
рядовой
Сообщения: 18
Зарегистрирован: 2008-11-25 12:03:12
Откуда: город из стекла, стали и бетона..

Re: [Exim 4.71] перестал действовать редирект

Непрочитанное сообщение atomic » 2010-03-05 14:31:35

херь происходит из-за, скорее всего, роута от dr-web (у меня настроен антиспам dr-web)
почему то отладка не дает логов после того как передается управление его транспортнику. стоит сказать что транспортник dr-web'а возвращает проверенное письмо обратно exim'у по lmtp.

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

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Verifying xxxx@mydomain.ru
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Considering xxxx@mydomain.ru
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
routing xxxx@mydomain.ru
--------> drweb_router router <--------
local_part=xxxx domain=mydomain.ru
checking "condition"
calling drweb_router router
drweb_router router called for xxxx@mydomain.ru
  domain = mydomain.ru
set transport drweb_transport
queued for drweb_transport transport: local_part = xxxx
domain = mydomain.ru
  errors_to=NULL
  domain_data=NULL localpart_data=NULL
routed by drweb_router router
  envelope to: xxxx@mydomain.ru
  transport: drweb_transport
----------- end verify ------------
accept: condition test succeeded
SMTP>> 250 Accepted
250 Accepted
на другом почтовике (где нет антиспама dr-web) нормально в отладке все действия расписаны (включая все роуты) по поводу редиректа, показана вся выборка из mysql, показаны как раз действия моих условий (condition) и все ОК, как я уже и говорил.
А я романтик, мне не нужны билеты,
Я на собаках уеду на край света...

Аватара пользователя
atomic
рядовой
Сообщения: 18
Зарегистрирован: 2008-11-25 12:03:12
Откуда: город из стекла, стали и бетона..

Re: [Exim 4.71] перестал действовать редирект

Непрочитанное сообщение atomic » 2010-04-06 13:02:47

Путем верчения конфига (в том числе был вообще вырублен вышеупомянутый Dr.Web) было выявлено вот какая странная весчь.
Но для начала небольшой ввод в курс дела. Имеется в секции роутов 2 (два) роута для редиректа.
Второй зачем спросите вы? отвечаю: хочется чтобы вторым редиректом только пользовался человек с данным IP

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

system_aliases:
  driver  = redirect
  allow_fail
  allow_defer
  data = ${lookup mysql{SELECT goto FROM alias WHERE \
           address='${quote_mysql:$local_part@$domain}'}}

alluser:
  driver  = redirect
  condition = ${if match_ip{$sender_host_address}{192.168.66.666}}
  data = ${lookup mysql{SELECT goto FROM alias_alluser WHERE \
           address='${quote_mysql:$local_part@$domain}'}}
Вот важный кусок лога, после того, как я отправляю письмо на ящик, редирект которого будет браться из второго роута-редиректа.
Отправляю я письмецо залетное на ящик xxxx@mydomain.ru, который должен перенаправить письмо на yyyy@mydomain.ru

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

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Verifying xxxx@mydomain.ru
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Considering xxxx@mydomain.ru
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
routing xxxx@mydomain.ru
--------> dnslookup router <--------
local_part=xxxx domain=mydomain.ru
checking domains
search_open: mysql "NULL"
  cached open
search_find: file="NULL"
  key="SELECT domain FROM domain WHERE domain = 'mydomain.ru' " partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
  type=mysql key="SELECT domain FROM domain WHERE domain = 'mydomain.ru' "
cached data used for lookup of SELECT domain FROM domain WHERE domain = 'mydomain.ru'
lookup yielded: mydomain.ru
mydomain.ru in "mydomain.ru"? yes (matched "mydomain.ru")
mydomain.ru in "! +local_domains"? no (matched "! +local_domains")
dnslookup router skipped: domains mismatch
--------> system_aliases router <--------
local_part=xxxx domain=mydomain.ru
calling system_aliases router
rda_interpret (string): ${lookup mysql{SELECT goto FROM alias WHERE address='${quote_mysql:$local_part@$domain}'}}
search_open: mysql "NULL"
  cached open
search_find: file="NULL"
  key="SELECT goto FROM alias WHERE address='xxxx@mydomain.ru'" partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
  type=mysql key="SELECT goto FROM alias WHERE address='xxxx@mydomain.ru'"
database lookup required for SELECT goto FROM alias WHERE address='xxxx@mydomain.ru'
MySQL query: SELECT goto FROM alias WHERE address='xxxx@mydomain.ru'
MYSQL using cached connection for localhost/mail/root
MYSQL: no data found
lookup failed
expanded:
file is not a filter file
parse_forward_list:
system_aliases router declined for xxxx@mydomain.ru
--------> alluser router <--------
local_part=xxxx domain=mydomain.ru
checking "condition"
192.168.24.209 in "192.168.24.209"? yes (matched "192.168.24.209")
calling alluser router
rda_interpret (string): ${lookup mysql{SELECT goto FROM alias_alluser WHERE address='${quote_mysql:$local_part@$domain}'}}
search_open: mysql "NULL"
  cached open
search_find: file="NULL"
  key="SELECT goto FROM alias_alluser WHERE address='xxxx@mydomain.ru'" partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
  type=mysql key="SELECT goto FROM alias_alluser WHERE address='xxxx@mydomain.ru'"
database lookup required for SELECT goto FROM alias_alluser WHERE address='xxxx@mydomain.ru'
MySQL query: SELECT goto FROM alias_alluser WHERE address='xxxx@mydomain.ru'
MYSQL using cached connection for localhost/mail/root
lookup yielded: yyyy@mydomain.ru
expanded:yyyy@mydomain.ru
file is not a filter file
parse_forward_list: yyyy@mydomain.ru
extract item:yyyy@mydomain.ru
alluser router generated yyyy@mydomain.ru
  errors_to=NULL transport=NULL
  uid=unset gid=unset home=NULL
routed by alluser router
  envelope to: xxxx@mydomain.ru
  transport: <none>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Considering yyyy@mydomain.ru
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
routing yyyy@mydomain.ru
--------> dnslookup router <--------
local_part=yyyy domain=mydomain.ru
checking domains
search_open: mysql "NULL"
  cached open
search_find: file="NULL"
  key="SELECT domain FROM domain WHERE domain = 'mydomain.ru' " partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
  type=mysql key="SELECT domain FROM domain WHERE domain = 'mydomain.ru' "
cached data used for lookup of SELECT domain FROM domain WHERE domain = 'mydomain.ru'
lookup yielded: mydomain.ru
mydomain.ru in "mydomain.ru"? yes (matched "mydomain.ru")
mydomain.ru in "! +local_domains"? no (matched "! +local_domains")
dnslookup router skipped: domains mismatch
--------> system_aliases router <--------
local_part=yyyy domain=mydomain.ru
calling system_aliases router
rda_interpret (string): ${lookup mysql{SELECT goto FROM alias WHERE address='${quote_mysql:$local_part@$domain}'}}
search_open: mysql "NULL"
  cached open
search_find: file="NULL"
  key="SELECT goto FROM alias WHERE address='yyyy@mydomain.ru'" partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
  type=mysql key="SELECT goto FROM alias WHERE address='yyyy@mydomain.ru'"
database lookup required for SELECT goto FROM alias WHERE address='yyyy@mydomain.ru'
MySQL query: SELECT goto FROM alias WHERE address='yyyy@mydomain.ru'
MYSQL using cached connection for localhost/mail/root
MYSQL: no data found
lookup failed
expanded:
file is not a filter file
parse_forward_list:
system_aliases router declined for yyyy@mydomain.ru
--------> alluser router <--------
local_part=yyyy domain=mydomain.ru
checking "condition"
192.168.24.209 in "192.168.24.209"? yes (matched "192.168.24.209")
calling alluser router
rda_interpret (string): ${lookup mysql{SELECT goto FROM alias_alluser WHERE address='${quote_mysql:$local_part@$domain}'}}
search_open: mysql "NULL"
  cached open
search_find: file="NULL"
  key="SELECT goto FROM alias_alluser WHERE address='yyyy@mydomain.ru'" partial=-1 affix=NULL starflags=0
LRU list:
internal_search_find: file="NULL"
  type=mysql key="SELECT goto FROM alias_alluser WHERE address='yyyy@mydomain.ru'"
database lookup required for SELECT goto FROM alias_alluser WHERE address='yyyy@mydomain.ru'
MySQL query: SELECT goto FROM alias_alluser WHERE address='yyyy@mydomain.ru'
MYSQL using cached connection for localhost/mail/root
MYSQL: no data found
lookup failed
expanded:
file is not a filter file
parse_forward_list:
alluser router declined for yyyy@mydomain.ru
..................
Неизвестно почему после первого прохода по роутам, из которого видно что все ОК, IP проверил, куда переправлять письмо ( на yyyy@mydomain.ru) нашел, он ВНЕЗАПНО идет на второй круг по роутам. но уже для адреса на который я должен получить письмо после перенаправлени ( yyyy@mydomain.ru ) и конечно же в этом втором проходе в роуте alluser router он не находит его в базе ибо его там в столбце address (а есть только xxxx@mydomain.ru) нет.

PS: что странно, то для первого редирект-роута (system_aliases router) никаких "вторых проходов" нету и в помине и все ОК.
Честные, помогите разобраться где тут косяк. ибо своими силами я пока ен смог отыскать чо да как.
PPS: Повторюсь, что точно такая же схема, но для Exim 4.69 работает на УРА. Но вроде как они ничего такого не меняли в этой версии...
А я романтик, мне не нужны билеты,
Я на собаках уеду на край света...

neyro
сержант
Сообщения: 187
Зарегистрирован: 2008-03-07 20:24:25
Контактная информация:

Re: [Exim 4.71] перестал действовать редирект

Непрочитанное сообщение neyro » 2010-04-09 21:22:55

Роуты обрабатываются для каждого адреса отдельновроде бы (150 адресов, 150 раз оно письмо по роутерам прогонит). Кроме случав когда указаны некие опции.