Настройка amavisd-new, блокировать UNCHECKED письма и направлять их в карантин

Для чего это:

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

Обсуждение закрыто.