The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Скрипт для объединения ClamAV + Postfix + SpamAssassin (clamav virus postfix spam filter)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: clamav, virus, postfix, spam, filter,  (найти похожие документы)
From: Дмитрий Козлов <dimman at kurskline.ru> Newsgroups: email Date: Mon, 21 Oct 2004 14:31:37 +0000 (UTC) Subject: Скрипт для объединения ClamAV + Postfix + SpamAssassin Написано много статей об интеграции ClamAV + Postfix + SpamAssassin с помощью Amavisd-new, clam-smtp и проч. Это добавляет проблем с настройкой дополнительного программного обеспечения. Зачастую достаточно одного скрипта, который справляется с поставленной задачей не хуже. Подразумевается, что postfix, clamav и spamassassin уже установлены. В файле master.cf исправляем строку: smtp inet n - n - - smtpd на smtp inet n - n - - smtpd -o content_filter=myfilter:dummy и добавляем myfilter unix - n n - - pipe flags=R user=clamav argv=/usr/local/av/myfilter.sh -f ${sender} -- ${recipient} и собственно пишем скрипт /usr/local/av/myfilter.sh ------------------------------------------------------------ #!/bin/sh INSPECT_DIR=/tmp #Каталог куда будут сохраняться письма для сканирования SENDMAIL="/usr/local/sbin/sendmail -i" VIRUSADMIN="postmaster@мойдомен.ru" # адрес для уведомлениий EX_TEMPFAIL=75 EX_UNAVAILABLE=69 # строка для запуска spamassassin FILTER_SPAMC="/usr/local/bin/spamc -u spamfilter -U /var/run/spamd.sock" trap "rm -f $INSPECT_DIR/in.$$ $INSPECT_DIR/vr.$$ $INSPECT_DIR/vr1.$$" 0 1 2 3 15 # Проверка на спам cat | $FILTER_SPAMC > $INSPECT_DIR/in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; } # Проверка на вирусы /usr/local/bin/clamscan -v -r --mbox --no-summary --stdout ${INSPECT_DIR}/in.$$>$INSPECT_DIR/vr.$$ # Результат проверки AV_RESULT=$? case "$AV_RESULT" in 0) # Проверено. Мин нет :) $SENDMAIL "$@" <${INSPECT_DIR}/in.$$ exit 0 ;; 1) # Обнаружен вирус. Посылаем уведомление админу echo "Subject: VIRUS FOUND" >> $INSPECT_DIR/vr1.$$ echo >> $INSPECT_DIR/vr1.$$ echo "************************************************" >> $INSPECT_DIR/vr1.$$ echo "* MAIL *" >> $INSPECT_DIR/vr1.$$ echo "************************************************" >> $INSPECT_DIR/vr1.$$ echo >> $INSPECT_DIR/vr1.$$ # Включаем в отчет реальные адреса релеев grep Received $INSPECT_DIR/in.$$ >> $INSPECT_DIR/vr1.$$ echo "Mail from: $2 (may be forget)" >> $INSPECT_DIR/vr1.$$ echo "To: $4" >> $INSPECT_DIR/vr1.$$ grep Subject $INSPECT_DIR/in.$$ >> $INSPECT_DIR/vr1.$$ echo >> $INSPECT_DIR/vr1.$$ echo "************************************************" >> $INSPECT_DIR/vr1.$$ echo "* Virus(es) *" >> $INSPECT_DIR/vr1.$$ echo "************************************************" >> $INSPECT_DIR/vr1.$$ # Включаем в отчет список вирусов cat $INSPECT_DIR/vr.$$ >> $INSPECT_DIR/vr1.$$ $SENDMAIL -f $VIRUSADMIN -r $VIRUSADMIN -F "Antivirus" $VIRUSADMIN < $INSPECT_DIR/vr1.$$ exit 0 ;; *) # Произошла ошибка в работе антивируса. Сообщим об ошибке админу echo "Subject: ANTIVIRUS FAILED" >> $INSPECT_DIR/vr1.$$ echo >> $INSPECT_DIR/vr1.$$ echo "************************************************" >> $INSPECT_DIR/vr1.$$ echo "* Antivirus Failed with next problem *" >> $INSPECT_DIR/vr1.$$ echo "************************************************" >> $INSPECT_DIR/vr1.$$ case "$AV_RESULT" in 40) echo "* Unknown option passed. *" >> $INSPECT_DIR/vr1.$$ ;; 50) echo "* Database initialization error. *" >> $INSPECT_DIR/vr1.$$ ;; 52) echo "* Not supported file type. *" >> $INSPECT_DIR/vr1.$$ ;; 53) echo "* Can't open directory. *" >> $INSPECT_DIR/vr1.$$ ;; 54) echo "* Can't open file. (ofm) *" >> $INSPECT_DIR/vr1.$$ ;; 55) echo "* Error reading file. (ofm) *" >> $INSPECT_DIR/vr1.$$ ;; 56) echo "* Can't stat input file / directory. *" >> $INSPECT_DIR/vr1.$$ ;; 57) echo "* Can't get absolute path name of current *" >> $INSPECT_DIR/vr1.$$ echo "* working directory. *" >> $INSPECT_DIR/vr1.$$ ;; 58) echo "* I/O error, please check your filesystem. *" >> $INSPECT_DIR/vr1.$$ ;; 59) echo "* Can't get information about current user *" >> $INSPECT_DIR/vr1.$$ echo "* from /etc/passwd. *" >> $INSPECT_DIR/vr1.$$ ;; 60) echo "* Can't get information about user *" >> $INSPECT_DIR/vr1.$$ echo "* clamav (default name) from /etc/passwd. *" >> $INSPECT_DIR/vr1.$$ ;; 61) echo "* Can't fork. *" >> $INSPECT_DIR/vr1.$$ ;; 63) echo "* Can't create temporary files/directories *" >> $INSPECT_DIR/vr1.$$ echo "* (check permissions). *" >> $INSPECT_DIR/vr1.$$ ;; 64) echo "* Can't write to temporary directory (please *" >> $INSPECT_DIR/vr1.$$ echo "* specify another one). *" >> $INSPECT_DIR/vr1.$$ ;; 70) echo "* Can't allocate and clear memory (calloc). *" >> $INSPECT_DIR/vr1.$$ ;; 71) echo "* Can't allocate memory (malloc). *" >> $INSPECT_DIR/vr1.$$ ;; *) echo "Unknown error $AV_RESULT" >> $INSPECT_DIR/vr1.$$ ;; esac echo "************************************************" >> $INSPECT_DIR/vr1.$$ $SENDMAIL -f $VIRADMIN -r $VIRADMIN -F "Antivirus" "$VIRADMIN" < $INSPECT_DIR/vr1.$$ exit $EX_TEMPFAIL ;; esac exit 0 ----------------------------------------------- Вот и все. Данный скрипт уже давно успешно работает на почтовом сервере с количеством клиентов более 500 В данном скрипте реализовано уведомление только администратора (имея дело с современными почтовыми вирусами уведомление отправителя и получателя просто противопоказано), зараженные письма просто убиваются. Для большинства админов этого достаточно.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, Сергей, 12:55, 26/10/2004 [ответить] [смотреть все]
  • +/
    Отлично работает!
    Правда, я добавил отправку уведомления получателю

    <<<<
    1)
    ...
    $SENDMAIL "$@" <${INSPECT_DIR}/vr1.$$
    exit 0
    >>>>
    и немного подправил пути для своей платформы.
    Еще есть в скрипте небольшая неточность, в конце нужно исправить имя переменной VIRADMIN на VIRUSADMIN

     
     
  • 2.2, steve, 22:11, 05/11/2004 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    почему то пишет что нет доступа к фалу spamd сокет скрипт myfilter с правами ю... весь текст скрыт [показать] [показать ветку]
     
  • 1.3, memphis, 18:19, 19/11/2004 [ответить] [смотреть все]  
  • +/
    Почему-то не работает...
    Выдаёт: Nov 19 18:08:51 freebsd postfix/pipe[2318]: DFC84B8B6: to=<postmaster@mail.ruskon002.local>, orig_to=<postmaster>, relay=myfilter, delay=3, status=deferred (temporary failure. Command output: /tmp/in.2319: No such file or directory )

    А отчёт шлёт "Can't stat input file / directory."

    Подскажите, где я не прав. Заранее благодарен.

     
  • 1.4, len, 15:55, 27/11/2004 [ответить] [смотреть все]  
  • +/
    у меня вообще нет никакой реакции на фильтры при правке конфига master.cf

    Может подкините толковую доку ?

     
     
  • 2.6, Cj_Nik, 11:18, 30/11/2004 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    было тоже самое, вот тока по буковкам ещё раз проверил и нашёл ошибку, уж незнаю... весь текст скрыт [показать] [показать ветку]
     
  • 2.7, Cj_Nik, 11:28, 30/11/2004 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Тоже самое было, но у меня глупая ошибка в master cf coUntent_filter myfilter du... весь текст скрыт [показать] [показать ветку]
     
  • 1.5, Coolmax, 08:47, 30/11/2004 [ответить] [смотреть все]  
  • +/
    А как бы ещё сделать такую штуку. После проверки в заголовок письма вставлялась строка:
    X-ClamAV-Status: Virus not detected
    X-ClamAV-TestTime: 2004-11-30 13:45:11

    Возможно ли такое?

     
  • 1.8, FreeLander, 12:49, 08/02/2005 [ответить] [смотреть все]  
  • +/
    У меня все прекрасно работает. Отшивает все четко. Вот правда хотелось бы уточнить. Как можно было бы сделать чтобы он зараженные письма не отшивал а складывал в отдельную директорию? И как можно будет уведомлять отправителя вирусов?
     
  • 1.9, Elvis, 12:44, 25/02/2005 [ответить] [смотреть все]  
  • +/
    Rabotajet prekrasno, no vot poproboval ves spam pereodresovatj adminu (na vsiakij sluchaj... a sluchaji u nas raznyje)..

    dobavil spamc -E

    stal proveriatj:

    cat | $FILTER_SPAMC > $INSPECT_DIR/in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }

    AV_RESULT=$?

    if [ $AV_RESULT -eq 1 ]; then

        $SENDMAIL -f $SPAMADMIN -r $SPAMADMIN -F "Antispam system" "$SPAMADMIN" < $INSPECT_DIR/in$
        exit 1
    fi


    I skript nachel zhalovatsia: "Cannnot save mail to file"...

    V chiom zagvozdka? "cat" shtoli nenravitsia "1" exit code ot spamassassina?

     
  • 1.10, Нонейм, 21:00, 28/02/2005 [ответить] [смотреть все]  
  • +/
    по поводу "X-ClamAV-Status: Virus not detected" сомнения меня берут. В данной реализации скрипта используется сканер файлов, который не знает ни про почту, ни тем более про заголовки почтовые. По-хорешему здесь бы clamsmtpd бы неплохо использовать. А так, все бы ничего, но письмо по 2 секунды проверяется. Причем письмо с темой "Тест" и таким же текстом... долгова-то как-то...
     
     
  • 2.13, Алекс, 10:59, 01/04/2005 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Долго проверяется, потому что используется сканер, который при каждом старте заг... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.22, Алекс, 13:40, 05/10/2005 [^] [ответить] [смотреть все]  
  • +/
    А почему бы не использовать в скрипте вместо clamscan утилиту clamdscan С ней ... весь текст скрыт [показать]
     
     
  • 4.39, Павел, 13:48, 18/09/2012 [^] [ответить] [смотреть все]  
  • +/
    Спасибо. Отличная идея! Стало гораздо быстрее.
     
  • 1.11, Денис, 13:24, 06/03/2005 [ответить] [смотреть все]  
  • +/
    Скрипт работает, спасибо автору )) !!
     
  • 1.12, yrich, 18:20, 17/03/2005 [ответить] [смотреть все]  
  • +/
    Скрипт работает, вирусы находит, вот только спам как валился, так и продолжает валиться. Что посоветуете.? Ассасина обучал, на тестовых письмах тройку показывает. Как проверить, что он в скрипте выдает?
     
  • 1.14, Olden Gremlin, 12:57, 18/05/2005 [ответить] [смотреть все]  
  • +/
    Скрипт отлично работает Помимо того, что подправил пути, от себя немного переде... весь текст скрыт [показать]
     
     
  • 2.33, valmont2k, 17:04, 05/01/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Вложения не проходят Была версия про то,что нужно указывать спамц больший разме... весь текст скрыт [показать] [показать ветку]
     
  • 1.15, Aleksandr, 15:10, 19/05/2005 [ответить] [смотреть все]  
  • +/
    Блин не работает. Получаю temporary failure. Command output: /tmp/clamav/in.ххххх: No such file or directory, а в мыло Can't stat input file / directory. Директория /tmp/clamav есть, с правами всё нормально. В чём проблема ? Памажите.
     
  • 1.16, jb, 15:51, 08/06/2005 [ответить] [смотреть все]  
  • +/
    А как по скорости, не накладно для каждого письма запускать процесс bash ?
     
  • 1.17, Boo, 02:16, 20/08/2005 [ответить] [смотреть все]  
  • +/
    Vsjo kruto - vot toka opoveschenije njepoluchaju :( - any ideas ?
     
  • 1.18, Lug, 11:45, 25/08/2005 [ответить] [смотреть все]  
  • +/
    Ребята а если можно то объясните в скрите как убрать удаление всей отброшеной почты ? чтобы она перерсылалась на админа ? Не знаю перл а настроить хотелось бы.. терять почту никак нельзя ?
     
  • 1.19, nick31, 13:04, 08/09/2005 [ответить] [смотреть все]  
  • +/
    Имхо лучше сделать через clamsmtp, proxsmtp. А если нужно чтобы спам не прибивался - использовать header_checks и REDIRECT.
     
  • 1.23, Showjumper, 02:57, 06/01/2006 [ответить] [смотреть все]  
  • +/
    FreeBSD 5.4
    Народ!
    у меня трабл ! Юзал етот скрипт, потом аналогичную схему поднял на amavis.. После того удалил полностью Postfix, проинсталил свежий из распакованного архива, не их портов... теперь в maillog вываливается
    *************
    Jan 6 01:26:17 ftp postfix/qmgr[518]: warning: connect to transport myfilter: Connection refused
    *************
    Что делать ? как убить ? конфиги новые - те что из архива с постфиксом ...
    Плиз хелп ...
     
     
  • 2.24, Nikky, 14:35, 06/01/2006 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    У amavisd-new несколько другая схема подключения Проше всего посмотреть её в ma... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.25, Showjumper, 17:43, 06/01/2006 [^] [ответить] [смотреть все]  
  • +/
    та мне оно уже не нужно - удивляет что на заново поставленном Постфиксе идет тра... весь текст скрыт [показать]
     
  • 1.26, Showjumper, 18:22, 06/01/2006 [ответить] [смотреть все]  
  • +/
    Кажется разобрался.
    В папке /var/spool/postfix  есть 2 папки defer и deferred.
    Так вот в них остались письма со времен установленного фильтра... При рассмотрении тел писем можно увидеть что там прописан путь к транспорту (как раз к amavis и к скрипту с опеннета)
    После удаления писем нафик - вроде не выскакивает больше таких логов
     
  • 1.27, AL, 23:39, 21/01/2006 [ответить] [смотреть все]  
  • +/
    ацтой а не скипт, юзаем maildrop с фильтром и не паримся
     
     
  • 2.28, FoxMulder, 11:26, 02/06/2006 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Отлично, предложите тогда что то более надежное и лучшее Желательно с конфами и... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.29, andr, 15:37, 05/07/2006 [^] [ответить] [смотреть все]  
  • +/
    Скрипт работает почти нормально. Единственная загвоздка, при отправке письма с уведомлением о доставке (microsoft outlook) postfix возвращает вот это

    "Your message was successfully delivered to the destination(s) listed below. If the message was delivered to mailbox you will receive no further notifications. Otherwise you may still receive notifications of mail delivery errors from other systems.

                       The Postfix program

    <ter@top.ru>: delivery via myfilter: delivered via myfilter service"
    myfilter - это сам скрипт

    Никто не сталкивался с такой проблем?

     
     
  • 4.30, andr, 16:01, 05/07/2006 [^] [ответить] [смотреть все]  
  • +/
    если отключить фильтр - всё по russian типа Ваше сообщение доставлено и всё такое
     
     
  • 5.31, Saint_Byte, 09:39, 10/08/2006 [^] [ответить] [смотреть все]  
  • +/
    Угу до 3000 эта связка работает стабильно но после 5000 юзеров - начинает ППЦ
     
     
  • 6.32, ILYA, 15:28, 23/10/2006 [^] [ответить] [смотреть все]  
  • +/
    Здравствуйте... У меня вот в чем загвоздка вышла... Письмо получается в логах пишется, что оно проверено...всё в порядке... пишет mai was delivered via myfilter service... Проверяю..а его тама нету...
     
     
  • 7.34, art_t, 16:29, 17/01/2007 [^] [ответить] [смотреть все]  
  • +/
    Hi all!
    Помогите чайнику please.
    При запуске скрипта выдает следующую ошибку
    spamc[13271]: connect(AF_UNIX) to spamd /var/run/spamd.sock failed: No such file or directory
      После создания соответствующих каталогов
    spamc[14283]: connect(AF_UNIX) to spamd /var/run/spamd/spamd.sock failed: Connection refused
     
  • 1.35, avorobyoff, 19:47, 18/06/2007 [ответить] [смотреть все]  
  • +/
    Ни в коем случае не используйте это способ!
    В логике работы этого способа есть один просчет, который приводит к тому, через ваш сервер будет рассылаться СПАМ! Вам это нужно?
     
     
  • 2.36, FoxMulder, 23:54, 19/06/2007 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    >Ни в коем случае не используйте это способ!
    >В логике работы этого способа есть один просчет, который приводит к тому,
    >через ваш сервер будет рассылаться СПАМ! Вам это нужно?

    И какой же именно просчет?
    В данный момент пользуюсь, пока рассылка спама не наблюдалась.

     
     
  • 3.37, avorobyoff, 13:54, 17/07/2007 [^] [ответить] [смотреть все]  
  • +/
    Спамеры обычно в письме в поле "То:" ставят много адресатов. Когда письмо берется из скрипта, то постфикс пытается отправить это письмо ВСЕМ кто перечислен в поле "То:".
    Также если письмо отправлено нескольким адресатам, то у каждого получателя в ящике окажется столько копий, сколько получателей.
     
  • 1.38, dron666, 14:06, 10/08/2007 [ответить] [смотреть все]  
  • +/
    Люди а вот кто с такой загвоздкой сталкивался. При обновлении ClamAV(с 0.90rc2-1 на 0.91-0.1) этот скрипт перестал работать и из за него работа всего PostFix преостановилась(письма не приходили). Какие изменения надо сделать?
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor