dnl dnl проверка рилея отправителя dnl dnl NO - не проводить проверку 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_ACCESS_RELAY', `WARN')dnl dnl dnl действия WARN, PAUSE=XX, GREYLIST=XX, REJECT=XX можно указывать через пробел dnl dnl в файле access-relay-blacklist перечисляются A записи хостов и сети в виде CIDR dnl для хостов и сетей, перечисленных в файле access-relay-blacklist, применяется dnl действие, указанное в переменной confCHECK_ACCESS_RELAY dnl dnl в файле access-relay перечисляются A записи хостов, сети в виде CIDR, dnl имена хостов, доменные зоны в виде wildcard или регулярных выражений dnl dnl в файле access-relay можно указать необходимое действие для данного dnl хоста в виде: dnl хост : действие : сообщение : сообщение 2 dnl dnl где: dnl хост - A запись хоста, сеть в виде CIDR, имя хоста или dnl доменная зона в виде wildcard или регулярного выражения dnl действие - действие, применяемое к письму dnl сообщение - ответ SMTP клиенту (может отсутствовать) dnl сообщение 2 - сообщение в файл протокола или в добавляемое поле dnl заголовка (может отсутствовать) dnl dnl возможные действия: dnl ok - исключение из проверки для указанного хоста dnl warn - вывод предупреждения в файл протокола и добавление в письмо поля заголовка dnl reject - отказ в приеме сообщения dnl deny - синоним для reject dnl defer - возврат временной ошибки dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl greylist=XX - добавление XX баллов к счетчику опционального грейлистинга dnl reject=XX - добавление XX баллов к счетчику опционального reject'а dnl delay=XX - задержка на XX секунд перед продолжением обработки сообщения dnl pause=XX - синоним delay=XX dnl submit_mysql - занесение записи о хосте в базу MySQL (доступно в расширенной версии) dnl submit_sqlite - занесение записи о хосте в базу SQLite (доступно в расширенной версии) dnl submit_rbl - занесение записи о хосте в DNSBL (доступно в расширенной версии) dnl dnl ответ SMTP будет использован в случае указания reject/deny или defer в dnl качестве значения для action. если текст ответа не будет указан, будет dnl использован текст сообщения об ошибке по умолчанию. dnl dnl если параметр action не будет указан, будет использоваться действие, указанное dnl в переменной confCHECK_ACCESS_RELAY dnl dnl пример: dnl A.B.C.D : defer : message defered. contact postmaster@$qualify_domain dnl A.B.C.0/24 : deny : sender network blacklisted dnl host.domain.tld : warn dnl host2.domain.tld : ok dnl *.domain.tld dnl \N^.+\.zuper-ISP\..+$\N : reject : message from zuper-ISP rejected dnl dnl ############################################## dnl dnl Проверка номера AS хоста отправителя dnl dnl NO - не проводить проверку 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_ACCESS_RELAY_ASN', `NO')dnl dnl dnl проверка номера AS хоста отправителя является расширением проверки dnl адреса хоста отправителя. dnl т. е. confCHECK_ACCESS_RELAY_ASN можно использовать только dnl вместе с confCHECK_ACCESS_RELAY. dnl dnl отличием confCHECK_ACCESS_RELAY_ASN от dnl confCHECK_ACCESS_RELAY является лишь то, что вместе адреса хоста dnl отправителя или имени хоста отправителя нужно указывать номер AS dnl хоста отправителя с префиксом "AS". dnl dnl при этом поиск в access-relay по номеру AS хоста отправителя dnl производится только в случае, если в данном файле не найдены адрес dnl хоста отправителя и имя хоста отправителя. dnl dnl в файле CONFDIR/access-relay можно указать необходимые действия для номера AS dnl хоста отправителя в виде: dnl ASXXXX : action : message : log_message dnl dnl где: dnl XXXX - номер AS хоста отправителя dnl action - действие dnl message - ответ SMTP клиенту (может отсутствовать) dnl log_message - сообщение в лог файл (может отсутствовать) dnl dnl возможные значения для action такие же, как при проверке хоста dnl отправителя (переменная confCHECK_ACCESS_RELAY). dnl dnl ответ SMTP будет использован в случае указания reject/deny или defer в dnl качестве значения для action. если текст ответа не будет указан, будет dnl использован текст сообщения об ошибке по умолчанию. dnl dnl если параметр action не будет указан, будет использоваться действие, указанное dnl в переменной confCHECK_ACCESS_RELAY_ASN dnl dnl пример: dnl AS44600 : defer : message defered. contact postmaster@$qualify_domain dnl AS15169 : pause=20 warn dnl dnl исключения для данного фильтра указываются в файле CONFDIR/access-relay в виде dnl IP адресов, сетей в виде CIDR или номеров AS с префиксом "AS", в качестве dnl действия указав skip или ok. dnl dnl механизм определения номера AS по IP адресу можно указать в переменной confIP2ASN_BACKEND dnl dnl ############################################## dnl dnl Проверка страны хоста отправителя dnl dnl NO - не проводить проверку 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_ACCESS_RELAY_COUNTRY', `NO')dnl dnl dnl проверка страны хоста отправителя является расширением проверки dnl адреса хоста отправителя. dnl т. е. confCHECK_ACCESS_RELAY_COUNTRY можно использовать только dnl вместе с confCHECK_ACCESS_RELAY. dnl dnl отличием confCHECK_ACCESS_RELAY_COUNTRY от dnl confCHECK_ACCESS_RELAY является лишь то, что вместе адреса хоста dnl отправителя или имени хоста отправителя нужно указывать страну dnl хоста отправителя в виде двухбуквенного кода. dnl dnl при этом поиск в access-relay по стране хоста отправителя dnl производится только в случае, если в данном файле не найдены адрес dnl хоста отправителя и имя хоста отправителя. dnl dnl в файле CONFDIR/access-relay можно указать необходимые действия для страны dnl хоста отправителя в виде: dnl NN : action : message : log_message dnl dnl где: dnl NN - двухбуквенный код страны dnl action - действие dnl message - ответ SMTP клиенту (может отсутствовать) dnl log_message - сообщение в лог файл (может отсутствовать) dnl dnl информация по двухбуквенным кодам стран: dnl https://dev.maxmind.com/geoip/legacy/web-services/ dnl https://ru.wikipedia.org/wiki/ISO_3166-1 dnl https://ru.wikipedia.org/wiki/ISO_3166-2 dnl dnl возможные значения для action такие же, как при проверке хоста dnl отправителя (переменная confCHECK_ACCESS_RELAY). dnl dnl ответ SMTP будет использован в случае указания reject/deny или defer в dnl качестве значения для action. если текст ответа не будет указан, будет dnl использован текст сообщения об ошибке по умолчанию. dnl dnl если параметр action не будет указан, будет использоваться действие, указанное dnl в переменной confCHECK_ACCESS_RELAY_COUNTRY dnl dnl пример: dnl CN : defer : message defered. contact postmaster@$qualify_domain dnl MX : pause=20 warn dnl dnl исключения для данного фильтра указываются в файле CONFDIR/access-relay в виде dnl IP адресов, сетей в виде CIDR, стран в виде двухбуквенного кода, в качестве dnl действия указав skip или ok. dnl dnl механизм определения страны по IP адресу можно указать в переменной confIP2COUNTRY_BACKEND dnl dnl ############################################## dnl dnl Проверка континента хоста отправителя dnl dnl NO - не проводить проверку 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_ACCESS_RELAY_CONTINENT', `NO')dnl dnl dnl проверка континента хоста отправителя является расширением проверки dnl адреса хоста отправителя. dnl т. е. confCHECK_ACCESS_RELAY_CONTINENT можно использовать только dnl вместе с confCHECK_ACCESS_RELAY. dnl dnl при этом поиск в access-relay по двухбуквенному коду континента производится только dnl в случае, если запросы по IP адресу, имени хоста отправителя и стране dnl отправителя не дали результатов. dnl dnl в файле CONFDIR/access-relay можно указать необходимые действия для континента dnl хоста отправителя в виде: dnl CONTINENT_NN : action : message : log_message dnl dnl где: dnl NN - двухбуквенный код континента dnl action - действие dnl message - ответ SMTP клиенту (может отсутствовать) dnl log_message - сообщение в лог файл (может отсутствовать) dnl dnl информация по двухбуквенным кодам континентов: dnl https://dev.maxmind.com/geoip/legacy/web-services/ dnl dnl возможные значения для action такие же, как при проверке хоста dnl отправителя (переменная confCHECK_ACCESS_RELAY). dnl dnl ответ SMTP будет использован в случае указания reject/deny или defer в dnl качестве значения для action. если текст ответа не будет указан, будет dnl использован текст сообщения об ошибке по умолчанию. dnl dnl если параметр action не будет указан, будет использоваться действие, указанное dnl в переменной confCHECK_ACCESS_RELAY_CONTINENT dnl dnl пример: dnl CONTINENT_AF : GREYLIST=10 : Temporary problem dnl CONTINENT_AN : WARN : Wow, the message from Antarctica dnl dnl исключения для данного фильтра указываются в файле CONFDIR/access-relay в виде dnl IP адресов, сетей в виде CIDR, континента в виде двухбуквенного кода с dnl префиксом "CONTINENT_", в качестве действия указав skip или ok. dnl dnl механизм определения страны по IP адресу можно указать в переменной confIP2COUNTRY_BACKEND dnl dnl ############################################## dnl dnl Проверка A записи рилея на принадлежность к dial-up/dsl/cable сетям dnl dnl NO - не проводить проверку 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_ACCESS_RELAY_DYNAMIC', `WARN')dnl dnl dnl действия WARN, PAUSE=XX, GREYLIST=XX, REJECT=XX можно указывать через пробел dnl dnl списки dial-up/dsl/cable хостов и сетей можно указывать в виде A записей и номеров сетей dnl указываются в файле CONFDIR/access-relay-dynamic dnl dnl confCHECK_ACCESS_RELAY_DYNAMIC используется только при использовании confCHECK_ACCESS_RELAY dnl ifelse(confCHECK_ACCESS_RELAY, `YES', `define(`confCHECK_ACCESS_RELAY', `REJECT')') ifelse_strstr(confCONTENT_SCANNING_QUARANTINE, `PERSONAL',`dnl define(`_CHECK_RELAY_ACCESS_TMP', `NORMALIZE_ACTION_PERSONAL_QUARANTINE(confCHECK_ACCESS_RELAY)')dnl ',`dnl define(`_CHECK_RELAY_ACCESS_TMP', `NORMALIZE_ACTION(confCHECK_ACCESS_RELAY)')dnl ')dnl define(`confCHECK_ACCESS_RELAY', _CHECK_RELAY_ACCESS_TMP)dnl ifelse(SECTION, `MAIN', `dnl hostlist hosts_blacklisted = CONFDIR/access-relay-blacklist ifelse(confCHECK_ACCESS_RELAY_DYNAMIC, `NO', `dnl', `dnl hostlist hosts_blacklist_dialup = CONFDIR/access-relay-dynamic ') dnl ifelse(confCHECK_ACCESS_RELAY_DYNAMIC, `NO', `dnl', `' ') dnl ifelse(SECTION, `MAIN', `') ifelse(SECTION, `ACL_CHECK_RCPT', ` # Проверка рилея отправителя warn set acl_m1 = set acl_m0 = ${lookup{$sender_host_address}iplsearch{CONFDIR/access-relay}\ {${if eq{$value}{}{confCHECK_ACCESS_RELAY}{$value}}}\ {\ ${lookup{$sender_host_name}wildlsearch{CONFDIR/access-relay}\ {${if eq{$value}{}{confCHECK_ACCESS_RELAY}{$value}}}\ {no}}\ }} ACL(`check_relay_hostlist', `hosts_blacklisted', `confCHECK_ACCESS_RELAY', `Access from relay $sender_host_address denied according to the local policy', `Sender relay $sender_host_address blacklisted') ifelse(confCHECK_ACCESS_RELAY_DYNAMIC, `NO', `dnl', `dnl ifelse_strstr(confCONTENT_SCANNING_QUARANTINE, `PERSONAL',`dnl define(`_CHECK_RELAY_ACCESS_TMP', `NORMALIZE_ACTION_PERSONAL_QUARANTINE(confCHECK_ACCESS_RELAY_DYNAMIC)')dnl ',`dnl define(`_CHECK_RELAY_ACCESS_TMP', `NORMALIZE_ACTION(confCHECK_ACCESS_RELAY_DYNAMIC)')dnl ')dnl define(`confCHECK_ACCESS_RELAY_DYNAMIC', _CHECK_RELAY_ACCESS_TMP)dnl ACL(`check_relay_hostlist', `hosts_blacklist_dialup', `confCHECK_ACCESS_RELAY_DYNAMIC', `Access from dial-up/dsl/cable relays denied according to the local policy.\n\ Use mail server of your ISP', `Access from dial-up/dsl/cable relay [$sender_host_address] denied /A record/') ') dnl ifelse(confCHECK_ACCESS_RELAY_DYNAMIC, `NO', `dnl', `' ifelse(confCHECK_ACCESS_RELAY_ASN, `NO', `', ` define(`confIP2ASN', `YES')dnl warn condition = ${if eq{$acl_m0}{no}{yes}{no}} condition = ${if eq{$acl_c_sender_host_address_asn}{}{yes}{no}} set acl_c_sender_host_address_asn = ${acl{acl_ip2asn}{$sender_host_address}} warn condition = ${if eq{$acl_m0}{no}{yes}{no}} condition = ${if eq{$acl_c_sender_host_address_asn}{UNKNOWN}{no}{yes}} condition = ${if eq{$acl_c_sender_host_address_asn}{}{no}{yes}} set acl_m0 = ${lookup{$acl_c_sender_host_address_asn}\ wildlsearch{CONFDIR/access-relay}\ {${if eq{$value}{}{confCHECK_ACCESS_RELAY_ASN}{$value}}}\ {no}} ') dnl ifelse(confCHECK_ACCESS_RELAY_ASN, `NO', `') ifelse(confCHECK_ACCESS_RELAY_COUNTRY, `NO', `', ` define(`confIP2COUNTRY', `YES')dnl warn condition = ${if eq{$acl_m0}{no}{yes}{no}} condition = ${if eq{$acl_c_sender_host_address_country}{}{yes}{no}} set acl_c_sender_host_address_country = ${acl{acl_ip2country}{$sender_host_address}} warn condition = ${if eq{$acl_m0}{no}{yes}{no}} condition = ${if eq{$acl_c_sender_host_address_country}{UNKNOWN}{no}{yes}} condition = ${if eq{$acl_c_sender_host_address_country}{}{no}{yes}} set acl_m0 = ${lookup{$acl_c_sender_host_address_country}\ wildlsearch{CONFDIR/access-relay}\ {${if eq{$value}{}{confCHECK_ACCESS_RELAY_COUNTRY}{$value}}}\ {no}} ') dnl ifelse(confCHECK_ACCESS_RELAY_COUNTRY, `NO', `') ifelse(confCHECK_ACCESS_RELAY_CONTINENT, `NO', `', ` define(`confIP2COUNTRY', `YES')dnl warn condition = ${if eq{$acl_m0}{no}{yes}{no}} condition = ${if eq{$acl_c_sender_host_address_continent}{}{yes}{no}} set acl_c_sender_host_address_continent = ${acl{acl_ip2continent}{$sender_host_address}} warn condition = ${if eq{$acl_m0}{no}{yes}{no}} condition = ${if eq{$acl_c_sender_host_address_continent}{UNKNOWN}{no}{yes}} condition = ${if eq{$acl_c_sender_host_address_continent}{}{no}{yes}} set acl_m0 = ${lookup{CONTINENT_${acl_c_sender_host_address_continent}}\ wildlsearch{CONFDIR/access-relay}\ {${if eq{$value}{}{confCHECK_ACCESS_RELAY_CONTINENT}{$value}}}\ {no}} ') dnl ifelse(confCHECK_ACCESS_RELAY_CONTINENT, `NO', `') warn condition = ${if eq{$acl_m0}{no}{no}{yes}} acl = acl_normalize_action "${extract{1}{:}{$acl_m0}}" set acl_m1 = ${sg{$acl_m_normalize_action_result }{\N\b([^=\s\d]+)(\s)\N}{\$1=00\$2}} # message = $acl_m2 # log_message = $acl_m0 set acl_m2 = ${expand:${sg{${extract{2}{:}{$acl_m0}}}{\N^\s+\N}{}}} set acl_m0 = ${expand:${sg{${extract{3}{:}{$acl_m0}}}{\N^\s+\N}{}}} set acl_m_check_relay_msg = ${if eq{$acl_m0}{}{}{: $acl_m0}} set acl_m0 = ${if eq{$acl_m0}{}{relay ${if eq{$sender_host_name}{}{}{$sender_host_name }}[$sender_host_address] blacklisted${if eq{$acl_m2}{}{}{: $acl_m2}}}{$acl_m0}} set acl_m2 = ${if eq{$acl_m2}{}{Access from relay ${if eq{$sender_host_name}{}{}{$sender_host_name }}[$sender_host_address] denied according to the local policy}{$acl_m2}} ifdef(`confENTERPRISE_USER', `dnl warn condition = ${if match{$acl_m1}{submit_mysql}{yes}{no}} ENTERPRISE(`mysql', `submit', `sender_host_address', `blacklisted', `$sender_host_name', `0') warn condition = ${if match{$acl_m1}{submit_sqlite}{yes}{no}} ENTERPRISE(`sqlite', `submit', `sender_host_address', `blacklisted', `$sender_host_name', `0') warn condition = ${if match{$acl_m1}{submit_rbl}{yes}{no}} dnl ENTERPRISE(`rbl', `update', `mx.org.ua', `sender-host-name.rbl.mx.org.ua', `blacklisted', `$sender_host_name') ENTERPRISE(`rbl', `submit', `sender-host-name', `blacklisted', `$sender_host_name') ') dnl # Warning в случае принадлежности хоста рилея к blacklisted сетям # Warning if sender host in blacklisted network warn condition = ${if match{$acl_m1}{warn}{yes}{no}} add_header = X-Warn-Relay-BlackListed: $acl_m0 log_message = $acl_m0${if eq{${extract{pause}{$acl_m1}}}{}{}{: message delayed for ${extract{pause}{$acl_m1}}s}} # Pause в случае принадлежности хоста рилея к blacklisted сетям # Pause if sender host in blacklisted network 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 # 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 = message will be quarantined and rejected: relay ${if eq{$sender_host_name}{}{}{$sender_host_name }}[$sender_host_address] blacklisted${acl_m_check_relay_msg} set acl_m_fakereject = \ message will be quarantined and rejected: relay ${if eq{$sender_host_name}{}{}{$sender_host_name }}[$sender_host_address] blacklisted${acl_m_check_relay_msg}\ |X-Quarantine-Relay: relay ${if eq{$sender_host_name}{}{}{$sender_host_name }}[$sender_host_address] blacklisted${acl_m_check_relay_msg}\ |$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}} add_header = X-Quarantine-Relay: relay ${if eq{$sender_host_name}{}{}{$sender_host_name }}[$sender_host_address] blacklisted${acl_m_check_relay_msg} log_message = message will be quarantined: relay ${if eq{$sender_host_name}{}{}{$sender_host_name }}[$sender_host_address] blacklisted${acl_m_check_relay_msg} 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}} condition = ${if eq{${extract{quarantine}{$acl_m1}}}{00}{no}{yes}} log_message = $acl_m0 message = $acl_m2 # Defer в случае принадлежности хоста рилея к blacklisted сетям # Defer if sender host in blacklisted network defer condition = ${if match{$acl_m1}{defer}{yes}{no}} message = $acl_m2 log_message = $acl_m0 # Drop в случае принадлежности хоста рилея к blacklisted сетям # Drop if sender host in blacklisted network drop condition = ${if match{$acl_m1}{drop}{yes}{no}} message = $acl_m2 log_message = $acl_m0 ifelse(confGREYLIST, `OPTIONAL', `dnl # greylist в случае принадлежности хоста рилея к blacklisted сетям # greylist if sender host in blacklisted network 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 # optional reject в случае принадлежности хоста рилея к blacklisted сетям # optional reject if sender host in blacklisted network 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', `', `')') ') dnl ifelse(SECTION, `ACL_CHECK_RCPT', `')