Наступал на нечто подобное, когда сам борол каспера. Как понял, суть там в наличии нескольких конфигураций сендмейла, одной с кавкипером (для отлова писем через локал_рул_0), второй без него (для отсыла писем по назначению), ну и сказывается запуск сендмейла с ключом -C (альтернативная конфигурация), тут у меня тоже вылазили глюки из-за невозможности сделать setuid. Поборол все вот так (FreeBSD, мейлхаб, SMTP+UUCP):
- на основании своей боевой конфы сендмейла (.mc) создал новою конфу с
добавлениями, необходимыми касперу, и
сгенерил 2 конфигурации сендмейла через m4, как и положено. Одну, с
каспером (kav+), назвал kav.cf, вторую, без каспера(kav-),
назвал kav_no.cf и поместил обе в /etc/mail
- руками создал альтернативный спул-каталог /var/spool/mqueue.kav с овнером и модами как у основного спул-каталога /var/spool/mqueue:
drwxr-xr-x root daemon mqueue
drwxr-xr-x root daemon mqueue.kav
- запустил вебтьюнер и в нем настроил демона как мне надо обычным
образом, а вот кавкипера настроил на запуск сендмейла из-под себя
не с альтернативной, а как бы стандартной конфой, чтоб сендмейл
не обиделся и мог делать сетуид когда ему хочется, что-то типа вот такого:
Sender mailer: smtp:(/usr/sbin/sendmail -bs)
Recipient mailer: smtp:(/usr/sbin/sendmail -bs)
Admin mailer: smtp:(/usr/sbin/sendmail -bs)
на закладке main дефолтовой конфы кавкипера
- отменил обычную загрузку сендмейла при перегрузке тазика
/etc/rc.conf ->
sendmail_enable="NO"
- откорректировал скрипт запуска каспера для запуска только демона и
веб-тьюнера, перебросив его из /usr/local/etc/rc.d в /usr/local/sbin
/usr/local/sbin/kavd.sh ->
RUN_DAEMON="Y"
RUN_MONITOR="N"
RUN_KAVUCC="N"
RUN_HTTPD="Y"
- в файл локальной загрузки /etc/rc.local внес строки запуска каспера
и сендмейла вот таким образом:
# Start KAV ---------------------------------------
# First start KAV Daemon+httpd
echo -n ' KAVDaemon+httpd...' ; /bin/sh /usr/local/sbin/kavd.sh start
echo 'started.'
# Next start sendmail with KAV+ configuration
cp -f /etc/mail/kav.cf /etc/mail/sendmail.cf
/usr/sbin/sendmail -bd -q10m B8BITMIME
# At last restore KAV- configuration and start sendmail for queueing
cp -f /etc/mail/kav_no.cf /etc/mail/sendmail.cf
/usr/sbin/sendmail -q10m B8BITMIME
# -------------------------------------------------
Суть всех телодвижений - вручную подменять конфигурацию сендмейла
и стартовать его тоже как-бы вручную, первый раз на 25 порт с
конфигурацией, включающей кавкипера и отлов всех писем, а второй раз
для обработки стандартной очереди - уже с конфигурацией без каспера, при
этом эта же стандартная беcкасперовая конфигурация используется при
вызове сендмейла из-под кавкипера после проверки писем и отсыла их
по назначению дальше. В таком виде гнусно обманутый сендмейл может
делать сетуид и прочие свои дела без всяких ограничений, так как
формально он запущен как бы с основной конфигурацией.
В таком виде живет около полугода, пока из глюков заметил только неумение проверять архивы, сделанные винраром\винзипом (помечает как поврежденные), неумение ротировать логи (или у меня руки кривые?), ну и пару раз таки выпал в кору. В остальном вроде все исправно...
Единственное неудобство - при отсылке почты локально, от данного хоста, при использвании mail письма не проверяются, приходится вместо него вызывать sendmail с альтернативной конфигурацией, включающей кавкипера, тогда проверяет и локально отправляемые письма.
|