URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 57600
[ Назад ]

Исходное сообщение
"проблема с sender verify exim 4.51"

Отправлено amim , 22-Июн-05 14:19 
Проблема заключается в следующем:
обновился с exim 4.30-2 до exim 4.51-0, клиентские попытки отправить почту на сервер режектятся..
2005-05-19 16:05:06 H=domain.ru (192.168.1.120) [192.168.1.120] sender verify fail for <user1 на user.ru>: Unrouteable address
2005-05-19 16:05:06 H=domain.ru (192.168.1.120) [192.168.1.120] F=<user1 на user.ru> rejected RCPT <user2 на user.ru>: Sender verify failed

пускаю exim -bd -d, наблюдаю:

  9267 --------> mysqluser router <--------
  9267 local_part=user1 domain=user.ru
  9267 checking "condition"
  9267 search_open: mysql "NULL"
  9267   cached open
  9267 search_find: file="NULL"
  9267   key="SELECT home FROM users WHERE id='user1' AND mbox_host='user.ru' AND active='Y'" partial=-1 affix=NULL starflags=0
  9267 LRU list:
  9267 internal_search_find: file="NULL"
  9267   type=mysql key="SELECT home FROM users WHERE id='user1' AND mbox_host='user.ru' AND active='Y'"
  9267 database lookup required for SELECT home FROM users WHERE id='user1' AND mbox_host='user.ru' AND active='Y'
  9267 MYSQL query: SELECT home FROM users WHERE id='user1' AND mbox_host='user.ru' AND active='Y'
  9267 MYSQL using cached connection for host/base/user
  9267 lookup yielded: /var/mail/virtual/user.ru/user1
  9267 mysqluser router skipped: condition failure
  9267 no more routers
  9267 ----------- end verify ------------
  9267 require: condition test failed
  9267 LOG: MAIN REJECT

при этом с тем же конфигом exim 4.30-2 дает другой результат:

9246 --------> mysqluser router <--------
9246 local_part=user1 domain=user.ru
9246 checking "condition"
9246 search_open: mysql "NULL"
9246   cached open
9246 search_find: file="NULL"
9246   key="SELECT home FROM users WHERE id='user1' AND mbox_host='user.ru' AND active='Y'" partial=-1 affix=NULL starflags=0
9246 LRU list:
9246 internal_search_find: file="NULL"
9246   type=mysql key="SELECT home FROM users WHERE id='user1' AND mbox_host='user.ru' AND active='Y'"
9246 database lookup required for SELECT home FROM users WHERE id='user1' AND mbx_host='user.ru' AND active='Y'
9246 MYSQL query: SELECT home FROM users WHERE id='user1' AND mbox_host='user.ru' AND active='Y'
9246 MYSQL using cached connection for host/base/user
9246 lookup yielded: /var/mail/virtual/user.ru/user1
9246 calling mysqluser router
9246 mysqluser router called for user1 на user.ru
9246   domain = user.ru
9246 set transport mysql_delivery
9246 queued for mysql_delivery transport: local_part = user1
9246 domain = user.ru
9246   errors_to=NULL
9246   domain_data=NULL localpart_data=NULL
9246 routed by mysqluser router
9246   envelope to: user1 на user.ru
9246   transport: mysql_delivery
9246 ----------- end verify ------------
9246 sender user1 на user.ru verified ok
9246 require: condition test succeeded

роутер выглядит следующим образом:

mysqluser:
   driver = accept
   condition = ${if and {{!eq {}{${lookup mysql{SELECT home FROM users \
                         WHERE id='${local_part}' AND mbox_host='${domain}' \
                         AND active='Y'}}}} \
                 {match {$sender_address}{$authenticated_id}} \
                 }{yes}{no}}
   transport = mysql_delivery

оба собирал для mail:mail(4.30 из исходников, 4.51 из портов), при получении писем exim'ом 4.51 от внешнего источника - все в порядке.. вопрос извечен: кто виноват и что делать? возможно что то в синтаксисе команд 4.51 поменялось, или разрешения какие поменять, но я видимо плохо искал - ничего не нашел.. сейчас откатил обратно, подозреваю что дело может быть в строчке роутера {match {$sender_address}{$authenticated_id}}}{yes}{no}}, хотя опять же с 4.30 все работает нормально..


Содержание

Сообщения в этом обсуждении
"проблема с sender verify exim 4.51"
Отправлено amim , 28-Июн-05 14:07 
как я и подозревал, мешала конструкция {match {$sender_address}{$authenticated_id}}}{yes}{no}}, роутер работает нормально в следующем виде
mysqluser:
  driver = accept
condition = ${if !eq {}{${lookup mysql{SELECT home FROM users \
                      WHERE id='${local_part}' AND mbox_host='${domain}' \
                      AND active='Y'}}}{yes}{no}}
transport = mysql_delivery
однако теперь опять возникает проблема проверки соответствия идентификатора пользователя и адреса отправителя(некоторое время назад я ее решил той конструкцией, которую теперь пришлось удалить)..
временно прописал следующим образом:

accept domains       = +local_domains
     authenticated = *
     endpass
     verify        = recipient
     condition     = ${if and {{match {$sender_address_domain} \
     {my\\.domain\\.ru|another\\.domain\\.ru}}          \
     {eq {$sender_address}{$authenticated_id}}}     \
     {yes}{no}}

если у кого нибудь есть идеи более высокого порядка - милости прошу..