LINUX.ORG.RU
ФорумAdmin

Поделитесь, плз, фильтром для Sieve, режущим опасные вложения.

 , ,


0

1

Здравствуйте. Помогите, плз, бьюсь второй день, но не могу осилить простую вещь, фильтр, запрещающий приём писем с вложениями exe com cmd ps1 и т.п. Поиск курил. Сейчас фильтр выглядит так, но он просто в спам перекладывает письма, а по задумке должен отправлять обратно отлуп (ну и для меня загадка, что делает код с 7й строки, это по умолчанию при установке mailcow было, нужно ли это вообще оставлять:

require [«reject»,«body»,«regex»,«mailbox»,«fileinto»];

if header :matches «X-Attached» [«*.com»,«*.exe»,«*.bat»,«*.cmd»]

{

reject «Message rejected, this attachment type is blocked.»;

stop;

}

# global_sieve_before script

# global_sieve_before -> user sieve_before (mailcow UI) -> user sieve_after (mailcow UI) -> global_sieve_after

if header :contains [«Chat-Version»] [«»] {

if mailboxexists «DeltaChat» {

fileinto «DeltaChat»;

} else {

fileinto :create «DeltaChat»;

}

stop;

}

Перемещено hobbit из general



Последнее исправление: WindSurfeR (всего исправлений: 1)

А твой почтовый сервер вообще поддерживает reject? Или его как-то настроить надо, чтобы он вообще знал, как отправлять отлупы? Можешь написать фильтр, который отправляет отлуп по какому-нибудь другому критерию?

AEP ★★★★★
()
Ответ на: комментарий от AEP

Вот в таком виде reject работает, но тогда фильтр косит и PDF, и JPG, и офисные вложения. Уже мозг себе сломал.

require [«reject»,«body»,«regex»,«mailbox», «fileinto»];

if anyof (body :raw :regex [«filename=..exe»,«filename=..com»,«filename=..cmd»,«filename=..bat»,«filename=.*.ps1»]) {

reject text: doc, exe and etc are dangerous file extensions. Nice try. . ; }

global_sieve_before script

global_sieve_before -> user sieve_before (mailcow UI) -> user sieve_after (mailcow UI) -> global_sieve_after

if header :contains [«Chat-Version»] [""] { if mailboxexists «DeltaChat» { fileinto «DeltaChat»; } else { fileinto :create «DeltaChat»; } stop; }

WindSurfeR
() автор топика
Ответ на: комментарий от Boatmen

Не делал. Даже такого файла нет. У меня mailcow docerized. Установленный по их стандартному мануалу? примитивней некуда. Вот всё уже вылизал в нём, всё настроил и работает. Не работает только одна эта фишка. Причём, если делать примитивный фильтр sieve для reject, типа от мыла такого-то если почта, то reject - всё работает. Как только добавляю условие с расширением файлов, перестаёт работать. Уж думал, что rspamd перехватывает раньше Sieve, отключил спам, теперь всё сыпет просто во Входящие.

Склоняюсь с тому, что в Sieve просто не работают команды с условиями расширений файлов.

WindSurfeR
() автор топика
Ответ на: комментарий от vel

Спасибо за наводку. В итоге вообще пошёл кардинальным путём, может кому пригодится радикальное средство:

Добавляю в конфиг postfix`а main.cf две строки:

header_checks = regexp:/opt/mailcow-dockerized/data/conf/postfix/header_checks
mime_header_checks = regexp:/opt/mailcow-dockerized/data/conf/postfix/mime_header_checks

Создаю в этой папке эти файлы

touch header_checks mime_header_checks
В файле header_checks добавляю строки по кол-ву нужных расширений (соответственно меняем exe на то, что ещё нужно, cmd, com, bat, ps1, js и т.д. и .т.п

/^Content-(Type|Disposition):.*name[[:space:]]*=.*\.exe/ REJECT

В файле mime_header_checks добавляем по тому же принципу

/^\s*Content-(Disposition|Type).*name\s*=\s*"?(.+(\.|2E)exe)(\?=)?"?\s*$/ REJECT

Рестарчу контейнеры и всё работает. Маленький минус - письмо с отлупом не улетает отправителю.

WindSurfeR
() автор топика
Ответ на: комментарий от WindSurfeR

Есть забавный подводный камень. Реальный путь до файлов такой:

/opt/mailcow-dockerized/data/conf/postfix/

В конфиге main.cf указывается виртуализованный докером путь:

/opt/postfix/conf/

Если указать реальный, то postfix сходит с ума и приём и отправка вообще отваливаются с ошибкой error write message.

WindSurfeR
() автор топика