>Пасибо,за направление прорабатываю.
>да, для тех кому сложно - ньюанс:
- clamav-milter от clamav-0.88.4 - сравнивает значение сокета заданное ему в качестве
параметра с тем ЧТО ОН НАШЕЛ в sendmail.cf и если разные, сообщает об этом.
Пример:
- в sendmail.mc описываем milter-фильтер:
...
dnl MILTER for clamav-milter - это комментарий
INPUT_MAIL_FILTER(`clamav', `S=local:/var/run/clamav/clamav-milter.socket,T=S:4m;R:4m')
dnl If we plan to use more then one milter-filter - это комментарий
define(`confINPUT_MAIL_FILTER', `clamav')
Тот сокет что мы задали в INPUT_MAIL_FILTER: local:/var/run/clamav/clamav-milter.socket
ИМЕННО его НУЖНО использовать в параметрах старта clamav-milter, потому как ОН создаст
этот сокет и они ОБА ДОЛЖНЫ использовать ОДИН и ТОТ ЖЕ сокет для взамодействия.
Отсутствие флага F в INPUT_MAIL_FILTER или если он будет пустой:
INPUT_MAIL_FILTER(`clamav', `S=local:/var/run/clamav/clamav-milter.socket,F=,T=S:4m;R:4m')
означает что в случае ЗАТЫКА MILTER'а, почта будет обрабатываться ДАЛЬШЕ sendmail'ом
без участия MILTER.
Если мы собираемя использовать НЕСКОЛЬКО фильтров, то правильно будет задать:
define(`confINPUT_MAIL_FILTER', `clamav') - и затем добавлять последующие фильтры которые
будем подключать через INPUT_MAIL_FILTER.
Понятно что проверка НА ВИРУС должна быть ПОСЛЕДНЕЙ, те после разных GREYLIST, SPF, SPAM,
те когда данные УДОВЛЕТВОРИЛИ нашим проверкам:
dnl greylist - first, clamav - second
define(`confINPUT_MAIL_FILTER', `greylist, clamav')
dnl GreyList
INPUT_MAIL_FILTER(`greylist',`S=local:/var/milter-greylist/milter-greylist.sock')
define(`confMILTER_MACROS_CONNECT', `j, {if_addr}')
define(`confMILTER_MACROS_HELO', `{verify}, {cert_subject}')
define(`confMILTER_MACROS_ENVFROM', `i, {auth_authen}')
dnl Clamav
INPUT_MAIL_FILTER(`clamav', `S=local:/var/run/clamav/clamav-milter.socket,F=,T=S:4m;R:4m')
Ну и для проверки ручной старт clamav-milter:
# clamav-milter --config-file=/etc/clamd.conf --external --max-children=50 --force-scan --postmaster-only --dont-wait --dont-log-clean --noreject local:/var/run/clamav/clamav-milter.socket
прим.: быть осторожным с оЧепятками в написании опций в man clamav-milter
и/или clamav-milter --help
некоторые важные опции:
--external - если есть, то clamav-milter будет передавать данные на проверку
демону clamd (наиболее надежный вариант)
--local - сканировать почту посланную с машин локальной сети
--outgoing - сканировать почту отправленную с локальной машины
--force-scan замена верхним двум - сканировать ВСЮ почту
--bounce - отправлять уведомления отправителю и получателю о вирусе,
строго НЕрекомендую
--postmaster-only - отправлять уведомления только на postmaster, использую на момент
отладки, затем --quiet
--quiet - НИКАКИХ уведомлений, игнорируются --bounce и другие
--max-children - максимальное кол-во одновременных сканов
--dont-wait - сказать удаленному MTA НЕ ЖДАТЬ завершения max-children,
а повторить отправку позже
Если не задан параметр --external - провеку будет осуществлять clamav-milter, а у него
с этим бывали большие проблемы, --noreject - молча сглатывает почту с ВИРУСАМИ и
тихо грохает ее если не задан карантин (по мне нафик он не нужен) и используется --quiet
Если хотите удаленному MTA выдавать REJECT'ы 550/554 - УБЕРИТЕ ключ --noreject
Вроде самое важное расписал, остальное НА ВКУС и ЦВЕТ.
Да, последний ньюанс, если clamav-milter сообщает: clamd.log permission denied
при использовании clamd и clamav-milter с User clamav - простой сделайте:
# остановите clamd
# chown clamav /path/clamd.log
# срьщв 644 /path/clamd.log
# запустите clamd
теперь при запуске clamav-milter все будет ok