The OpenNET Project / Index page

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

Устанока SpamAssassin (Postfix, MySQL, SSL, WebUsePpref) (mail spam linux suse postfix cypt ssl)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: mail, spam, linux, suse, postfix, cypt, ssl,  (найти похожие документы)
From: gennadi@gennadi.dyn.ee Newsgroups: http://gennadi.dyn.ee Date: Mon, 28 Feb 2004 14:31:37 +0000 (UTC) Subject: Устанока SpamAssassin (Postfix, MySQL, SSL, WebUsePpref) Оригинал: http://gennadi.dyn.ee/modules.php?name=Forums&file=viewtopic&t=11 Устанока SpamAssassin, Postfix, MySQL, WebUsePpref Mail-relay (со Spam-Фильтром) принимает почту из интернета, анализирует её и передаёт на локальный Mail-Server ( напр. Domino) Домен: gennadi.ru Mail-relay: mail-relay.gennadi.ru 192.168.0.1 Mail-Server Domino:domino.gennadi.ru 192.168.0.2 Итак... для полного счастья нам необходимо будет установить следующие пакеты: rpm -i perl-Digest-SNA1* rpm -i perl-Digest-SMAC* rpm -i perl-HTML-Target* rpm -i perl-HTML-Parser* rpm -i perl-Net-DNSr* rpm -i perl-Time-HiResr* rpm -i spamassassin* Если это SuSE - это будет: mail-relay:~ # yast - и т.д, если RedHat то : mail-relay:~ # up2date spamassassin 1.) Установка Postfix Файл /etc/postfix/main.cf выглядит так: mail_spool_directory = /var/mail canonical_maps = hash:/etc/postfix/canonical virtual_maps = hash:/etc/postfix/virtual relocated_maps = hash:/etc/postfix/relocated transport_maps = hash:/etc/postfix/transport sender_canonical_maps = hash:/etc/postfix/sender_canonical masquerade_exceptions = root masquerade_classes = envelope_sender, header_sender, header_recipient masquerade_domains = gennadi.ru mydomain = gennadi.ru myorigin = $mydomain myhostname = mail-relay.gennadi.ru internal_mail = 192.168.0.2 #(Ваш Domino Mail-Server) program_directory = /usr/lib/postfix inet_interfaces = all mydestination = $myhostname, localhost.$mydomain defer_transports = disable_dns_lookups = no relayhost = content_filter = mailbox_command = mailbox_transport = cyrus fallback_transport = cyrus smtpd_sender_restrictions = hash:/etc/postfix/access smtpd_relay_reject = no smtpd_client_restrictions = smtp_always_send_ehlo = yes smtpd_helo_required = no smtpd_helo_restrictions = strict_rfc821_envelopes = no smtpd_recipient_restrictions = permit_mynetworks,permit_mx_backup,permit_sasl_authenticated,check_rel ay_domains broken_sasl_auth_clients = yes smtp_sasl_auth_enable = yes smtp_sasl_security_options = noanonymous smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtpd_sasl_auth_enable = yes smtpd_use_tls = yes smtpd_tls_key_file = /etc/ssl/certs/cert.pem smtpd_tls_cert_file = /etc/ssl/certs/cert.pem smtpd_tls_CAfile = /etc/ssl/certs/cert.pem smtpd_tls_loglevel = 3 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom alias_maps = hash:/etc/aliases mailbox_size_limit = 51200000 message_size_limit = 10240000 2.) В файл /etc/postfix/transport внесём следующую строку: gennadi.ru smtp:[192.168.0.2 ] и актуализируем transport.db mail-relay:~ # postmap /etc/postfix/transport 3.) В файл /etc/postfix/master.cf внесём следующие изменения: #
# service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) #
smtp inet n - n - - smtpd smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes #submission inet n - n - - smtpd # -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes #628 inet n - n - - qmqpd pickup fifo n - n 60 1 pickup cleanup unix n - n - 0 cleanup qmgr fifo n - n 300 1 qmgr #qmgr fifo n - n 300 1 nqmgr #tlsmgr fifo - - n 300 1 tlsmgr rewrite unix - - n - - trivial-rewrite bounce unix - - n - 0 bounce defer unix - - n - 0 bounce flush unix n - n 1000? 0 flush proxymap unix - - n - - proxymap smtp unix - - n - - smtp relay unix - - n - - smtp # -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 showq unix n - n - - showq error unix - - n - - error local unix - n n - - local virtual unix - n n - - virtual #lmtp unix - - n - - lmtp #localhost:10025 inet n - n - - smtpd -o content_filter= # # Interfaces to non-Postfix software. Be sure to examine the manual # pages of the non-Postfix software to find out what options it wants. # # maildrop. See the Postfix MAILDROP_README file for details. # maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient} cyrus unix - n n - - pipe flags=R user=cyrus argv=/usr/lib/cyrus/bin/deliver -e -m ${extension} ${user} uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - n n - - pipe flags=Fq. user=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient vscan unix - n n - 10 pipe user=vscan argv=/usr/sbin/amavis ${sender} ${recipient} procmail unix - n n - - pipe flags=R user=nobody argv=/usr/bin/procmail -t -m /etc/procmailrc ${sender} ${recipient} filter unix - n n - - pipe user=spamfilter argv=/usr/local/bin/spamfilter.sh -f $(sender) -- $(recipient) smtp inet n - y - - smtpd -o content_filter=filter: 4.) Создайте SSL Cerifikat для Postfix mail-relay: # openssl req -new -x509 -sha1 -extensions v3_ca -nodes -days 365 -out cert.pem Получили два файла - privkey.pem и cert.pem. Теперь: mail-relay: # cat privkey.pem cert.pem > /etc/ssl/certs/server.crt mail-relay: # mv -f privkey.pem /etc/ssl/certs/server.key 5.) Создадим юзера spamfilter, от имени которого будет выполняться скрипт spamfilter.sh . mail-relay:~ # useradd -s /bin/false -d /var/spool/filter spamfilter mail-relay:~ # mkdir /var/spool/filter mail-relay:~ # chown spamfilter:mail /var/spool/filter 6.) Этот скрипт spamfilter.sh поместим в директорию /usr/local/bin. --------------------------------- #!/bin/sh INSPECT_DIR=/var/spool/filter SENDMAIL="/usr/sbin/sendmail -i" SPAMASSASSIN=/usr/bin/spamc EX_TEMPFAIL=75 EX_UNAVAILABLE=69 cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; } # Clean up when done or when aborting. trap "rm -f in.$$; rm -f out.$$" 0 1 2 3 15 cat | $SPAMASSASSIN > out.$$ || { echo Message content rejected; exit $EX_UNAVAILABLE; } $SENDMAIL "$@" < out.$$ exit $? --------------------------------- 7.) Конфигурация SpamAssissin. В директории /etc/mail/spamassassin найдите файл local.cf и запишите туда нижеследующие строки: required_hits 5 rewrite_header 1 report_safe 1 use_bayes 1 auto_learn 1 use_terse_report 1 always_add_headers 1 fold_headers 1 spam_level_stars 1 spam_level_char * rewrite_subject 1 subject_tag !!!!*****SPAM*****!!!! ok_languages ru ok_locales en use_razor1 1 use_razor2 1 use_pyzor 1 use_dcc 1 skip_rbl_checks 0 body VIAGRA /viagra/i body PENIS /penis/i score VIAGRA 2 score PENIS 2 blacklist_from *@msn.com blacklist_from *@hotmail.com whitelist_from *@gennadi.ru Это простая конфигурация ( для примера ), где я указал, что письма содержащие слова VIAGRA и PENIS или от отправителей *@msn.com и *@hotmail.com будут признаны как spam. Письма от отправителей *@gennadi.ru будут свободно проходить. Сконфигурируйте его для своей сети и своих нужд. В Google достаточно примеров по конфигурации этого файла. mail-relay:~ # postfix reload mail-relay:~ # /etc/init.d/postfix restart mail-relay:~ # /etc/init.d/spamd restart 8.) Что бы все письма из интернета проходили проверку на spam, сделайте на вашем firewall'e NAT к хосту mail-relay.gennadi.ru на порт 25 ( smtp) и порт 465 ( smtps ). 9.) Test Теперь можно послать письмо из интернета локальному юзеру. В моём примере это gennadi@gmx.net посылает письмо на адрес gennadi@gennadi.ru. mail-relay:~ # tail -fn 100 /var/log/mail Jan 25 16:37:33 mail-relay postfix/smtpd[7484]: starting TLS engine Jan 25 16:37:33 mail-relay postfix/smtpd[7484]: connect from unknown[213.165.64.20] Jan 25 16:37:33 mail-relay postfix/smtpd[7484]: 93F9924C9E: client=unknown[213.165.64.20] Jan 25 16:37:33 mail-relay postfix/cleanup[7486]: 93F9924C9E: message-id=<16175.1075044591@www15.gmx.net> Jan 25 16:37:34 mail-relay postfix/qmgr[1555]: 93F9924C9E: from=<gennadi@gmx.net>, size=897, nrcpt=1 (queue active) Jan25 16:37:34 mail-relay postfix/smtpd[7484]: disconnect from unknown[213.165.64.20] Jan 25 16:37:34 mail-relay spamd[7483]: connection from localhost [127.0.0.1] at port 34496 Jan 25 16:37:34 mail-relay spamd[7491]: info: setuid to spamfilte succeeded Jan 25 16:37:34 mail-relay spamd[7491]: processing message <16175.1075044591@www15.gmx.net> for spamfilter:501. Jan 25 16:37:34 mail-relay spamd[7491]: clean message (0.4/2.0) for spamfilter:501 in 0.7 seconds, 872 bytes. Jan 25 16:37:35 mail-relay postfix/pickup[7265]: 3F4D624CDB: uid=501 from=<gennadi@gmx.net> Jan 25 16:37:35 mail-relay postfix/cleanup[7486]: 3F4D624CDB: message-id=<16175.1075044591@www15.gmx.net> Jan 25 16:37:35 mail-relay postfix/pipe[7487]: 93F9924C9E: to=<gennadi@gennadi.ru>, relay=filter, delay=2, status=sent (mail-relay.gennadi.ru) Jan 25 16:37:35 mail-relay postfix/qmgr[1555]: 3F4D624CDB: from=<gennadi@gmx.net>, size=1168, nrcpt=1 (queue active) Jan 25 16:37:35 mail-relay postfix/smtp[7496]: 3F4D624CDB: to=<gennadi@gennadi.ru>, relay=192.168.0.2[192.168.0.2], delay=0, status=sent (250 Ok: queued as BBA504A75) Письмо от gennadi@gmx.net, пройдя проверку через spamfilter направлено на Domino-Server для юзера gennadi@gennadi.ru .... 10.) MySQL и WebUserPrefs. Есть возможность связать SpamAssassin с MySQL'ем и управлять через вебброузер. Для этого нужен пакет SpamAssissin 2.55 - не ниже!. Здесь MySQL (http://www.mysql.com/downloads/) Здесь WebUserPrefs (http://freshmeat.net/projects/webuserprefs/?topic_id=29) 11.) Создайте SpamAssassin MySQL-БД Таблица userpref CREATE TABLE userpref ( username varchar(100) NOT NULL, value varchar(100) NOT NULL, prefid int(11) NOT NULL auto_increment, PRIMARY KEY (prefid), INDEX (username) ) TYPE=MyISAM; mail-relay:~ # mysql -h localhost -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 159 to server version: 3.23.55-Max-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create database spamassassin; Query OK, 1 row affected (0.19 sec) mysql> use spamassassin; Database changed mysql> CREATE TABLE userpref ( -> username varchar(100) NOT NULL, -> value varchar(100) NOT NULL, -> prefid int(11) NOT NULL auto_increment, -> PRIMARY KEY (prefid), -> INDEX (username) -> ) TYPE=MyISAM; Query OK, 0 rows affected (0.03 sec) mysql>GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON spamassassin.* TO spamassassin@localhost identified by 'spampassword'; Query OK, 0 rows affected (0.12 sec) mysql>quit mail-relay:~ # 12.) В директории /etc/mail/spamassassin найдите файл local.cf и запишите туда нижеследующие строки: user_scores_dsn DBI:mysql:spamassassin:localhost user_scores_sql_username spamassassin user_scores_sql_password spampassword user_scores_sql_table userpref 13.) В файл /etc/sysconfig/spamd внесите следующие изменения ( эти опции нужны для работы с MySQL'ем ): ## Path: Network/Mail/Spamassassin ## Description: Arguments for the spam daemon ## Type: string ## Default: "-d -c -a -L" ## ServiceRestart: spamd SPAMD_ARGS="-d -x -q " Примечание: У RedHat этот файл называется /etc/sysconfig/spamassassin 14.) Распакуйте сгруженный пакет WebUserPrefs и установите его в Root-директорию - вашего Web-Server'a Apache - "/srv/www/htdocs/" В файле /srv/www/htdocs/webuserprefs/config.php внесите следующие изменения : $prefs_source = "db"; $db_host = "localhost"; $db_username = "spamassassin"; $db_password = 'spampassword; $db_database = "spamassassin"; $db_sauser = $PHP_AUTH_USER; 15.) Пароль для login spamassassin'a через Browser: mail-relay: # mkdir /srv/www/passwd/ mail-relay: # mkdir /srv/www/passwd/spamassassin mail-relay: # htpasswd -c /srv/www/passwd/spamassassin/users spamassassin New password: spampassword Re-type new password: spampassword mail-relay: # echo "mail:spamassassin" > /srv/www/passwd/spamassassin/group 16.) Apache, SSL и spamassassin-aliases В директории /etc/httpd найдите такой файл httpd.conf и подредактируйте его под вашу систему: <VirtualHost _default_:443> # General setup for the virtual host DocumentRoot "/srv/www/htdocs" ServerName mail-relay.gennadi.ru ServerAdmin [39]webadmin@gennadi.ru ErrorLog /var/log/httpd/error_log TransferLog /var/log/httpd/access_log # Server Certificate: # Point SSLCertificateFile at a PEM encoded certificate. If # the certificate is encrypted, then you will be prompted for a # pass phrase. Note that a kill -HUP will prompt again. A test # certificate can be generated with `make certificate' under # built time. Keep in mind that if you've both a RSA and a DSA # certificate you can configure both in parallel (to also allow # the use of DSA ciphers, etc.) SSLCertificateFile /etc/ssl/certs/server.crt #SSLCertificateFile /etc/httpd/ssl.crt/server-dsa.crt # Server Private Key: # If the key is not combined with the certificate, use this # directive to point at the key file. Keep in mind that if # you've both a RSA and a DSA private key you can configure # both in parallel (to also allow the use of DSA ciphers, etc.) SSLCertificateKeyFile /etc/ssl/certs/server.key #SSLCertificateKeyFile /etc/ssl/certs/server.key Alias /spamassassin/ /srv/www/htdocs/spamassassin <Directory /srv/www/htdocs/spamassassin/> Options None SSLRequireSSL order deny,allow deny from all AuthType Basic AuthUserFile /srv/www/passwd/spamassassin/users AuthGroupFile /srv/www/passwd/spamassassin/group AuthName "SpamAssassin Admin" require group mail Satisfy Any </Directory> В директории /etc/ найдите такой файл php.ini найдите такую строку: register_globals = Off замените на: register_globals = On В директории /etc/sysconfig найдите такой файл apache найдите такую строку: HTTPD_SEC_MOD_SSL=no замените на: HTTPD_SEC_MOD_SSL=yes У SuSE и UnitedLinux необходимо выполнить следуюшие приказы: mail-relay: # SuSEconfig mail-relay: # rcapache restart У других дистрибутивов mail-relay: # service apache restart или mail-relay: # /etc/init.d/apache restart https://mail-relay.gennadi.ru/webuserprefs 17.) Дополнительные возможности версии SpamAssissin 2.55 Одна из важных функций этой версии даёт возможность обучать SpamAssissin делать различие между SPAM и NOSPAM. В SpamAssissin интегрирован Bayesian Filter, который активируется приказом sa-learn. Сначала пользователь собирает до 1000 SPAM и NOSPAM(HAM) писем и передаёт SpamAssissin'у : mail-relay: # sa-learn -- spam /path/to/spam/ordner mail-relay: # sa-learn -- ham /path/to/nospam/ordner Так же учиться SpamAssissin автоматически различать письма SPAM от NOSPAM и вводит их в BAYES-базу данных (Autolearning). После того как SpamAssissin выучит достаточно правил и соберёт их в BAYES-базе данных, эти правила автоматически активируются. Ну вот и всё .... Успехов!

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

