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
Итак… для полного счастья нам необходимо будет установить следующие
пакеты:
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 -osmtpd_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 601 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 3001 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 -ocontent_filter=filter:
Это простая конфигурация ( для примера ), где я указал, что письма
содержащие слова VIAGRA и PENIS или от отправителей *@msn.com и
*@hotmail.com будут признаны как spam. Письма от отправителей
*@gennadi.ru будут свободно проходить.
Сконфигурируйте его для своей сети и своих нужд.
В Google достаточно примеров по конфигурации этого файла.
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 2516:37:33 mail-relay postfix/smtpd[7484]: starting TLS engine
Jan 2516:37:33 mail-relay postfix/smtpd[7484]: connect from unknown[213.165.64.20]
Jan 2516:37:33 mail-relay postfix/smtpd[7484]: 93F9924C9E: client=unknown[213.165.64.20]
Jan 2516:37:33 mail-relay postfix/cleanup[7486]: 93F9924C9E: message-id=<16175.1075044591@www15.gmx.net>
Jan 2516: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 2516:37:34 mail-relay spamd[7483]: connection from localhost [127.0.0.1] at port 34496
Jan 2516:37:34 mail-relay spamd[7491]: info: setuid to spamfilte succeeded
Jan 2516:37:34 mail-relay spamd[7491]: processing message <16175.1075044591@www15.gmx.net> for spamfilter:501.
Jan 2516:37:34 mail-relay spamd[7491]: clean message (0.4/2.0)for spamfilter:501in0.7 seconds, 872 bytes.
Jan 2516:37:35 mail-relay postfix/pickup[7265]: 3F4D624CDB: uid=501from=<gennadi@gmx.net>
Jan 2516:37:35 mail-relay postfix/cleanup[7486]: 3F4D624CDB: message-id=<16175.1075044591@www15.gmx.net>
Jan 2516:37:35 mail-relay postfix/pipe[7487]: 93F9924C9E: to=<gennadi@gennadi.ru>, relay=filter, delay=2, status=sent (mail-relay.gennadi.ru)
Jan 2516:37:35 mail-relay postfix/qmgr[1555]: 3F4D624CDB: from=<gennadi@gmx.net>, size=1168, nrcpt=1(queue active)
Jan 2516: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 ….
Есть возможность связать SpamAssassin с MySQL’ем и управлять через
вебброузер.
Для этого нужен пакет SpamAssissin 2.55 - не ниже!.
Здесь MySQL (http://www.mysql.com/downloads/)
Здесь WebUserPrefs (http://freshmeat.net/projects/webuserprefs/?topic_id=29)
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 и
запишите туда нижеследующие строки:
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 внесите следующие
изменения :
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
[/cc]
У SuSE и UnitedLinux необходимо выполнить следуюшие приказы:
17.) Дополнительные возможности версии SpamAssissin 2.55
Одна из важных функций этой версии даёт возможность обучать
SpamAssissin делать различие между SPAM и NOSPAM.
В SpamAssissin интегрирован Bayesian Filter, который активируется
приказом sa-learn. Сначала пользователь собирает до 1000 SPAM и
NOSPAM(HAM) писем и передаёт SpamAssissin’у :
Так же учиться SpamAssissin автоматически различать письма SPAM от
NOSPAM и вводит их в BAYES-базу данных (Autolearning). После того как
SpamAssissin выучит достаточно правил и соберёт их в BAYES-базе
данных, эти правила автоматически активируются.
Ну вот и всё ….
Успехов!
Послать ссылку на этот обзор другу по ICQ или E-Mail: