Monday, October 16th, 2017

Устанока SpamAssassin (Postfix, MySQL, SSL, WebUsePpref)

Published on Апрель 23, 2009 by   ·   Комментариев нет

Устанока 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]
<div style="display: none"><a href="http://wikiexback.com/getting-your-ex-back-the-groundwork/" title="How To Get Your Ex Back Christian">How To Get Your Ex Back Christian</a></div>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 &#039;help;&#039; or &#039;\h&#039; for help. Type &#039;\c&#039; 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 &#039;spampassword&#039;;
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 = &#039;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&#039; under
# built time. Keep in mind that if you&#039;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&#039;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
[/cc]
У SuSE и UnitedLinux необходимо выполнить следуюшие приказы:

mail-relay: # SuSEconfig
mail-relay: # rcapache restart

У других дистрибутивов

mail-relay: # service apache restart

или

mail-relay: # /etc/init.d/apache restart
[/cc]
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-базе
данных, эти правила автоматически активируются.

Ну вот и всё ….
Успехов!

zp8497586rq













































Смотрите также:

Readers Comments (Комментариев нет)

Comments are closed.

Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]