vexim: missing } at end of string inside or

При отправке почты получаем в логах

Temporary internal error

При дебаге через

# exim -bv -v -d+all -bh 10.1.1.1 user@domain.com >/tmp/test1 2>&1

в /tmp/test1 видим, что проблема с роутером virtual_domains:

message: virtual_domains router failed to expand "${if
or { { <{$spam_score_int}{1} } { <{$spam_score_int}{${lookup
mysql{select users.sa_tag * 10 from users,domains where localpart =
'${quote_mysql:$local_part}' and domain = '${quote_mysql:$domain}' and
users.on_spamassassin = 1 and
users.domain_id=domains.domain_id}{$value}fail}} } { eq {0}{${lookup
mysql{select users.sa_tag * 10 from users,domains where localpart =
'${quote_mysql:$local_part}' and domain = '${quote_mysql:$domain}' and
users.on_spamassassin = 0 and
users.domain_id=domains.domain_id}{$value}fail}}} }
{X-Spam-Score:X-Spam-Report} }": missing } at end of string inside
"or{...}" condition

При этом, на старых версиях exim’a всё работало без проблем. Проблема явно не в скобках. При гуглении, натолкнулся на то, что до версии 4.82 (у меня была 4.76, а стала 4.84.1) всё работало нормально, а потом — сломалось. Для решения проблемы попробовал использовать патч из рассылки, но он мне не помог. Зато помогло решение из той же рассылки. Приводим remove_headers к такому виду:

headers_remove = ${if or { { <{$spam_score_int}{1} } { <{$spam_score_int} {20}}{ eq {0}{10}} \.
} {X-Spam-Score::X-Spam-Report} }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *