dnl dnl встречная проверка адреса отправителя dnl dnl NO - не проводить проверку dnl WARN - вывода в лог файл предупреждения (не выводятся для сообщений, попадающих в исключения) dnl WARN_LOG - вывода в лог файл предупреждения (выводятся и для сообщений, попадающих в исключения) dnl REJECT - возврата клиенту кода 5xx dnl REJECT_LOG - возврата клиенту кода 5xx (для сообщений, попадающих в исключения, выводится предупреждения) dnl define(`confVERIFY_SENDER', `REJECT')dnl dnl dnl исключения из встречной проверки адреса отправителя dnl NO - не делать исключений dnl AUTH - исключать аутентифицированных отправителей dnl RELAY - исключать рилеи, перечисленные в CONFDIR/skip_verify_sender_relay dnl MAIL - исключать адреса отправителей, перечисленные в CONFDIR/skip_verify_sender_mail dnl RCPT - исключать адреса получателей, перечисленные в CONFDIR/skip_verify_sender_rcpt dnl SPF_PASS - делать исключение, если проверка соответствия SPF записи выполнена успешно dnl define(`confVERIFY_SENDER_SKIP', `RELAY AUTH MAIL RCPT')dnl dnl dnl величина таймаута при проверке отправителя dnl define(`confVERIFY_SENDER_TIMEOUT', `120s')dnl dnl dnl файл с перечисленными адресами/доменами получателей, для которых при verify sender надо использовать defer=ok dnl пример: dnl define(`confVERIFY_SENDER_DEFER_OK_RCPT', `CONFDIR/verify_sender_defer_ok_rcpt')dnl dnl список указывается в виде: dnl domain : addr1 : addr2 : addr3 dnl пример: dnl my.domain.com : user : info : admin dnl my.another.domain.com : !user : * dnl dnl файл с перечисленными доменами/адресами отправителей, для которых при verify sender надо использовать defer=ok dnl пример: dnl define(`confVERIFY_SENDER_DEFER_OK_MAIL', `CONFDIR/verify_sender_defer_ok_mail')dnl dnl список указывается в виде: dnl domain : addr1 : addr2 : addr3 dnl пример: dnl sender.domain.com : user : info : admin dnl ifelse(SECTION, `MAIN', `dnl ifelse_strstr(confVERIFY_SENDER_SKIP, `RELAY', `dnl hostlist skip_verify_sender = 127.0.0.1 : CONFDIR/skip_verify_sender_relay ')dnl dnl ifdef(`confVERIFY_SENDER_DEFER_OK_RCPT', `', `define(`confVERIFY_SENDER_DEFER_OK_RCPT', `')')dnl ifdef(`confVERIFY_SENDER_DEFER_OK_MAIL', `', `define(`confVERIFY_SENDER_DEFER_OK_MAIL', `')')dnl ')dnl dnl ifelse(SECTION, `ACL_CHECK_RCPT', `dnl # Проверка адреса отправителя warn set acl_m12 = ifelse(len(X`'confVERIFY_SENDER_DEFER_OK_RCPT), `1', `dnl', `dnl warn recipients = @@lsearch;confVERIFY_SENDER_DEFER_OK_RCPT set acl_m12 = ,defer_ok ') dnl ifelse(len(X`'confVERIFY_SENDER_DEFER_OK_RCPT), `1', `') ifelse(len(X`'confVERIFY_SENDER_DEFER_OK_MAIL), `1', `dnl', `dnl warn senders = @@lsearch;confVERIFY_SENDER_DEFER_OK_MAIL set acl_m12 = ,defer_ok ') dnl ifelse(len(X`'confVERIFY_SENDER_DEFER_OK_MAIL), `1', `') ifelse(confVERIFY_SENDER, `WARN', `dnl warn \ ifelse_strstr(confVERIFY_SENDER_SKIP, `RELAY', `dnl hosts = !+skip_verify_sender ')dnl ifelse_strstr(confVERIFY_SENDER_SKIP, `RELAY', `') ifelse_strstr(confVERIFY_SENDER_SKIP, `AUTH', `dnl ! authenticated = * ')dnl ifelse_strstr(confVERIFY_SENDER_SKIP, `AUTH', `') ifelse_strstr(confVERIFY_SENDER_SKIP, `MAIL', `dnl ! senders = @@lsearch;CONFDIR/skip_verify_sender_mail ')dnl ifelse_strstr(confVERIFY_SENDER_SKIP, `MAIL', `') ifelse_strstr(confVERIFY_SENDER_SKIP, `RCPT', `dnl ! recipients = @@lsearch;CONFDIR/skip_verify_sender_rcpt ')dnl ifelse_strstr(confVERIFY_SENDER_SKIP, `RCPT', `') message = X-Verify-Sender: NOT verified log_message = Verify sender failed ! verify = sender/callout=confVERIFY_SENDER_TIMEOUT # condition = ${if eq{$sender_verify_failure}{recipient}{yes}{no}} ') dnl ifelse(confVERIFY_SENDER, `WARN', `') ifelse(confVERIFY_SENDER, `WARN_LOG', `dnl warn message = X-Verify-Sender: NOT verified log_message = Verify sender failed ! verify = sender/callout=confVERIFY_SENDER_TIMEOUT # condition = ${if eq{$sender_verify_failure}{recipient}{yes}{no}} ') dnl ifelse(confVERIFY_SENDER, `WARN_LOG', `') ifelse_strstr(confVERIFY_SENDER, `REJECT', `dnl ifelse_strstr(confVERIFY_SENDER_SKIP, `SPF_PASS', `dnl warn spf = pass set acl_m12 = spf_pass ')dnl ifelse_strstr(confVERIFY_SENDER_SKIP, `SPF_PASS', `') deny \ ifelse_strstr(confVERIFY_SENDER_SKIP, `SPF_PASS', `dnl condition = ${if eq{$acl_m12}{spf_pass}{no}{yes}} ')dnl ifelse_strstr(confVERIFY_SENDER_SKIP, `SPF_PASS', `') ifelse_strstr(confVERIFY_SENDER_SKIP, `RELAY', `dnl hosts = !+skip_verify_sender ')dnl ifelse_strstr(confVERIFY_SENDER_SKIP, `RELAY', `') ifelse_strstr(confVERIFY_SENDER_SKIP, `AUTH', `dnl ! authenticated = * ')dnl ifelse_strstr(confVERIFY_SENDER_SKIP, `AUTH', `') ifelse_strstr(confVERIFY_SENDER_SKIP, `MAIL', `dnl ! senders = @@lsearch;CONFDIR/skip_verify_sender_mail ')dnl ifelse_strstr(confVERIFY_SENDER_SKIP, `MAIL', `') ifelse_strstr(confVERIFY_SENDER_SKIP, `RCPT', `dnl ! recipients = @@lsearch;CONFDIR/skip_verify_sender_rcpt ')dnl ifelse_strstr(confVERIFY_SENDER_SKIP, `RCPT', `') ! verify = sender/callout=confVERIFY_SENDER_TIMEOUT${acl_m12} # condition = ${if eq{$sender_verify_failure}{recipient}{yes}{no}} ifelse_strstr(confVERIFY_SENDER, `LOG', `dnl warn message = X-Verify-Sender: NOT verified log_message = Verify sender failed ! verify = sender/callout=confVERIFY_SENDER_TIMEOUT # condition = ${if eq{$sender_verify_failure}{recipient}{yes}{no}} ') dnl ifelse_strstr(confVERIFY_SENDER, `LOG', `') ') dnl ifelse_strstr(confVERIFY_SENDER, `REJECT', `') ') dnl ifelse(SECTION, `ACL_CHECK_RCPT', `')