Здравствуйте.
pkg info | grep exim
exim-4.85_1 High performance MTA for Unix systems on
the Internet
Есть такие правила в acl_check_rcpt:
warn condition = ${if match{$sender_host_name}\
{\N^здесь регулярное выражение для нехороших
хостов$\N}\
{yes}{no}}
log_message = Access from dsl/dialup/cable relays
set acl_c_bouncemessage = $acl_c_bouncemessage\nAccess from
dsl/dialup/cable relays
set acl_c_spamscore = ${eval:$acl_c_spamscore+20}
warn condition = ${if match{$sender_host_name}{}{yes}{no}}
condition = ${if match{$acl_c_reverse_zone}\
{\N^здесь регулярное выражение для нехороших
хостов$\N}\
{yes}{no}}
log_message = Access from dsl/dialup/cable relays
set acl_c_bouncemessage = $acl_c_bouncemessage\nAccess from
dsl/dialup/cable relays
set acl_c_spamscore = ${eval:$acl_c_spamscore+20}
Из шпаргалки:
=============================================================================
Exim выполняет 2 проверки: имя хоста по ip, а затем проверяет ip по
найденному имени хоста.
В случае, если он не может определить ip по найденному имени хоста, то
$sender_host_name
не определено.
Другими словами.
Если нет записи в прямой зоне, или она не соответствует записи в реверной
зоне, то значение
$sender_host_name не определено, что явно указано в документации.
Сделано это для того, чтобы $sender_host_name невозможно было
сфальсифицировать изменив лишь
запись в реверсной зоне.
=============================================================================
Имеем хост 94.247.31.252, резолвится он одинаково в обеих зонах:
host 94.247.31.252
252.31.247.94.in-addr.arpa domain name pointer vps2671-cloud.comalis.net.
host vps2671-cloud.comalis.net
vps2671-cloud.comalis.net has address 94.247.31.252
Запускаем для него exim -bhc 94.247.31.252, нужный нам фрагмент:
>>> processing "warn"
>>> check condition = ${if match{$sender_host_name}{\N^здесь регулярное
выражение для нехороших хостов$\N}{yes}{no}}
>>> = yes
>>> l_message: Access from dsl/dialup/cable relays
>>> check set acl_c_bouncemessage = $acl_c_bouncemessage\nAccess from
dsl/dialup/cable relays
>>> =
>>> Access from dsl/dialup/cable relays
>>> check set acl_c_spamscore = ${eval:$acl_c_spamscore+20}
>>> = 20
>>> warn: condition test succeeded in ACL "acl_check_rcpt"
LOG: H=vps2671-cloud.comalis.net [94.247.31.252] Warning: Access from
dsl/dialup/cable relays
>>> processing "warn"
>>> check condition = ${if match{$sender_host_name}{}{yes}{no}}
>>> = yes
>>> check condition = ${if match{$acl_c_reverse_zone}{\N^здесь регулярное
выражение для нехороших хостов$\N}{yes}{no}}
>>> = yes
>>> l_message: Access from dsl/dialup/cable relays
>>> check set acl_c_bouncemessage = $acl_c_bouncemessage\nAccess from
dsl/dialup/cable relays
>>> =
>>> Access from dsl/dialup/cable relays
>>> Access from dsl/dialup/cable relays
>>> check set acl_c_spamscore = ${eval:$acl_c_spamscore+20}
>>> = 40
>>> warn: condition test succeeded in ACL "acl_check_rcpt"
Очевидно, что $sender_host_name не пустое (vps2671-cloud.comalis.net) и
попадает в первое правило (первый warn). Но как тогда понимать, что оно
попадает в во второе правило (второй warn), где есть условие:
${if match{$sender_host_name}{}{yes}{no}}
Ткните пальцем, где меня глючит или, всё таки, это Exim ведёт себя
неадекватно.
P.S. Год назад такая логика работала как и задумано, но с того времени
версия Exim не раз обновлялась.
--
WBR, Alexander Sheiko
_______________________________________________
Exim-users mailing list
[email protected]
http://mailground.net/mailman/listinfo/exim-users