Встречается ситуация, когда через фильтр amavisd-new проходят письма, которые по каким либо причинам не удается проверить.
Например, письмо с прикрепленным архивом, глубина вложений которого превосходит значение $MAXLEVELS или количество файлов в котором превосходит значение $MAXFILES будет помечено как UNCHECKED.
Для повышения безопасности можно заблокировать UNCHECKED письма и поместить их в карантин
По умолчанию, в настройках amavisd-new нет готовых переменных отвечающих за блокировку и помещение в карантин писем помеченных как UNCHECKED, но зато есть хеши:
-
%final_destiny_by_ccat;
-
%quarantine_method_by_ccat;
-
%*_maps_by_ccat
c их помощью можно добавить требуемые действия для писем, помеченных как UNCHECKED.
Настройка UNCHECKED писем:
Условия:
-
amavisd-new настроен и функционирует;
-
для писем с запрещенными вложениями настроена:
-
блокировка ($final_banned_destiny = D_DISCARD);
-
помещение в карантин (по умолчанию есть);
-
уведомление получателя ($warnbannedrecip = 1);
-
уведомление админа (по умолчанию есть если указан адрес),
адрес как минимум для админа ($virus_admin = "admin\@$mydomain"),
дополнительно можно указать ($banned_admin = "banadmin\@$mydomain").
Процесс:
Основываясь на настройках для писем с запрещенными вложениями, для UNCHECKED писем
используем хеши %final_destiny_by_ccat, %quarantine_method_by_ccat, %*_maps_by_ccat.
Добавим в /etc/amavisd.conf слудующие строки:
$final_destiny_by_ccat{+CC_UNCHECKED} = D_DISCARD;
$quarantine_method_by_ccat{+CC_UNCHECKED} = 'local:unchecked-%m';
$quarantine_to_maps_by_ccat{+CC_UNCHECKED} = sub { ca('banned_quarantine_to_maps') };
$admin_maps_by_ccat{+CC_UNCHECKED} = sub { ca('banned_admin_maps') };
$warnrecip_maps_by_ccat{+CC_UNCHECKED} = sub { ca('warnbannedrecip_maps') };
После чего, перегружаем службу amavisd-new. Например, для openSUSE так:
# rcamavis reload
И тестируем.