exim 4.8
Есть такое правило:deny hosts =!+relay_from_hosts
message = access denied
log_message = "empty TO or CC"
condition = ${if match { ${lc:$rheader_To:} or ${lc:$rheader_CC:}}{$acl_c_lp}{no}{yes}}так вот оно срабатывает в случае если приходит пересылаемое письмо, т.е. пользователь где то на стороннем ресурсе настроил авто пересылку входящей туда почты на местный адрес, а здесь такие письма отсеиваются по этому правилу.
отключил правило, написал, письмо прошло, смотрю в тело, вижу что поле 'TO' присутствует
update:
заметил что если изменить кондишн на вот такой вариант:condition = ${if match { ${lc:$rheader_To:} or ${lc:$rheader_CC:}}{}{no}{yes}}
то все отрабатывает верно, сейчас пытаюсь вспомнить для чего я туда вставил $acl_c_lp, эта переменная определяется в самом начале секции acl_check_rcpt:
warn set acl_c_lp = $local_part@$domain
> condition = ${if match { ${lc:$rheader_To:} or ${lc:$rheader_CC:}}{$acl_c_lp}{no}{yes}}http://www.exim.org/exim-html-current/doc/html/spec_html/ch-...
or {{<cond1>}{<cond2>}...}
Т.е. должно быть:
condition = ${if or{ {match{${lc:$rheader_To:}{$acl_c_lp}}} {match{${lc:$rheader_CC:}{$acl_c_lp}}} } {no}{yes}}
P.S. В скобках мог и запутаться…
>> condition = ${if match { ${lc:$rheader_To:} or ${lc:$rheader_CC:}}{$acl_c_lp}{no}{yes}}
> http://www.exim.org/exim-html-current/doc/html/spec_html/ch-...
> or {{<cond1>}{<cond2>}...}
> Т.е. должно быть:
> condition = ${if or{ {match{${lc:$rheader_To:}{$acl_c_lp}}} {match{${lc:$rheader_CC:}{$acl_c_lp}}}
> } {no}{yes}}
> P.S. В скобках мог и запутаться…temporarily rejected after DATA: failed to expand ACL string "${if or {{match{${lc:$rheader_To:}{$acl_c_lp}}}{match{${lc:$rheader_CC:}{$acl_c_lp}}}}{no}{yes}}": missing 2nd string in {} after "match" inside "or{...}" condition
p.s. в скобках все верно