Модераторы: ZeeLax, powerfox
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрипт для объединения ClamAV + Postfix + SpamAssa 
V
    Опции темы
mihanik
Дата 9.9.2010, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 2
Всего: 109



Привет!

Дано:
Fedora 13
Postfix
clamav (из исходников)
spamassassin (из репы)

Хочу:
Письма проверяются на вирусы + проходят проверку на спам

Нашёл простой способ всё это завязать.

http://www.linuxcenter.ru/lib/articles/sof...massassin.phtml

Имеющийся там скрипт правда маленько переделал, чтобы он заработал

Код

#!/bin/sh
INSPECT_DIR=/tmp #Каталог куда будут сохраняться письма для сканирования 
SENDMAIL="/usr/sbin/sendmail -i"
VIRUSADMIN="[email protected]" # адрес для уведомлениий

EX_TEMPFAIL=75
EX_UNAVAILABLE=69

# строка для запуска spamassassin
FILTER_SPAMC="/usr/bin/spamc -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 --scan-mail --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


Письма на вирусы проверяются отлично: взял с сайта касперского тестовый вирус послал себе его по почте, clamav его отловил и прибил.
Я только уведомление получил о том, что кто-то мне вирус прислал.

А вот дальше...
spamassassin, похоже, не фурычит.
Дело в скрипте?
В настройках spamassassin?

Куда посмотреть?
В какую сторону копать?



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
mihanik
Дата 10.9.2010, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 2
Всего: 109



Всё!!!

Решил!!!

Скрипт нужно было ещё немного допилить

Код

#!/bin/sh
INSPECT_DIR=/tmp #Каталог куда будут сохраняться письма для сканирования 
SENDMAIL="/usr/sbin/sendmail -i"
VIRUSADMIN="[email protected]" # адрес для уведомлениий

EX_TEMPFAIL=75
EX_UNAVAILABLE=69

# строка для запуска spamassassin
FILTER_SPAMC="/usr/bin/spamassassin "

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 --scan-mail --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


Этот подход мне нравится тем, что

1. не нужно ставить дополнительные программы
2. для меня всё просто и понятно в плане настройки.

Сначала почитал про amavisd-new, посмотрел, как настраивается... бр-р-р-р-рррр.  smile 
Во-первых amavisd-new за собой тянет туеву хучу дополнительных пакетов, а во-вторых настраивается достаточно сложно.
Или я не понял...  smile 

А так... Работает и не чихает.

Перевёл схему в режим опытной эксплуатации.



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
pythonwin

В этом форуме предпочтительны вопросы на следующие темы:

  • Конкретные вопросы о конкретном ПО. В таких вопросах желательно привести точные данные о программе: версия программы, версия ОС, версия ядра, и проблему в форме: сделал Х, хотел получить Y, а получил Z.
  • Неконкретные вопросы о выборе ПО
  • Обзоры - как дополнение в ветку Обзоры


  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программное обеспечение под *NIX системы | Следующая тема »


 




[ Время генерации скрипта: 0.0755 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.