exim_4.67. Не могу сделать силами exim, делаю силами perl

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
cyrus_user
сержант
Сообщения: 181
Зарегистрирован: 2007-04-24 12:16:36

exim_4.67. Не могу сделать силами exim, делаю силами perl

Непрочитанное сообщение cyrus_user » 2007-04-25 9:29:51

Привет снова.
Я использую встроенный обработчик перла для следующих проверок:
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";}
в свете изменений в 4.67
PH/03 Added additional dnslists conditions == and =& which are different from
= and & when the dns lookup returns more than one IP address.
всё равно не могу придумать конструкцию на встроенном языке exim-a для аналогичной проверки, поскольку на perl это не true-way :)

Если есть мысли, милости прошу совета

2. Проверяю квоту в cyrus

Код: Выделить всё

quota_router:                                                                                                           
no_verify                                                                                                           
driver = redirect                                                                                                   
data = "${if eqi {${perl{quotacheck}}} {yes} {:fail:Mailbox Is Full. Overquota.} {$local_part@$domain}}"            
allow_fail
ну и интересующий кусок проверяет заполненность ящика на 95%:

Код: Выделить всё

my @quota = $imap->get_quota($box);                                                                                     
    if($quota[2]) {                                                                                                     
    if($quota[1]*100/$quota[2]>=95) { return "yes";}                                                                    
    else {return "fail";}} 
опять же perl для больших нагрузок это не наш выбор, как бы это можно заменить на встроенные в exim механизмы. У cyrus есть notify, возможно ли как-то его задействовать для проверки квот..

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2520 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35017
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: exim_4.67. Не могу сделать силами exim, делаю силами perl

Непрочитанное сообщение Alex Keda » 2008-11-11 10:16:22

встроенные перл - он запускается один раз - при запуске экзима.
Дальше лишь вызывается функция.
Это совсем не много ресурсов.
Убей их всех! Бог потом рассортирует...

Alex_hha
лейтенант
Сообщения: 755
Зарегистрирован: 2005-11-06 18:25:26
Контактная информация:

Re: exim_4.67. Не могу сделать силами exim, делаю силами perl

Непрочитанное сообщение Alex_hha » 2008-11-12 20:38:19

Может я чо то не понимаю, а чо нельзя при попадании в первый список присвоить acl_m1 = 1, при проверке по второму списку проверять значение этой переменной и если оно равно 1, то делать реджект?

cyrus_user
сержант
Сообщения: 181
Зарегистрирован: 2007-04-24 12:16:36

Re: exim_4.67. Не могу сделать силами exim, делаю силами perl

Непрочитанное сообщение cyrus_user » 2008-11-14 19:15:42

ну вы быстрые :)

p.s. см. дату вопроса. спасибо, но уже давно всё решено.
В НЛО не верю, но верю, что где-то до сих пор вымирают динозавры, bsd, птеродактили, мамонты.