dnl dnl проверка HELO в виде адреса нашего интерфейса, нашего имени хоста, наших доменов dnl NO - не проводить проверку dnl DROP - возврат клиенту кода 5xx и обрыв соединения dnl REJECT - возврата клиенту кода 5xx dnl DEFER - возврат клиенту кода 4xx dnl WARN - вывода в лог файл предупреждения dnl QUARANTINE - принять письмо с сохранением в карантин без доставки получателям dnl PAUSE:XX - пауза XX секунд dnl GREYLIST:XX - добавить XX баллов к счетчику опционального greylisting'а dnl REJECT:XX - добавить XX баллов к счетчику опционального reject'а dnl define(`confCHECK_HELO_OWN', `WARN')dnl dnl # Наличие в HELO наших адресов/доменов warn set acl_m0 = set acl_m3 = warn condition = ${if eq{$acl_m0}{skip}{no}{yes}} condition = ${if eq{$acl_m3}{}{yes}{no}} condition = ${if eq{$interface_address}{}{no}{yes}} condition = ${if eq{$sender_helo_name}{[$interface_address]}{yes}{no}} set acl_m3 = our IP # message = $acl_m2 # log_message = $acl_m0 set acl_m2 = Invalid greeting used set acl_m0 = HELO used my own credentials warn condition = ${if eq{$acl_m0}{skip}{no}{yes}} condition = ${if eq{$acl_m3}{}{yes}{no}} condition = ${if eq{$sender_helo_name}{$primary_hostname}{yes}{no}} set acl_m3 = our primary_hostname # message = $acl_m2 # log_message = $acl_m0 set acl_m2 = Invalid greeting used set acl_m0 = HELO used my own credentials warn condition = ${if eq{$acl_m0}{skip}{no}{yes}} condition = ${if eq{$acl_m3}{}{yes}{no}} condition = ${if match_domain{$sender_helo_name}{+local_domains}{yes}{no}} set acl_m3 = our local_domain # message = $acl_m2 # log_message = $acl_m0 set acl_m2 = Invalid greeting used set acl_m0 = HELO used my own credentials ifdef(`confSECONDARY_RELAY', `ifelse(confSECONDARY_RELAY, `NO', `', ` warn condition = ${if eq{$acl_m0}{skip}{no}{yes}} condition = ${if eq{$acl_m3}{}{yes}{no}} condition = ${lookup{$sender_host_address}\ iplsearch{CONFDIR/hosts-trusted}\ {no}{yes}} condition = ${if match_domain{$sender_helo_name}\ {+relay_to_domains} \ {yes}{no}} set acl_m3 = our relay_to_domain # message = $acl_m2 # log_message = $acl_m0 set acl_m2 = Invalid greeting used set acl_m0 = HELO used my own credentials ')') dnl ifdef(`confSECONDARY_RELAY', `ifelse(confSECONDARY_RELAY, `NO', `', `')') warn set acl_m1 = condition = ${if eq{$acl_m3}{}{no}{yes}} ifelse_strstr(confCONTENT_SCANNING_QUARANTINE, `PERSONAL',`dnl set acl_m1 = NORMALIZE_ACTION_PERSONAL_QUARANTINE(confCHECK_HELO_OWN) ',`dnl set acl_m1 = NORMALIZE_ACTION(confCHECK_HELO_OWN) ')dnl set acl_m1 = ${sg{$acl_m1 }{\N\b([^=\s\d]+)(\s)\N}{\$1=00\$2}} ifdef(`confENTERPRISE_USER', `dnl warn condition = ${if eq{$acl_m3}{}{no}{yes}} condition = ${if match{$acl_m1}{submit_mysql}{yes}{no}} ENTERPRISE(`mysql', `submit', `helo', `$acl_m3', `$sender_helo_name', `0') warn condition = ${if eq{$acl_m3}{}{no}{yes}} condition = ${if match{$acl_m1}{submit_sqlite}{yes}{no}} ENTERPRISE(`sqlite', `submit', `helo', `$acl_m3', `$sender_helo_name', `0') warn condition = ${if eq{$acl_m3}{}{no}{yes}} condition = ${if match{$acl_m1}{submit_rbl}{yes}{no}} dnl ENTERPRISE(`rbl', `update', `mx.org.ua', `helo.rbl.mx.org.ua', `$acl_m3', `$sender_helo_name') ENTERPRISE(`rbl', `submit', `helo', `$acl_m3', `$sender_helo_name') ') dnl # pause 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 log_message = $acl_m0; message delayed for ${extract{pause}{$acl_m1}}s # warning warn condition = ${if match{$acl_m1}{warn}{yes}{no}} add_header = X-Warn-HELO-Own: HELO used my own credentials - $sender_helo_name # quarantine and reject accept condition = ${if eq{${extract{quarantine}{$acl_m1}}}{00}{yes}{no}} condition = ${if eq{${extract{reject}{$acl_m1}}}{00}{yes}{no}} log_message = $acl_m0 set acl_m_fakereject = \ message will be quarantined and rejected: $acl_m0\ |X-Quarantine-HELO: $acl_m0\ |$acl_m2 set acl_m_add_x_orig_rcpt = yes set acl_m_quarantined = $acl_m_quarantined envelope # quarantine and !reject warn condition = ${if eq{${extract{quarantine}{$acl_m1}}}{00}{yes}{no}} condition = ${if eq{${extract{reject}{$acl_m1}}}{00}{no}{yes}} log_message = message will be quarantined: $acl_m0 add_header = X-Quarantine-HELO: $acl_m0 set acl_m_add_x_orig_rcpt = yes set acl_m_quarantined = $acl_m_quarantined envelope accept condition = ${if eq{${extract{quarantine}{$acl_m1}}}{00}{yes}{no}} condition = ${if eq{${extract{reject}{$acl_m1}}}{00}{no}{yes}} # !quarantine and reject deny condition = ${if eq{${extract{reject}{$acl_m1}}}{00}{yes}{no}} message = ${if eq{$acl_m2}{}{Invalid greeting used}{$acl_m2}} log_message = $acl_m0 # defer defer condition = ${if match{$acl_m1}{defer}{yes}{no}} message = ${if eq{$acl_m2}{}{Invalid greeting used}{$acl_m2}} log_message = $acl_m0 # drop drop condition = ${if match{$acl_m1}{drop}{yes}{no}} message = ${if eq{$acl_m2}{}{Invalid greeting used}{$acl_m2}} log_message = $acl_m0 # warning warn condition = ${if match{$acl_m1}{warn}{yes}{no}} condition = ${if eq{${extract{pause}{$acl_m1}}}{}{yes}{no}} log_message = $acl_m0 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', `', `')')