Обсуждение [ RSS ]
  • 1, Privet Pupsiki (?), 05:10, 21/08/2005 [ответить]  
  • +/
    Ну а где CLAM-AV потеряли? его куда лепить?
     
     
  • 2, Sooz (?), 12:55, 27/08/2005 [^] [^^] [^^^] [ответить]  
  • +/
    Я использую связку, amavis + clamav, amavis так же юзает спамасасин, как их настроить amavis есть у него в докаx, править в постфиксе надо будет main.cf master.cf. Плюс конфиг амависа поправить на тему что ему использовать, какие антивирусники, и использовать ему спамасасин или нет. Короче доки там нормальные настроить не сложно.

    Меня больше интересует процесс обучения Spamassassin-а, может кто нить поподробней описать как ето делается?

     

  • 3, Ripper_wk (?), 00:47, 18/09/2005 [ответить]  
  • +/
    обучение спамассасина
    cd /way/to/mail/with/spam
    ls
    к примеру есть там письмо в формате майлдир типа 11121213.box и ты знаешь что оно содержит спам
    тогда пишешь
    #sa-learn --spam ./11121213.box
    оно выдает что-то типа learned from 1 message.
    все спаммассасин обучился письму ...аналогично для
    --ham
    --forget
     
     
  • 4, Cka304Huk (?), 12:46, 27/09/2005 [^] [^^] [^^^] [ответить]  
  • +/
    Друг не подскажешь где можно более подробно узнать о обучении Ассасина и работе с ним же ? (если есть на русском но и Анг. подойдет)
    Заранее спасибо!
     

    игнорирование участников | лог модерирования

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




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2021 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру