Установлен МТА exim, прикручены всякие вкусности типа дспама и т.п. и все замечательно работало.....НО
Стала задача: сделать так, чтоб внесенные в белый список отправители обходили проверку DSpam. Не пойму почему некоторые корреспонденты со 100% вероятностью попадают в спамеры, но то детали.
Мне показалось логичным нарисовать свой роутер, чтобы если отправитель из белого списка - обвести его мимо проверки ДСпамом.
написалось такое:
Код: Выделить всё
whitelist_checker:
driver = accept
transport = mysql_delivery
condition = ${if eq{} {${lookup mysql{SELECT address FROM whitelist WHERE address='${domain}'}}}{}{yes}}
сам транспорт:
Код: Выделить всё
mysql_delivery:
driver = appendfile
maildir_format
create_directory
maildir_tag = ,S=$message_size
directory = /var/mail/$domain/$local_part
return_path_add
delivery_date_add
envelope_to_add
group = mail
mode = 0660
no_mode_fail_narrower
headers_remove = "Lines"
headers_add = "Lines: $body_linecount\n"
check_string = ""
directory_mode = 700
message_prefix = ""
message_suffix = ""
quota = ${lookup mysql{SELECT quota FROM users \
WHERE id='${local_part}' AND mbox_host='${domain}'}{${value}M}}
quota_size_regex = S=(\d+)$
quota_warn_threshold = 75%
получаю вот такое в логе:
Код: Выделить всё
03:16:53 70619 --------> whitelist_checker router <--------
03:16:53 70619 local_part=karpova domain=111.spb.ru
03:16:53 70619 checking "condition"
03:16:53 70619 expanding:
03:16:53 70619 result:
03:16:53 70619 expanding: SELECT address FROM whitelist WHERE address='${domain}'
03:16:53 70619 result: SELECT address FROM whitelist WHERE address='111.spb.ru'
03:16:53 70619 search_open: mysql "NULL"
03:16:53 70619 cached open
03:16:53 70619 search_find: file="NULL"
03:16:53 70619 key="SELECT address FROM whitelist WHERE address='111.spb.ru'" partial=-1 affix=NULL starfla
gs=0
03:16:53 70619 LRU list:
03:16:53 70619 internal_search_find: file="NULL"
03:16:53 70619 type=mysql key="SELECT address FROM whitelist WHERE address='111.spb.ru'"
03:16:53 70619 database lookup required for SELECT address FROM whitelist WHERE address='111.spb.ru'
03:16:53 70619 MySQL query: SELECT address FROM whitelist WHERE address='111.spb.ru'
03:16:53 70619 MYSQL using cached connection for localhost:(/var/www/tmp/mysql.sock)/exim/exim
03:16:53 70619 lookup yielded: 111.spb.ru
03:16:53 70619 expanding: ${lookup mysql{SELECT address FROM whitelist WHERE address='${domain}'}}
03:16:53 70619 result: 111.spb.ru
03:16:53 70619 condition: eq{} {${lookup mysql{SELECT address FROM whitelist WHERE address='${domain}'}}}
03:16:53 70619 result: false
03:16:53 70619 expanding:
03:16:53 70619 result:
03:16:53 70619 skipping: result is not used
03:16:53 70619 expanding: yes
03:16:53 70619 result: yes
03:16:53 70619 expanding: ${if eq{} {${lookup mysql{SELECT address FROM whitelist WHERE address='${domain}'}}
}{}{yes}}
03:16:53 70619 result: yes
03:16:53 70619 calling whitelist_checker router
03:16:53 70619 whitelist_checker router called for karpova@111.spb.ru
03:16:53 70619 domain = 111.spb.ru
03:16:53 70619 set transport mysql_delivery
03:16:53 70619 queued for mysql_delivery transport: local_part = karpova
03:16:53 70619 domain = 111.spb.ru
03:16:53 70619 errors_to=NULL
03:16:53 70619 domain_data=NULL localpart_data=NULL
03:16:53 70619 routed by whitelist_checker router
03:16:53 70619 envelope to: karpova@111.spb.ru
03:16:53 70619 transport: mysql_delivery
03:16:53 70619 Cannot do callout: neither router nor transport provided a host list
03:16:53 70619 ----------- end verify ------------

Может будут какие-то светлые идеи, а то что-то застрял

заранее спасибо.