ifelse(SECTION, `ACLS_ADDITIONAL', `dnl acl_greylist_relays: # acl_c2 - время жизни записи в минутах # acl_m_reason - причина занесения в серый список warn set acl_m_ttl = ifelse(confGREYLIST_BACKEND, `DBM', `dnl set acl_m2 = ${lookup{$sender_host_address}dbm{confGREYLIST_DBM_RELAYS}} ') dnl ifelse(confGREYLIST_BACKEND, `DBM', `') ifelse(confGREYLIST_BACKEND, `SQLITE', `dnl set acl_m2 = ${lookup sqlite{confGREYLIST_SQLITE_RELAYS confGREYLIST_SQLITE_RELAYS_SELECT}} ') dnl ifelse(confGREYLIST_BACKEND, `SQLITE', `') ifelse(confGREYLIST_BACKEND, `MYSQL', `dnl set acl_m2 = ${lookup mysql{confGREYLIST_MYSQL_RELAYS_SELECT}} ') dnl ifelse(confGREYLIST_BACKEND, `MYSQL', `') # если хост грейлистится навсегда warn condition = ${if or{\ {eq{$acl_c2}{0}}\ {eq{$acl_c2}{}}\ }{yes}{no}} set acl_m_ttl = 0 # запись в кеше не найдена warn condition = ${if eq{$acl_m_ttl}{}{yes}{no}} condition = ${if eq{$acl_m2}{}{yes}{no}} set acl_m_ttl = ${eval:$tod_epoch+$acl_c2*60} # если хост уже загрейлистин навсегде warn condition = ${if eq{$acl_m_ttl}{}{yes}{no}} condition = ${if eq{${extract{expire_time}{$acl_m2}}}{0}{yes}{no}} set acl_m_ttl = 0 # время жизни существующей записи истекло warn condition = ${if eq{$acl_m_ttl}{}{yes}{no}} condition = ${if <{${extract{expire_time}{$acl_m2}}}{$tod_epoch}{yes}{no}} set acl_m_ttl = ${eval:$tod_epoch+$acl_c2*60} # время жизни существующей записи не истекло, выбираем большее время жизни записи warn condition = ${if eq{$acl_m_ttl}{}{yes}{no}} set acl_m_ttl = ${if >\ {${extract{expire_time}{$acl_m2}}}\ {${eval:$tod_epoch+$acl_c2*60}}\ {${extract{expire_time}{$acl_m2}}}\ {${eval:$tod_epoch+$acl_c2*60}}\ } # сохраняем запись в кеше ifelse(confGREYLIST_BACKEND, `DBM', `dnl warn condition = ${if eq{\ ${perl{dbm_save}{confGREYLIST_DBM_RELAYS}\ {$sender_host_address}\ {\ create_time=$tod_epoch \ expire_time=$acl_m_ttl \ reason="$acl_m_reason"\ }}\ }{}{yes}{yes}} ') dnl ifelse(confGREYLIST_BACKEND, `DBM', `') ifelse(confGREYLIST_BACKEND, `SQLITE', `dnl warn condition = ${if eq{$acl_m2}{}{\ ${lookup sqlite{confGREYLIST_SQLITE_RELAYS confGREYLIST_SQLITE_RELAYS_INSERT}}\ }{\ ${lookup sqlite{confGREYLIST_SQLITE_RELAYS confGREYLIST_SQLITE_RELAYS_UPDATE}}\ }} ') dnl ifelse(confGREYLIST_BACKEND, `SQLITE', `') ifelse(confGREYLIST_BACKEND, `MYSQL', `dnl warn condition = ${if eq{$acl_m2}{}{\ ${lookup mysql{confGREYLIST_MYSQL_RELAYS_INSERT}}\ }{\ ${lookup mysql{confGREYLIST_MYSQL_RELAYS_UPDATE}}\ }} ') dnl ifelse(confGREYLIST_BACKEND, `MYSQL', `') accept ') dnl ifelse(SECTION, `ACLS_ADDITIONAL', `') ifelse(SECTION, `ACL_CHECK_RCPT', `dnl ifelse(confGREYLIST_BACKEND, `DBM', `dnl warn set acl_c2 = ${lookup{$sender_host_address}dbm{confGREYLIST_DBM_RELAYS}{$value}{}} ') dnl ifelse(confGREYLIST_BACKEND, `DBM', `') ifelse(confGREYLIST_BACKEND, `SQLITE', `dnl warn set acl_c2 = ${lookup sqlite{confGREYLIST_SQLITE_RELAYS confGREYLIST_SQLITE_RELAYS_SELECT}} ') dnl ifelse(confGREYLIST_BACKEND, `SQLITE', `') ifelse(confGREYLIST_BACKEND, `MYSQL', `dnl warn set acl_c2 = ${lookup mysql{confGREYLIST_MYSQL_RELAYS_SELECT}} ') dnl ifelse(confGREYLIST_BACKEND, `MYSQL', `') condition = ${if eq{$acl_c2}{}{no}{yes}} condition = ${if or{\ {eq{${extract{expire_time}{$acl_c2}}}{0}}\ {>{${extract{expire_time}{$acl_c2}}}{$tod_epoch}}\ }{yes}{no}} set acl_m_optional_greylist = scores=${eval:${extract{scores}{$acl_m_optional_greylist}}+confGREYLIST_BLOCKED_OPTIONAL} \ log_message="${extract{log_message}{$acl_m_optional_greylist}} ${extract{reason}{$acl_c2}};" set acl_m15 = ${acl_m15}\t\ greylist scores=confGREYLIST_BLOCKED_OPTIONAL\t\ ${extract{reason}{$acl_c2}}\n ') dnl ifelse(SECTION, `ACL_CHECK_RCPT', `')