Для чего это:
Встречается ситуация, когда через фильтр 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
И тестируем.