Я использую встроенный обработчик перла для следующих проверок:
1. Проверяю наличие сразу в 2-х rbl базах. Наличие в одной слишком частый случай для нужных отправителей.
Код: Выделить всё
deny hosts = +rbl_hosts
condition = ${if eqi {${perl{rblcheck}}} {yes}}
message = Blocked. Host From RBLs Databases
log_message = Host From RBL $sender_host_address
Код: Выделить всё
my @rbl=("blackholes.mail-abuse.org",
"bl.spamcop.net",
"cbl.abuseat.org",
"dnsbl.njabl.org",
"dnsbl.sorbs.net",
"sbl-xbl.spamhaus.org",
"list.dsbl.org",
"dnsbl.void.ru");
my $ip=join('.',reverse(split/\./,$host));
foreach(@rbl)
{my $string = "$ip.$_"; $cnt++ if h2ip($string) ne 0; if($cnt == 2){return "yes";}
}return "fail";}
всё равно не могу придумать конструкцию на встроенном языке exim-a для аналогичной проверки, поскольку на perl это не true-wayPH/03 Added additional dnslists conditions == and =& which are different from
= and & when the dns lookup returns more than one IP address.
Если есть мысли, милости прошу совета
2. Проверяю квоту в cyrus
Код: Выделить всё
quota_router:
no_verify
driver = redirect
data = "${if eqi {${perl{quotacheck}}} {yes} {:fail:Mailbox Is Full. Overquota.} {$local_part@$domain}}"
allow_fail
Код: Выделить всё
my @quota = $imap->get_quota($box);
if($quota[2]) {
if($quota[1]*100/$quota[2]>=95) { return "yes";}
else {return "fail";}}