dnl dnl проверка расширений прикрепленных файлов dnl dnl доступно с exiscan-acl-4.30-16 dnl NO - не проводить проверку dnl WARN - вывода в лог файл предупреждения dnl REJECT - возврата клиенту кода 5xx dnl FAKEREJECT - возврата клиенту кода 5xx с одновременной доставкой сообщения dnl define(`confCHECK_FILE_EXT', `FAKEREJECT')dnl dnl dnl список блокируемых расширений файлов (список, значения указываются через двоеточие) dnl define(`confCHECK_FILE_EXT_LIST', `com:exe:bat:cmd:lnk:scr:pif:vbs:js:dll:hlp:chm:shs')dnl dnl define(`confCHECK_FILE_EXT_LIST', `exe:com:bat:cmd:vbs:pl:bas:js:java:reg:shs:pif:scr:dll:ssh:chm:hlp:lnk:html:htm:shtml:shtm')dnl dnl dnl исключение из проверки расширений файлов (список, значения указываются через пробел) dnl AUTH - не проводить проверку для аутентифицированных сообщений dnl RELAY_FROM - не проводить проверку для исходящих сообщений dnl WHITE_LIST_RELAYS - не проводить проверку для сообщений из white_list_relays dnl WHITE_LIST_SENDERS - не проводить проверку для сообщений из white_list_senders dnl define(`confCHECK_FILE_EXT_SKIP', `AUTH RELAY_FROM')dnl dnl dnl при использовании WARN или FAKEREJECT можно в системном фильтре блокировать доставку сообщений dnl и при этом сохранять их в отдельном каталоге dnl ifelse(SECTION, `MAIN', ` ifelse(confCHECK_FILE_EXT, `FAKEREJECT', ` define(`confFAKE_REJECT', `YES')dnl ') ') ifelse(SECTION, `ACL_CHECK_MIME', ` # проверка расширений прикрепленных файлов warn set acl_m0 = skip ifelse_strstr(confCHECK_FILE_EXT_SKIP, `AUTH', ` ! authenticated = * ') ifelse_strstr(confCHECK_FILE_EXT_SKIP, `RELAY_FROM', ` ! hosts = +relay_from_hosts ') ifelse_strstr(confCHECK_FILE_EXT_SKIP, `WHITE_LIST_RELAYS', `ifdef(`confWHITE_LIST_RELAYS', `ifelse(confWHITE_LIST_RELAYS, `NO', `', ` ! hosts = +relay_white_list ')')') ifelse_strstr(confCHECK_FILE_EXT_SKIP, `WHITE_LIST_SENDERS', `ifdef(`confWHITE_LIST_SENDERS', `ifelse(confWHITE_LIST_SENDERS, `NO', `', ` ! senders = @@wildlsearch;CONFDIR/senders-whitelist ')')') set acl_m0 = no_skip define(`confCHECK_FILE_EXT_LIST', semicolon2pipe(confCHECK_FILE_EXT_LIST)) ifelse(confCHECK_FILE_EXT, `REJECT', `dnl deny condition = ${if eq{$acl_m0}{skip}{no}{yes}} condition = ${if eq{${extract{abuse_or_postmaster}{$acl_m_wl_flag_msg}}}{1}{no}{yes}} condition = ${if match{$mime_filename}\ {\N(?i)\.(confCHECK_FILE_EXT_LIST)$\N}{yes}{no}} message = 5.7.1 Executables denied due to the local security policy (${message_id}) log_message = Attachments with suspicious extension ($mime_filename) logwrite = original recipients: $recipients ') ifelse(confCHECK_FILE_EXT, `WARN', `dnl warn condition = ${if eq{$acl_m0}{skip}{no}{yes}} condition = ${if eq{${extract{abuse_or_postmaster}{$acl_m_wl_flag_msg}}}{1}{no}{yes}} condition = ${if match{$mime_filename}\ {\N(?i)\.(confCHECK_FILE_EXT_LIST)$\N}{yes}{no}} log_message = Attachments with suspicious extension ($mime_filename) add_header = X-Warn-Attachment: Attachment with suspicious extension ($mime_filename) ') ifelse(confCHECK_FILE_EXT, `FAKEREJECT', `dnl warn condition = ${if eq{$acl_m0}{skip}{no}{yes}} condition = ${if eq{${extract{abuse_or_postmaster}{$acl_m_wl_flag_msg}}}{1}{no}{yes}} condition = ${if match{$mime_filename}\ {\N(?i)\.(confCHECK_FILE_EXT_LIST)$\N}{yes}{no}} set acl_m_fakereject = \ Attachments with suspicious extension ($mime_filename)\ |X-Warn-Attachment: Attachment with suspicious extension ($mime_filename)\ |5.7.1 Executables denied due to the local security policy set acl_m_add_x_orig_rcpt = yes ') ')