dnl dnl проверка имен прикрепленных файлов dnl dnl NO - не проводить проверку имен прикрепленных файлов dnl YES - проводить проверку имен прикрепленных файлов dnl define(`confCHECK_MIME_FILENAME', `NO')dnl dnl dnl список шаблонов имен прикрепленных файлов находится в файле CONFDIR/access-mime-filename dnl в виде: dnl filename : действие : сообщение : сообщение 2 dnl dnl где dnl filename - имя прикрепленного файла в виде полного имени, wildcard dnl или регулярного выражения dnl действие - действие, применяемое к письму dnl сообщение - ответ SMTP клиенту (может отсутствовать) dnl сообщение 2 - сообщение в файл протокола или в добавляемое поле dnl заголовка (может отсутствовать) dnl dnl в качестве "действия" могут выступать: dnl ok - исключить имя файла из проверки dnl warn - выдача предупреждения в лог файл и добавление в dnl заголовки сообщения поля X-Warn-Attachment dnl текст сообщения об ошибке может быть указан через dnl двоеточие (см. выше "сообщение2") dnl deny или reject - отказ в приеме сообщения dnl fakereject - фиктивный отказ в приеме сообщения dnl drop - отказ в приеме сообщения с обрывом соединения dnl discard - прием письма без доставки получателю dnl defer - возврат клиенту временной ошибки 4xx dnl quarantine - принять письмо с сохранением в карантин без доставки получателям dnl greylist=xx - добавление xx баллов к счетчику опционального greylisting'а dnl greylisting=xx - синоним greylist=xx dnl reject=yy - добавление yy баллов к счетчику опционального reject'а dnl deny=yy - синоним reject=yy dnl delay=zz - задержка на zz секунд перед продолжением обработки сообщения dnl pause=zz - синоним delay=zz dnl dnl исключение из проверки расширений файлов (список, значения указываются через пробел) dnl AUTH - не проводить проверку для аутентифицированных сообщений dnl RELAY_FROM - не проводить проверку для исходящих сообщений dnl WHITE_LIST_RELAYS - не проводить проверку для сообщений из white_list_relays dnl WHITE_LIST_SENDERS - не проводить проверку для сообщений от white_list_senders dnl POSTMASTER_ABUSE - не проводить проверку для postmaster/abuse dnl define(`confCHECK_MIME_FILENAME_SKIP', `AUTH RELAY_FROM POSTMASTER_ABUSE')dnl dnl dnl dnl максимальный размер проверяемого архива, kB dnl define(`confCHECK_MIME_FILENAME_MAX_ARC_SIZE', `2048')dnl dnl dnl dnl проверять имена файлов внутри zip архивов dnl NO - не проводить проверку имен файлов внутри zip архивов dnl YES - проводить проверку имен файлов внутри zip архивов dnl define(`confCHECK_MIME_FILENAME_ZIP', `NO')dnl dnl dnl командная строка для получения списка файлов zip архива dnl define(`confCHECK_MIME_FILENAME_UNZIP_CMD', `/usr/local/bin/unzip -l')dnl dnl dnl регулярное выражение для удаления лишних строк из списка файлов zip архива dnl define(`confCHECK_MIME_FILENAME_UNZIP_REGEXP', `\N(?:.*\n)*(?:-+(?:\s+-+)+\n)((?:.*\n)*)(?:-+(?:\s+-+)+\n)(?:.*\n)*\N')dnl dnl данное регулярное выражение сохраняет в $1 строки, находящиеся между строками dnl "--------- ---------- ----- ----" dnl и dnl "--------- ---------- ----- ----" dnl dnl dnl проверять имена файлов внутри rar архивов dnl NO - не проводить проверку имен файлов внутри rar архивов dnl YES - проводить проверку имен файлов внутри rar архивов dnl define(`confCHECK_MIME_FILENAME_RAR', `NO')dnl dnl dnl командная строка для получения списка файлов rar архива dnl define(`confCHECK_MIME_FILENAME_UNRAR_CMD', `/usr/local/bin/unrar l')dnl dnl dnl регулярное выражение для удаления лишних строк из списка файлов rar архива dnl define(`confCHECK_MIME_FILENAME_UNRAR_REGEXP', `\N(?:.*\n)*(?:-+(?:\s+-+)+\n)((?:.*\n)*)(?:-+(?:\s+-+)+\n)(?:.*\n)*\N')dnl dnl данное регулярное выражение сохраняет в $1 строки, находящиеся между строками dnl "----------- --------- ---------- ----- ----" dnl и dnl "----------- --------- ---------- ----- ----" dnl dnl dnl проверять имена файлов внутри 7z архивов dnl NO - не проводить проверку имен файлов внутри 7z архивов dnl YES - проводить проверку имен файлов внутри 7z архивов dnl define(`confCHECK_MIME_FILENAME_7Z', `NO')dnl dnl dnl командная строка для получения списка файлов 7z архива dnl define(`confCHECK_MIME_FILENAME_UN7Z_CMD', `/usr/local/bin/7z l')dnl dnl dnl регулярное выражение для удаления лишних строк из списка файлов 7z архива dnl define(`confCHECK_MIME_FILENAME_UN7Z_REGEXP', `\N(?:.*\n)*(?:-+(?:\s+-+)+\n)((?:.*\n)*)(?:-+(?:\s+-+)+\n)(?:.*\n)*\N')dnl dnl данное регулярное выражение сохраняет в $1 строки, находящиеся между строками dnl "------------------- ----- ------------ ------------ ------------------------" dnl и dnl "------------------- ----- ------------ ------------ ------------------------" dnl dnl dnl проверять имена файлов внутри arj архивов dnl NO - не проводить проверку имен файлов внутри arj архивов dnl YES - проводить проверку имен файлов внутри arj архивов dnl define(`confCHECK_MIME_FILENAME_ARJ', `NO')dnl dnl dnl командная строка для получения списка файлов arj архива dnl define(`confCHECK_MIME_FILENAME_UNARJ_CMD', `/usr/local/bin/unarj l')dnl dnl dnl регулярное выражение для удаления лишних строк из списка файлов arj архива dnl define(`confCHECK_MIME_FILENAME_UNARJ_REGEXP', `\N(?:.*\n)*(?:-+(?:\s+-+)+\n)((?:.*\n)*)(?:-+(?:\s+-+)+\n)(?:.*\n)*\N')dnl dnl данное регулярное выражение сохраняет в $1 строки, находящиеся между строками dnl "------------ ---------- ---------- ----- ----------------- -------- -----------" dnl и dnl "------------ ---------- ---------- ----- -----------------" dnl dnl dnl проверять имена файлов внутри ace архивов dnl NO - не проводить проверку имен файлов внутри ace архивов dnl YES - проводить проверку имен файлов внутри ace архивов dnl define(`confCHECK_MIME_FILENAME_ACE', `NO')dnl dnl dnl командная строка для получения списка файлов ace архива dnl define(`confCHECK_MIME_FILENAME_UNACE_CMD', `/usr/local/bin/unace l')dnl dnl dnl регулярное выражение для удаления лишних строк из списка файлов ace архива dnl define(`confCHECK_MIME_FILENAME_UNACE_REGEXP', `\N(?:.*\n)*(?:Date.+File\n)((?:.*\n)*)(?:listed: .+\)\n)(?:.*\n)*\N')dnl dnl данное регулярное выражение сохраняет в $1 строки, находящиеся между строками dnl "Date #Time #Packed #Size #Ratio#File" dnl и dnl "listed: 1 files, totaling 31.619 bytes (compressed 11.996)" dnl dnl dnl проверять имена файлов внутри gz архивов dnl NO - не проводить проверку имен файлов внутри gz архивов dnl YES - проводить проверку имен файлов внутри gz архивов dnl define(`confCHECK_MIME_FILENAME_GZ', `NO')dnl dnl dnl командная строка для получения списка файлов gz архива dnl define(`confCHECK_MIME_FILENAME_UNGZ_CMD', `/usr/bin/file')dnl dnl dnl регулярное выражение для удаления лишних строк из списка файлов gz архива dnl define(`confCHECK_MIME_FILENAME_UNGZ_REGEXP', `\N^(?:.+gzip compressed data, was ")(.+)(?:", last modified:.+)\N')dnl dnl данное регулярное выражение сохраняет в $1 имя файла, находящееся между dnl "xxx.gz: gzip compressed data, was "" dnl и dnl "", last modified: Thu Mar 10 14:27:21 2016, max speed, from FAT filesystem (MS-DOS, OS/2, NT)" dnl dnl dnl проверять имена файлов внутри tar.gz (tgz) архивов dnl NO - не проводить проверку имен файлов внутри tar.gz (tgz) архивов dnl YES - проводить проверку имен файлов внутри tar.gz (tgz) архивов dnl define(`confCHECK_MIME_FILENAME_TGZ', `NO')dnl dnl dnl командная строка для получения списка файлов tar.gz (tgz) архива dnl define(`confCHECK_MIME_FILENAME_UNTGZ_CMD', `/usr/bin/tar tzf')dnl dnl dnl dnl проверять имена файлов внутри tar.bz2 (tbz2) архивов dnl NO - не проводить проверку имен файлов внутри tar.bz2 (tbz2) архивов dnl YES - проводить проверку имен файлов внутри tar.bz2 (tbz2) архивов dnl define(`confCHECK_MIME_FILENAME_TBZ2', `NO')dnl dnl dnl командная строка для получения списка файлов tar.bz2 (tbz2) архива dnl define(`confCHECK_MIME_FILENAME_UNTBZ2_CMD', `/usr/bin/tar tyf')dnl dnl dnl dnl проверять имена файлов внутри tar.xz (txz) архивов dnl NO - не проводить проверку имен файлов внутри tar.xz (txz) архивов dnl YES - проводить проверку имен файлов внутри tar.xz (txz) архивов dnl define(`confCHECK_MIME_FILENAME_TXZ', `NO')dnl dnl dnl список расширений файлов dnl define(`confCHECK_MIME_FILENAME_TXZ_EXT', `(txz|tar\.xz)')dnl dnl dnl список типов файлов dnl define(`confCHECK_MIME_FILENAME_TXZ_CONTENT_TYPE', `')dnl dnl dnl командная строка для получения списка файлов tar.xz (txz) архива dnl define(`confCHECK_MIME_FILENAME_UNTXZ_CMD', `/usr/bin/tar tJf')dnl dnl dnl dnl по регулярным выражениям из CONFDIR/access-mime-filename будет dnl проверяться сразу весь список файлов архива с суффиксом в виде dnl разделителя "|" и расширения имени файла архива dnl dnl пример регулярного выражения для проверки имен файлов внутри архивов: dnl \N^(?i)(.+\n)*.+\.(ade|adp|bas|bat|btm|cab|chm|cmd|com|cpl|dat|dll|exe|hlp|hta|inf|ins|isp|js|jse|jsp|lnk|mdb|mde|msc|msi|msp|mst|ocx|pcd|pif|prf|reg|scr|shs|sys|url|vb|vbe|vbs|wsc|wsf|wsh|wsp)\n(.+\n)*\|(rar|zip|7z|tgz|tbz2|txz)$\N : warn deny : Attachment with suspicious extension found in archive ($mime_filename) dnl dnl пример регулярного выражения для проверки наличия архивов внутри других архивов: dnl \N^(?i)(.+\n)*.+\.(rar|zip|7z|tgz|tbz2)\n(.+\n)*\|(rar|zip|7z|tgz|tbz2|txz)$\N : warn : Archive found in archive ($mime_filename) dnl ifelse(SECTION, `ACL_CHECK_MIME', ` # проверка имен прикрепленных файлов warn set acl_m0 = set acl_m1 = condition = ${if eq{$mime_filename}{}{yes}{no}} set acl_m0 = skip ifelse_strstr(confCHECK_FILE_EXT_SKIP, `AUTH', ` warn authenticated = * set acl_m0 = skip ') dnl ifelse_strstr(confCHECK_FILE_EXT_SKIP, `AUTH', `') ifelse_strstr(confCHECK_FILE_EXT_SKIP, `RELAY_FROM', ` warn hosts = +relay_from_hosts set acl_m0 = skip ') dnl ifelse_strstr(confCHECK_FILE_EXT_SKIP, `RELAY_FROM', `') ifelse_strstr(confCHECK_FILE_EXT_SKIP, `WHITE_LIST_RELAYS', `ifdef(`confWHITE_LIST_RELAYS', `ifelse(confWHITE_LIST_RELAYS, `NO', `', ` warn hosts = +relay_white_list set acl_m0 = skip ')')') dnl ifelse_strstr(confCHECK_FILE_EXT_SKIP, `WHITE_LIST_RELAYS', `ifdef(`confWHITE_LIST_RELAYS', `ifelse(confWHITE_LIST_RELAYS, `NO', `', `')')') ifelse_strstr(confCHECK_FILE_EXT_SKIP, `WHITE_LIST_SENDERS', `ifdef(`confWHITE_LIST_SENDERS', `ifelse(confWHITE_LIST_SENDERS, `NO', `', ` warn senders = @@wildlsearch;CONFDIR/senders-whitelist set acl_m0 = skip ')')') dnl ifelse_strstr(confCHECK_FILE_EXT_SKIP, `WHITE_LIST_SENDERS', `ifdef(`confWHITE_LIST_SENDERS', `ifelse(confWHITE_LIST_SENDERS, `NO', `', `')')') ifelse_strstr(confCHECK_FILE_EXT_SKIP, `POSTMASTER_ABUSE', ` warn condition = ${if eq{${extract{abuse_or_postmaster}{$acl_m_wl_flag_msg}}}{1}{yes}{no}} set acl_m0 = skip ') dnl ifelse_strstr(confCHECK_FILE_EXT_SKIP, `POSTMASTER_ABUSE', `') warn condition = ${if eq{$acl_m0}{}{yes}{no}} decode = default set acl_m0 = ${lookup{$mime_filename}wildlsearch{CONFDIR/access-mime-filename}{EXPAND_VALUE}{}} condition = ${if eq{$acl_m0}{}{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_mime_filename_msg = ${if eq{$acl_m0}{}{${if eq{$acl_m2}{}{}{: $acl_m2}}}{: $acl_m0}} set acl_m0 = ${if eq{$acl_m0}{}{Attachment filename blacklisted${if eq{$acl_m2}{}{}{: $acl_m2}}}{$acl_m0}} set acl_m2 = ${if eq{$acl_m2}{}{Access denied}{$acl_m2}} ifdef(`confCHECK_MIME_CONTENT_TYPE', `ifelse(confCHECK_MIME_CONTENT_TYPE, `NO', `dnl', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} condition = ${if eq{$acl_m1}{}{yes}{no}} set acl_m0 = ${lookup{$mime_content_type}wildlsearch{CONFDIR/access-mime-content-type}{EXPAND_VALUE}{}} condition = ${if eq{$acl_m0}{}{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_mime_filename_msg = ${if eq{$acl_m0}{}{${if eq{$acl_m2}{}{}{: $acl_m2}}}{: $acl_m0}} set acl_m0 = ${if eq{$acl_m0}{}{Attachment Content-Type blacklisted${if eq{$acl_m2}{}{}{: $acl_m2}}}{$acl_m0}} set acl_m2 = ${if eq{$acl_m2}{}{Access denied}{$acl_m2}} ')') dnl ifdef(`confCHECK_MIME_CONTENT_TYPE', `ifelse(confCHECK_MIME_CONTENT_TYPE, `NO', `', `')') ifdef(`confCHECK_MIME_FILENAME_7Z', `ifelse(confCHECK_MIME_FILENAME_7Z, `NO', `dnl', `dnl ifdef(`confCHECK_MIME_FILENAME_UN7Z_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UN7Z_CMD), `1', `dnl', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} condition = ${if <{$mime_content_size}{confCHECK_MIME_FILENAME_MAX_ARC_SIZE}{yes}{no}} ifdef(`confCHECK_MIME_FILENAME_7Z_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_7Z_CONTENT_TYPE), `1', `dnl condition = ${if match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_7Z_EXT$\N}{yes}{no}} ',` dnl ifdef(`confCHECK_MIME_FILENAME_7Z_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_7Z_CONTENT_TYPE), `1', `')') condition = ${if or{\ {match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_7Z_EXT$\N}}\ {match{$mime_content_type}{(?i)confCHECK_MIME_FILENAME_7Z_CONTENT_TYPE}}\ }{yes}{no}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_7Z_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_7Z_CONTENT_TYPE), `1', `')') set acl_m0 = ${lookup{\ ${sg{${run{confCHECK_MIME_FILENAME_UN7Z_CMD $mime_decoded_filename}}}{confCHECK_MIME_FILENAME_UN7Z_REGEXP}{\$1}}|7z\ }wildlsearch{CONFDIR/access-mime-filename}{EXPAND_VALUE}{}} condition = ${if eq{$acl_m0}{}{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_mime_filename_msg = ${if eq{$acl_m0}{}{${if eq{$acl_m2}{}{}{: $acl_m2}}}{: $acl_m0}} set acl_m0 = ${if eq{$acl_m0}{}{Attachment filename blacklisted${if eq{$acl_m2}{}{}{: $acl_m2}}}{$acl_m0}} set acl_m2 = ${if eq{$acl_m2}{}{Access denied}{$acl_m2}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_UN7Z_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UN7Z_CMD), `1', `', `')') ')') dnl ifdef(`confCHECK_MIME_FILENAME_7Z', `ifelse(confCHECK_MIME_FILENAME_7Z, `NO', `', `')') ifdef(`confCHECK_MIME_FILENAME_ZIP', `ifelse(confCHECK_MIME_FILENAME_ZIP, `NO', `dnl', `dnl ifdef(`confCHECK_MIME_FILENAME_UNZIP_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNZIP_CMD), `1', `dnl', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} condition = ${if <{$mime_content_size}{confCHECK_MIME_FILENAME_MAX_ARC_SIZE}{yes}{no}} ifdef(`confCHECK_MIME_FILENAME_ZIP_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_ZIP_CONTENT_TYPE), `1', `dnl condition = ${if match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_ZIP_EXT$\N}{yes}{no}} ',` dnl ifdef(`confCHECK_MIME_FILENAME_ZIP_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_ZIP_CONTENT_TYPE), `1', `')') condition = ${if or{\ {match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_ZIP_EXT$\N}}\ {match{$mime_content_type}{(?i)confCHECK_MIME_FILENAME_ZIP_CONTENT_TYPE}}\ }{yes}{no}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_ZIP_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_ZIP_CONTENT_TYPE), `1', `')') set acl_m0 = ${lookup{\ ${sg{${run{confCHECK_MIME_FILENAME_UNZIP_CMD $mime_decoded_filename}}}{confCHECK_MIME_FILENAME_UNZIP_REGEXP}{\$1}}|zip\ }wildlsearch{CONFDIR/access-mime-filename}{EXPAND_VALUE}{}} condition = ${if eq{$acl_m0}{}{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_mime_filename_msg = ${if eq{$acl_m0}{}{${if eq{$acl_m2}{}{}{: $acl_m2}}}{: $acl_m0}} set acl_m0 = ${if eq{$acl_m0}{}{Attachment filename blacklisted${if eq{$acl_m2}{}{}{: $acl_m2}}}{$acl_m0}} set acl_m2 = ${if eq{$acl_m2}{}{Access denied}{$acl_m2}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_UNZIP_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNZIP_CMD), `1', `', `')') ')') dnl ifdef(`confCHECK_MIME_FILENAME_ZIP', `ifelse(confCHECK_MIME_FILENAME_ZIP, `NO', `', `')') ifdef(`confCHECK_MIME_FILENAME_RAR', `ifelse(confCHECK_MIME_FILENAME_RAR, `NO', `dnl', `dnl ifdef(`confCHECK_MIME_FILENAME_UNRAR_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNRAR_CMD), `1', `dnl', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} condition = ${if <{$mime_content_size}{confCHECK_MIME_FILENAME_MAX_ARC_SIZE}{yes}{no}} ifdef(`confCHECK_MIME_FILENAME_RAR_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_RAR_CONTENT_TYPE), `1', `dnl condition = ${if match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_RAR_EXT$\N}{yes}{no}} ',` dnl ifdef(`confCHECK_MIME_FILENAME_RAR_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_RAR_CONTENT_TYPE), `1', `')') condition = ${if or{\ {match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_RAR_EXT$\N}}\ {match{$mime_content_type}{(?i)confCHECK_MIME_FILENAME_RAR_CONTENT_TYPE}}\ }{yes}{no}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_RAR_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_RAR_CONTENT_TYPE), `1', `')') set acl_m0 = ${lookup{\ ${sg{${run{confCHECK_MIME_FILENAME_UNRAR_CMD $mime_decoded_filename}}}{confCHECK_MIME_FILENAME_UNRAR_REGEXP}{\$1}}|rar\ }wildlsearch{CONFDIR/access-mime-filename}{EXPAND_VALUE}{}} condition = ${if eq{$acl_m0}{}{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_mime_filename_msg = ${if eq{$acl_m0}{}{${if eq{$acl_m2}{}{}{: $acl_m2}}}{: $acl_m0}} set acl_m0 = ${if eq{$acl_m0}{}{Attachment filename blacklisted${if eq{$acl_m2}{}{}{: $acl_m2}}}{$acl_m0}} set acl_m2 = ${if eq{$acl_m2}{}{Access denied}{$acl_m2}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_UNRAR_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNRAR_CMD), `1', `', `')') ')') dnl ifdef(`confCHECK_MIME_FILENAME_RAR', `ifelse(confCHECK_MIME_FILENAME_RAR, `NO', `', `')') ifdef(`confCHECK_MIME_FILENAME_ARJ', `ifelse(confCHECK_MIME_FILENAME_ARJ, `NO', `dnl', `dnl ifdef(`confCHECK_MIME_FILENAME_UNARJ_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNARJ_CMD), `1', `dnl', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} condition = ${if <{$mime_content_size}{confCHECK_MIME_FILENAME_MAX_ARC_SIZE}{yes}{no}} ifdef(`confCHECK_MIME_FILENAME_ARJ_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_ARJ_CONTENT_TYPE), `1', `dnl condition = ${if match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_ARJ_EXT$\N}{yes}{no}} ',` dnl ifdef(`confCHECK_MIME_FILENAME_ARJ_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_ARJ_CONTENT_TYPE), `1', `')') condition = ${if or{\ {match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_ARJ_EXT$\N}}\ {match{$mime_content_type}{(?i)confCHECK_MIME_FILENAME_ARJ_CONTENT_TYPE}}\ }{yes}{no}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_ARJ_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_ARJ_CONTENT_TYPE), `1', `')') set acl_m0 = ${lookup{\ ${sg{${run{confCHECK_MIME_FILENAME_UNARJ_CMD $mime_decoded_filename.}}}{confCHECK_MIME_FILENAME_UNARJ_REGEXP}{\$1}}|arj\ }wildlsearch{CONFDIR/access-mime-filename}{EXPAND_VALUE}{}} condition = ${if eq{$acl_m0}{}{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_mime_filename_msg = ${if eq{$acl_m0}{}{${if eq{$acl_m2}{}{}{: $acl_m2}}}{: $acl_m0}} set acl_m0 = ${if eq{$acl_m0}{}{Attachment filename blacklisted${if eq{$acl_m2}{}{}{: $acl_m2}}}{$acl_m0}} set acl_m2 = ${if eq{$acl_m2}{}{Access denied}{$acl_m2}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_UNARJ_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNARJ_CMD), `1', `', `')') ')') dnl ifdef(`confCHECK_MIME_FILENAME_ARJ', `ifelse(confCHECK_MIME_FILENAME_ARJ, `NO', `', `')') ifdef(`confCHECK_MIME_FILENAME_ACE', `ifelse(confCHECK_MIME_FILENAME_ACE, `NO', `dnl', `dnl ifdef(`confCHECK_MIME_FILENAME_UNACE_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNACE_CMD), `1', `dnl', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} condition = ${if <{$mime_content_size}{confCHECK_MIME_FILENAME_MAX_ARC_SIZE}{yes}{no}} ifdef(`confCHECK_MIME_FILENAME_ACE_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_ACE_CONTENT_TYPE), `1', `dnl condition = ${if match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_ACE_EXT$\N}{yes}{no}} ',` dnl ifdef(`confCHECK_MIME_FILENAME_ACE_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_ACE_CONTENT_TYPE), `1', `')') condition = ${if or{\ {match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_ACE_EXT$\N}}\ {match{$mime_content_type}{(?i)confCHECK_MIME_FILENAME_ACE_CONTENT_TYPE}}\ }{yes}{no}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_ACE_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_ACE_CONTENT_TYPE), `1', `')') set acl_m0 = ${lookup{\ ${sg{${run{confCHECK_MIME_FILENAME_UNACE_CMD $mime_decoded_filename}}}{confCHECK_MIME_FILENAME_UNACE_REGEXP}{\$1}}|ace\ }wildlsearch{CONFDIR/access-mime-filename}{EXPAND_VALUE}{}} condition = ${if eq{$acl_m0}{}{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_mime_filename_msg = ${if eq{$acl_m0}{}{${if eq{$acl_m2}{}{}{: $acl_m2}}}{: $acl_m0}} set acl_m0 = ${if eq{$acl_m0}{}{Attachment filename blacklisted${if eq{$acl_m2}{}{}{: $acl_m2}}}{$acl_m0}} set acl_m2 = ${if eq{$acl_m2}{}{Access denied}{$acl_m2}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_UNACE_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNACE_CMD), `1', `', `')') ')') dnl ifdef(`confCHECK_MIME_FILENAME_ACE', `ifelse(confCHECK_MIME_FILENAME_ACE, `NO', `', `')') ifdef(`confCHECK_MIME_FILENAME_GZ', `ifelse(confCHECK_MIME_FILENAME_GZ, `NO', `dnl', `dnl ifdef(`confCHECK_MIME_FILENAME_UNGZ_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNGZ_CMD), `1', `dnl', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} condition = ${if <{$mime_content_size}{confCHECK_MIME_FILENAME_MAX_ARC_SIZE}{yes}{no}} ifdef(`confCHECK_MIME_FILENAME_GZ_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_GZ_CONTENT_TYPE), `1', `dnl condition = ${if match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_GZ_EXT$\N}{yes}{no}} ',` dnl ifdef(`confCHECK_MIME_FILENAME_GZ_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_GZ_CONTENT_TYPE), `1', `')') condition = ${if or{\ {match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_GZ_EXT$\N}}\ {match{$mime_content_type}{(?i)confCHECK_MIME_FILENAME_GZ_CONTENT_TYPE}}\ }{yes}{no}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_GZ_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_GZ_CONTENT_TYPE), `1', `')') set acl_m0 = ${lookup{\ ${sg{${run{confCHECK_MIME_FILENAME_UNGZ_CMD $mime_decoded_filename}}}{confCHECK_MIME_FILENAME_UNGZ_REGEXP}{\$1}}|gz\ }wildlsearch{CONFDIR/access-mime-filename}{EXPAND_VALUE}{}} condition = ${if eq{$acl_m0}{}{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_mime_filename_msg = ${if eq{$acl_m0}{}{${if eq{$acl_m2}{}{}{: $acl_m2}}}{: $acl_m0}} set acl_m0 = ${if eq{$acl_m0}{}{Attachment filename blacklisted${if eq{$acl_m2}{}{}{: $acl_m2}}}{$acl_m0}} set acl_m2 = ${if eq{$acl_m2}{}{Access denied}{$acl_m2}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_UNGZ_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNGZ_CMD), `1', `', `')') ')') dnl ifdef(`confCHECK_MIME_FILENAME_GZ', `ifelse(confCHECK_MIME_FILENAME_GZ, `NO', `', `')') ifdef(`confCHECK_MIME_FILENAME_TGZ', `ifelse(confCHECK_MIME_FILENAME_TGZ, `NO', `dnl', `dnl ifdef(`confCHECK_MIME_FILENAME_UNTGZ_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNTGZ_CMD), `1', `dnl', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} condition = ${if <{$mime_content_size}{confCHECK_MIME_FILENAME_MAX_ARC_SIZE}{yes}{no}} ifdef(`confCHECK_MIME_FILENAME_TGZ_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_TGZ_CONTENT_TYPE), `1', `dnl condition = ${if match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_TGZ_EXT$\N}{yes}{no}} ',` dnl ifdef(`confCHECK_MIME_FILENAME_TGZ_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_TGZ_CONTENT_TYPE), `1', `')') condition = ${if or{\ {match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_TGZ_EXT$\N}}\ {match{$mime_content_type}{(?i)confCHECK_MIME_FILENAME_TGZ_CONTENT_TYPE}}\ }{yes}{no}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_TGZ_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_TGZ_CONTENT_TYPE), `1', `')') set acl_m0 = ${lookup{\ ${run{confCHECK_MIME_FILENAME_UNTGZ_CMD $mime_decoded_filename}}|tgz\ }wildlsearch{CONFDIR/access-mime-filename}{EXPAND_VALUE}{}} condition = ${if eq{$acl_m0}{}{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_mime_filename_msg = ${if eq{$acl_m0}{}{${if eq{$acl_m2}{}{}{: $acl_m2}}}{: $acl_m0}} set acl_m0 = ${if eq{$acl_m0}{}{Attachment filename blacklisted${if eq{$acl_m2}{}{}{: $acl_m2}}}{$acl_m0}} set acl_m2 = ${if eq{$acl_m2}{}{Access denied}{$acl_m2}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_UNTGZ_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNTGZ_CMD), `1', `', `')') ')') dnl ifdef(`confCHECK_MIME_FILENAME_TGZ', `ifelse(confCHECK_MIME_FILENAME_TGZ, `NO', `', `')') ifdef(`confCHECK_MIME_FILENAME_TBZ2', `ifelse(confCHECK_MIME_FILENAME_TBZ2, `NO', `dnl', `dnl ifdef(`confCHECK_MIME_FILENAME_UNTBZ2_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNTBZ2_CMD), `1', `dnl', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} condition = ${if <{$mime_content_size}{confCHECK_MIME_FILENAME_MAX_ARC_SIZE}{yes}{no}} ifdef(`confCHECK_MIME_FILENAME_TBZ2_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_TBZ2_CONTENT_TYPE), `1', `dnl condition = ${if match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_TBZ2_EXT$\N}{yes}{no}} ',` dnl ifdef(`confCHECK_MIME_FILENAME_TBZ2_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_TBZ2_CONTENT_TYPE), `1', `')') condition = ${if or{\ {match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_TBZ2_EXT$\N}}\ {match{$mime_content_type}{(?i)confCHECK_MIME_FILENAME_TBZ2_CONTENT_TYPE}}\ }{yes}{no}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_TBZ2_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_TBZ2_CONTENT_TYPE), `1', `')') set acl_m0 = ${lookup{\ ${run{confCHECK_MIME_FILENAME_UNTBZ2_CMD $mime_decoded_filename}}|tbz2\ }wildlsearch{CONFDIR/access-mime-filename}{EXPAND_VALUE}{}} condition = ${if eq{$acl_m0}{}{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_mime_filename_msg = ${if eq{$acl_m0}{}{${if eq{$acl_m2}{}{}{: $acl_m2}}}{: $acl_m0}} set acl_m0 = ${if eq{$acl_m0}{}{Attachment filename blacklisted${if eq{$acl_m2}{}{}{: $acl_m2}}}{$acl_m0}} set acl_m2 = ${if eq{$acl_m2}{}{Access denied}{$acl_m2}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_UNTBZ2_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNTBZ2_CMD), `1', `', `')') ')') dnl ifdef(`confCHECK_MIME_FILENAME_TBZ2', `ifelse(confCHECK_MIME_FILENAME_TBZ2, `NO', `', `')') ifdef(`confCHECK_MIME_FILENAME_TXZ', `ifelse(confCHECK_MIME_FILENAME_TXZ, `NO', `dnl', `dnl ifdef(`confCHECK_MIME_FILENAME_UNTXZ_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNTXZ_CMD), `1', `dnl', `dnl warn condition = ${if eq{$acl_m0}{}{yes}{no}} condition = ${if <{$mime_content_size}{confCHECK_MIME_FILENAME_MAX_ARC_SIZE}{yes}{no}} ifdef(`confCHECK_MIME_FILENAME_TXZ_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_TXZ_CONTENT_TYPE), `1', `dnl condition = ${if match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_TXZ_EXT$\N}{yes}{no}} ',` dnl ifdef(`confCHECK_MIME_FILENAME_TXZ_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_TXZ_CONTENT_TYPE), `1', `')') condition = ${if or{\ {match{$mime_filename}{\N(?i)\.confCHECK_MIME_FILENAME_TXZ_EXT$\N}}\ {match{$mime_content_type}{(?i)confCHECK_MIME_FILENAME_TXZ_CONTENT_TYPE}}\ }{yes}{no}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_TXZ_CONTENT_TYPE', `ifelse(len(X`'confCHECK_MIME_FILENAME_TXZ_CONTENT_TYPE), `1', `')') set acl_m0 = ${lookup{\ ${run{confCHECK_MIME_FILENAME_UNTXZ_CMD $mime_decoded_filename}}|txz\ }wildlsearch{CONFDIR/access-mime-filename}{EXPAND_VALUE}{}} condition = ${if eq{$acl_m0}{}{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_mime_filename_msg = ${if eq{$acl_m0}{}{${if eq{$acl_m2}{}{}{: $acl_m2}}}{: $acl_m0}} set acl_m0 = ${if eq{$acl_m0}{}{Attachment filename blacklisted${if eq{$acl_m2}{}{}{: $acl_m2}}}{$acl_m0}} set acl_m2 = ${if eq{$acl_m2}{}{Access denied}{$acl_m2}} ')') dnl ifdef(`confCHECK_MIME_FILENAME_UNTXZ_CMD', `ifelse(len(X`'confCHECK_MIME_FILENAME_UNTXZ_CMD), `1', `', `')') ')') dnl ifdef(`confCHECK_MIME_FILENAME_TXZ', `ifelse(confCHECK_MIME_FILENAME_TXZ, `NO', `', `')') # warn warn condition = ${if match{$acl_m1}{warn}{yes}{no}} add_header = X-Warn-Attachment: attachment filename $mime_filename blacklisted${acl_m_check_mime_filename_msg} log_message = $acl_m0${if eq{${extract{pause}{$acl_m1}}}{}{}{: message delayed for ${extract{pause}{$acl_m1}}s}} # 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 # 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-Attachment: attachment filename $mime_filename blacklisted${acl_m_check_mime_filename_msg} log_message = message will be quarantined: attachment filename $mime_filename blacklisted${acl_m_check_mime_filename_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 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: attachment filename $mime_filename blacklisted${acl_m_check_mime_filename_msg} set acl_m_fakereject = \ message will be quarantined and rejected: attachment filename $mime_filename blacklisted${acl_m_check_mime_filename_msg}\ |X-Quarantine-Attachment: attachment filename $mime_filename blacklisted${acl_m_check_mime_filename_msg}\ |$acl_m2 set acl_m_add_x_orig_rcpt = yes set acl_m_quarantined = $acl_m_quarantined envelope # !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 condition = ${if match{$acl_m1}{defer}{yes}{no}} log_message = $acl_m0 message = $acl_m2 drop condition = ${if match{$acl_m1}{drop}{yes}{no}} log_message = $acl_m0 message = $acl_m2 discard condition = ${if match{$acl_m1}{discard}{yes}{no}} log_message = $acl_m0 warn condition = ${if eq{${extract{fakereject}{$acl_m1}}}{00}{yes}{no}} log_message = message will be fakerejected: $acl_m0 set acl_m_fakereject = \ message will be fakerejected: $acl_m0\ |X-Fakerejected: $acl_m0\ |$acl_m2 set acl_m_add_x_orig_rcpt = yes 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', `', `')') ') dnl ifelse(SECTION, `ACL_CHECK_MIME', `')