dnl dnl проверка праметра SIZE команды MAIL FROM при использовании клиентом протокола ESMTP dnl NO - не проверять резолвинг домена верхнего уровня команды HELO dnl WARN - вывод в лог файл предупреждения dnl PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl define(`confCHECK_ESMTP_SIZE', `NO')dnl dnl dnl исключения из проверки праметра SIZE команды MAIL FROM при использовании клиентом протокола ESMTP dnl RELAY_FROM - из проверки исключаются исходящие письма dnl AUTH - из проверки исключаются письма от аутентифицированных отправителей dnl FROM_NULL_SENDER - из проверки исключаются письма от пустых отправителей dnl FROM_POSTMASTER - из проверки исключаются письма от пустых postmaster'ов dnl define(`confCHECK_ESMTP_SIZE_SKIP', `RELAY_FROM AUTH FROM_NULL_SENDER FROM_POSTMASTER')dnl dnl warn set acl_m1 = set acl_m3 = condition = ${if eq{$received_protocol}{esmtp}{yes}{no}} condition = ${if eq{$message_size}{-1}{yes}{no}} condition = ${if eq{$sender_address}{}{no}{yes}} ifelse_strstr(confCONTENT_SCANNING_QUARANTINE, `PERSONAL',`dnl set acl_m1 = NORMALIZE_ACTION_PERSONAL_QUARANTINE(confCHECK_ESMTP_SIZE) ',`dnl set acl_m1 = NORMALIZE_ACTION(confCHECK_ESMTP_SIZE) ')dnl set acl_m1 = ${sg{$acl_m1 }{\N\b([^=\s\d]+)(\s)\N}{\$1=00\$2}} # message = $acl_m2 # log_message = $acl_m0 set acl_m2 = ESMTP used and parameter SIZE not found in MAIL FROM command set acl_m0 = ESMTP used and parameter SIZE not found in MAIL FROM command ifelse_strstr(confCHECK_ESMTP_SIZE_SKIP, `RELAY_FROM', `dnl warn condition = ${if eq{$acl_m1}{}{no}{yes}} hosts = +relay_from_hosts set acl_m3 = skip condition = ${if eq{${extract{warn}{$acl_m1}}}{}{no}{yes}} add_header = X-Warn-ESMTP-SIZE: ${acl_m2}: skip for relay from host log_message = ${acl_m0}: skip for relay from host ') dnl ifelse_strstr(confCHECK_ESMTP_SIZE_SKIP, `RELAY_FROM', `') ifelse_strstr(confCHECK_ESMTP_SIZE_SKIP, `AUTH', `dnl warn condition = ${if eq{$acl_m1}{}{no}{yes}} authenticated = * set acl_m3 = skip condition = ${if eq{${extract{warn}{$acl_m1}}}{}{no}{yes}} add_header = X-Warn-ESMTP-SIZE: ${acl_m2}: skip for authenticated sender log_message = ${acl_m0}: skip for relay from authenticated sender ') dnl ifelse_strstr(confCHECK_ESMTP_SIZE_SKIP, `AUTH', `') ifelse_strstr(confCHECK_ESMTP_SIZE_SKIP, `FROM_NULL_SENDER', `dnl warn condition = ${if eq{$acl_m1}{}{no}{yes}} senders = : set acl_m3 = skip condition = ${if eq{${extract{warn}{$acl_m1}}}{}{no}{yes}} add_header = X-Warn-ESMTP-SIZE: ${acl_m2}: skip for null sender log_message = ${acl_m0}: skip for relay from null sender ') dnl ifelse_strstr(confCHECK_ESMTP_SIZE_SKIP, `FROM_NULL_SENDER', `') ifelse_strstr(confCHECK_ESMTP_SIZE_SKIP, `FROM_NULL_POSTMASTER', `dnl warn condition = ${if eq{$acl_m1}{}{no}{yes}} condition = ${if eq{$sender_address_local_part}{postmaster}{yes}{no}} set acl_m3 = skip condition = ${if eq{${extract{warn}{$acl_m1}}}{}{no}{yes}} add_header = X-Warn-ESMTP-SIZE: ${acl_m2}: skip for postmaster log_message = ${acl_m0}: skip for relay from postmaster ') dnl ifelse_strstr(confCHECK_ESMTP_SIZE_SKIP, `FROM_POSTMASTER', `') warn condition = ${if eq{$acl_m1}{}{no}{yes}} condition = ${if eq{$acl_m3}{skip}{yes}{no}} set acl_m1 = warn condition = ${if match{$acl_m1}{warn}{yes}{no}} add_header = X-Warn-ESMTP-SIZE: ${acl_m2} log_message = $acl_m0${if eq{${extract{pause}{$acl_m1}}}{}{}{: message delayed for ${extract{pause}{$acl_m1}}s}} warn condition = ${if eq{${extract{pause}{$acl_m1}}}{}{no}{yes}} delay = ${extract{pause}{$acl_m1}}s set acl_m_spam_action = ${acl_m_spam_action}\t\ delay=${extract{pause}{$acl_m1}}s\t\t\ $acl_m0\n ifelse(confGREYLIST, `OPTIONAL', `dnl warn condition = ${if eq{${extract{greylist}{$acl_m1}}}{}{no}{yes}} set acl_m_optional_greylist = \ scores=${eval:${extract{scores}{$acl_m_optional_greylist}}+${extract{greylist}{$acl_m1}}} \ log_message="${extract{log_message}{$acl_m_optional_greylist}} $acl_m0;" set acl_m_spam_action = ${acl_m_spam_action}\t\ greylist scores=${extract{greylist}{$acl_m1}}\t\ $acl_m0\n ') dnl ifelse(confGREYLIST, `OPTIONAL', `') ifdef(`confOPTIONAL_REJECT', `ifelse(confOPTIONAL_REJECT, `NO', `dnl', `dnl warn condition = ${if eq{${extract{reject}{$acl_m1}}}{}{no}{yes}} condition = ${if eq{${extract{reject}{$acl_m1}}}{00}{no}{yes}} set acl_m_optional_reject = \ scores=${eval:${extract{scores}{$acl_m_optional_reject}}+${extract{reject}{$acl_m1}}} \ log_message="${extract{log_message}{$acl_m_optional_reject}} $acl_m0;" set acl_m_spam_action = ${acl_m_spam_action}\t\ reject scores=${extract{reject}{$acl_m1}}\t\t\ $acl_m0\n ')') dnl ifdef(`confOPTIONAL_REJECT', `ifelse(confOPTIONAL_REJECT, `NO', `', `')')