# # проверка имен прикрепленных файлов # # NO - не проводить проверку имен прикрепленных файлов # YES - проводить проверку имен прикрепленных файлов # define(`confCHECK_MIME_FILENAME', `NO')# # # список шаблонов имен прикрепленных файлов находится в файле CONFDIR/access-mime-filename # в виде: # filename : действие : сообщение : сообщение 2 # # где # filename - имя прикрепленного файла в виде полного имени, wildcard # или регулярного выражения # действие - действие, применяемое к письму # сообщение - ответ SMTP клиенту (может отсутствовать) # сообщение 2 - сообщение в файл протокола или в добавляемое поле # заголовка (может отсутствовать) # # в качестве "действия" могут выступать: # ok - исключить имя файла из проверки # warn - выдача предупреждения в лог файл и добавление в # заголовки сообщения поля X-Warn-Attachment # текст сообщения об ошибке может быть указан через # двоеточие (см. выше "сообщение2") # deny или reject - отказ в приеме сообщения # fakereject - фиктивный отказ в приеме сообщения # drop - отказ в приеме сообщения с обрывом соединения # discard - прием письма без доставки получателю # defer - возврат клиенту временной ошибки 4xx # quarantine - принять письмо с сохранением в карантин без доставки получателям # greylist=xx - добавление xx баллов к счетчику опционального greylisting'а # greylisting=xx - синоним greylist=xx # reject=yy - добавление yy баллов к счетчику опционального reject'а # deny=yy - синоним reject=yy # delay=zz - задержка на zz секунд перед продолжением обработки сообщения # pause=zz - синоним delay=zz # # исключение из проверки расширений файлов (список, значения указываются через пробел) # AUTH - не проводить проверку для аутентифицированных сообщений # RELAY_FROM - не проводить проверку для исходящих сообщений # WHITE_LIST_RELAYS - не проводить проверку для сообщений из white_list_relays # WHITE_LIST_SENDERS - не проводить проверку для сообщений от white_list_senders # POSTMASTER_ABUSE - не проводить проверку для postmaster/abuse # define(`confCHECK_MIME_FILENAME_SKIP', `AUTH RELAY_FROM POSTMASTER_ABUSE')# # # # максимальный размер проверяемого архива, kB # define(`confCHECK_MIME_FILENAME_MAX_ARC_SIZE', `2048')dnl # # # проверять имена файлов внутри zip архивов # NO - не проводить проверку имен файлов внутри zip архивов # YES - проводить проверку имен файлов внутри zip архивов # define(`confCHECK_MIME_FILENAME_ZIP', `NO')dnl # # командная строка для получения списка файлов zip архива # define(`confCHECK_MIME_FILENAME_UNZIP_CMD', `/usr/local/bin/unzip -l')dnl # # регулярное выражение для удаления лишних строк из списка файлов zip архива # define(`confCHECK_MIME_FILENAME_UNZIP_REGEXP', `\N(?:.*\n)*(?:-+(?:\s+-+)+\n)((?:.*\n)*)(?:-+(?:\s+-+)+\n)(?:.*\n)*\N')dnl # данное регулярное выражение сохраняет в $1 строки, находящиеся между строками # "--------- ---------- ----- ----" # и # "--------- ---------- ----- ----" # # # проверять имена файлов внутри rar архивов # NO - не проводить проверку имен файлов внутри rar архивов # YES - проводить проверку имен файлов внутри rar архивов # define(`confCHECK_MIME_FILENAME_RAR', `NO')dnl # # командная строка для получения списка файлов rar архива # define(`confCHECK_MIME_FILENAME_UNRAR_CMD', `/usr/local/bin/unrar l')dnl # # регулярное выражение для удаления лишних строк из списка файлов rar архива # define(`confCHECK_MIME_FILENAME_UNRAR_REGEXP', `\N(?:.*\n)*(?:-+(?:\s+-+)+\n)((?:.*\n)*)(?:-+(?:\s+-+)+\n)(?:.*\n)*\N')dnl # данное регулярное выражение сохраняет в $1 строки, находящиеся между строками # "----------- --------- ---------- ----- ----" # и # "----------- --------- ---------- ----- ----" # # # проверять имена файлов внутри 7z архивов # NO - не проводить проверку имен файлов внутри 7z архивов # YES - проводить проверку имен файлов внутри 7z архивов # define(`confCHECK_MIME_FILENAME_7Z', `NO')dnl # # командная строка для получения списка файлов 7z архива # define(`confCHECK_MIME_FILENAME_UN7Z_CMD', `/usr/local/bin/7z l')dnl # # регулярное выражение для удаления лишних строк из списка файлов 7z архива # define(`confCHECK_MIME_FILENAME_UN7Z_REGEXP', `\N(?:.*\n)*(?:-+(?:\s+-+)+\n)((?:.*\n)*)(?:-+(?:\s+-+)+\n)(?:.*\n)*\N')dnl # данное регулярное выражение сохраняет в $1 строки, находящиеся между строками # "------------------- ----- ------------ ------------ ------------------------" # и # "------------------- ----- ------------ ------------ ------------------------" # # # проверять имена файлов внутри arj архивов # NO - не проводить проверку имен файлов внутри arj архивов # YES - проводить проверку имен файлов внутри arj архивов # define(`confCHECK_MIME_FILENAME_ARJ', `NO')dnl # # командная строка для получения списка файлов arj архива # define(`confCHECK_MIME_FILENAME_UNARJ_CMD', `/usr/local/bin/unarj l')dnl # # регулярное выражение для удаления лишних строк из списка файлов arj архива # define(`confCHECK_MIME_FILENAME_UNARJ_REGEXP', `\N(?:.*\n)*(?:-+(?:\s+-+)+\n)((?:.*\n)*)(?:-+(?:\s+-+)+\n)(?:.*\n)*\N')dnl # данное регулярное выражение сохраняет в $1 строки, находящиеся между строками # "------------ ---------- ---------- ----- ----------------- -------- -----------" # и # "------------ ---------- ---------- ----- -----------------" # # # проверять имена файлов внутри ace архивов # NO - не проводить проверку имен файлов внутри ace архивов # YES - проводить проверку имен файлов внутри ace архивов # define(`confCHECK_MIME_FILENAME_ACE', `NO')dnl # # командная строка для получения списка файлов ace архива # define(`confCHECK_MIME_FILENAME_UNACE_CMD', `/usr/local/bin/unace l')dnl # # регулярное выражение для удаления лишних строк из списка файлов ace архива # define(`confCHECK_MIME_FILENAME_UNACE_REGEXP', `\N(?:.*\n)*(?:Date.+File\n)((?:.*\n)*)(?:listed: .+\)\n)(?:.*\n)*\N')dnl # данное регулярное выражение сохраняет в $1 строки, находящиеся между строками # "Date #Time #Packed #Size #Ratio#File" # и # "listed: 1 files, totaling 31.619 bytes (compressed 11.996)" # # # проверять имена файлов внутри gz архивов # NO - не проводить проверку имен файлов внутри gz архивов # YES - проводить проверку имен файлов внутри gz архивов #define(`confCHECK_MIME_FILENAME_GZ', `NO')dnl # # командная строка для получения списка файлов gz архива # define(`confCHECK_MIME_FILENAME_UNGZ_CMD', `/usr/bin/file')dnl # # регулярное выражение для удаления лишних строк из списка файлов gz архива # define(`confCHECK_MIME_FILENAME_UNGZ_REGEXP', `\N^(?:.+gzip compressed data, was ")(.+)(?:", last modified:.+)\N')dnl # данное регулярное выражение сохраняет в $1 имя файла, находящееся между # "xxx.gz: gzip compressed data, was "" # и # "", last modified: Thu Mar 10 14:27:21 2016, max speed, from FAT filesystem (MS-DOS, OS/2, NT)" # # # проверять имена файлов внутри tar.gz (tgz) архивов # NO - не проводить проверку имен файлов внутри tar.gz (tgz) архивов # YES - проводить проверку имен файлов внутри tar.gz (tgz) архивов # define(`confCHECK_MIME_FILENAME_TGZ', `NO')dnl # # командная строка для получения списка файлов tar.gz (tgz) архива # define(`confCHECK_MIME_FILENAME_UNTGZ_CMD', `/usr/bin/tar tzf')dnl # # # проверять имена файлов внутри tar.bz2 (tbz2) архивов # NO - не проводить проверку имен файлов внутри tar.bz2 (tbz2) архивов # YES - проводить проверку имен файлов внутри tar.bz2 (tbz2) архивов # define(`confCHECK_MIME_FILENAME_TBZ2', `NO')dnl # # командная строка для получения списка файлов tar.bz2 (tbz2) архива # define(`confCHECK_MIME_FILENAME_UNTBZ2_CMD', `/usr/bin/tar tyf')dnl # # # проверять имена файлов внутри tar.xz (txz) архивов # NO - не проводить проверку имен файлов внутри tar.xz (txz) архивов # YES - проводить проверку имен файлов внутри tar.xz (txz) архивов # define(`confCHECK_MIME_FILENAME_TXZ', `NO')dnl # # список расширений файлов # define(`confCHECK_MIME_FILENAME_TXZ_EXT', `(txz|tar\.xz)')dnl # # список типов файлов # define(`confCHECK_MIME_FILENAME_TXZ_CONTENT_TYPE', `')dnl # # командная строка для получения списка файлов tar.xz (txz) архива # define(`confCHECK_MIME_FILENAME_UNTXZ_CMD', `/usr/bin/tar tJf')dnl # # # по регулярным выражениям из CONFDIR/access-mime-filename будет # проверяться сразу весь список файлов архива с суффиксом в виде # разделителя "|" и расширения имени файла архива # # пример регулярного выражения для проверки имен файлов внутри архивов: # \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) # # пример регулярного выражения для проверки наличия архивов внутри других архивов: # \N^(?i)(.+\n)*.+\.(rar|zip|7z|tgz|tbz2)\n(.+\n)*\|(rar|zip|7z|tgz|tbz2|txz)$\N : warn : Archive found in archive ($mime_filename) # winmail.dat : ok #\N^(?i).+\.(ace|lzh)$\N : warn : Attachment with prohibited extension found ($mime_filename) #\N^(?i).+\.[a-z]{3}\.(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 : warn deny : Attachment with double extension found ($mime_filename) #\N^(?i).+\.(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 : warn : Attachment with suspicious extension found ($mime_filename) #\N^(?i).+\.(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)\.(gz|bz2|xz)$\N : warn deny : Attachment with suspicious extension found in archive ($mime_filename) #\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|arj|gz|tgz|tbz2|txz)$\N : warn deny : Attachment with suspicious extension found in archive ($mime_filename) #\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)*\|(arj)$\N : warn deny : Attachment with suspicious extension found in archive ($mime_filename) #\N^(?i)(.+\n)*.+\.(rar|zip|7z|tgz|tbz2|txz|tar\.gz|tar\.bz2|tar\.xz)\n(.+\n)*\|(rar|zip|7z|tgz|tbz2|txz)$\N : warn : Archive found in archive ($mime_filename)