Скрипты для автонастройки postfix и spamassassin


Решил как-то связать postfix и spamassassin для защиты нашей
корпоративной почты от спама.

Полез в интернет, но нашел такой минимум для новичков, что пришлось
собирать информацию буквально по крупицам

После того как все настроил решил сделать скрипты для авто настройки.
выношу на ваш суд.

Итак начнем:

Требования к настройке вашей системы таковы, чтобы все ставилось с портов.

Платформа FreeBSD

1. Нам нужно установить почтовый сервер postfix.

cd /usr/ports/mail/postfix
make all install clean


для pop-сервера я использую обычно popa3d (mailbox) или dovecot (maildir)
если вы новичок или вам не охота ничего настраивать то ставьте popa3d

cd /usr/ports/mail/popa3d
make all install clean


затем в /etc/inetd.conf допишите:

pop3 stream tcp nowait root /usr/local/libexec/popper popa3d


Если вы специалист, то я думаю не нужно описывать как установить dovecot :)
Но все же напишу :)

cd /usr/ports/mail/dovecot
make all install clean


2. Следующий шаг соответственно spamassassin

cd /usr/ports/mail/p5-Mail-Spamassassin
make all install clean


3. Выкачиваем скрипты по этой ссылке http://scorp-manual.burnet.ru/spam/spamassasin-0.1a.tar.bz2
или http://www.opennet.ru/soft/spamassasin-0.1a.tar.bz2
Распаковываем и выполняем ./install.sh

Радуемся )
Вот и все )

Скрипт очень простой написан на шелле, просто для того чтобы упростить настройку.

Вы можете изменять его как хотите на ваше усмотрение.

Благодарности:
Бешкову Андрею - по его статье я учился ставить postfix
Дмитрию Козлову - из его статьи я многое почерпнул

--------------------------------------------------------------------------------

configs/install_sa.sh


#!/bin/sh
######################################################
####### SpamAssassin configuration installer #########
######################################################
# Version 0.1 at 19.08.06
# Required postfix & p5-Mail-SpamAssasin installed
# from ports collection.
#
mta="postfix"
mta_dir="/usr/local/etc/postfix"
mta_conf="$postfix_dir/main.cf"

echo -n "Please enter e-mail for spam collect (usually spam@`hostname`): ";
read mail;

echo "backup config files to usr.local.etc.postfix.tar.bz2"
(cd $mta_dir) && tar cvzf usr.local.etc.postfix.tar.bz2 $mta_dir
sleep 1

echo "Adding configuration lines to $mta_dir/main.cf and $mta_dir/header_checks"
echo "header_checks = regexp:/usr/local/etc/postfix/header_checks" >> $mta_dir/main.cf
echo "/^X-Spam-Flag: YES/ REDIRECT $mail" >> $mta_dir/header_checks
sleep 1

echo "Creating local.cf for spamd"
mv /usr/local/etc/mail/spamassasin/local.cf /usr/local/etc/mail/spamassasin/local.cf.bak
cp `echo $PWD`/configs/local.cf /usr/local/etc/mail/spamassassin

echo "Creating /usr/bin/spamchk"
cp `echo $PWD`/configs/spamchk /usr/bin/
sleep 1

echo "Adding config lines to $mta_dir/master.cf"
cat `echo $PWD`/configs/master.cf >> $mta_dir/master.cf
sleep 1

echo "Adding user filter for run spamchk script"
pw useradd filter -g mail -d /home/filter -s /sbin/nologin -c SPAM user
sleep 1

echo "mkdir /home/filter & chowning to filter:mail"
mkdir /home/filter
chown filter:mail /home/filter
sleep 1

echo "Adding aliase mail spam for filter (mailbox for collection spam letters)"
echo "spam: filter" >> /etc/mail/aliases
newaliases
sleep 1

echo "Reloading postfix & spamd"
/usr/local/sbin/postfix reload
/usr/local/etc/rc.d/sa-spamd.sh restart
sleep 1

echo "####################################################"
echo "## Install antispam system completed successfully ##"
echo "####################################################"
sleep 1



configs/local.cf



rewrite_header Subject *****SPAM*****
report_safe 0
required_score 5.0
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1
ok_languages en ru
ok_locales en ru



configs/master.cf



spamchk unix - n n - 10 pipe
flags=Rq user=filter argv=/usr/bin/spamchk ${sender} ${recipient}

127.0.0.1:10025 inet n - - - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_bind_address=127.0.0.1

smtp inet n - n - - smtpd
-o content_filter=spamchk:dummy



configs/spamchk



#!/bin/sh
INSPECT_DIR=/tmp

FILTER_SPAMC="/usr/local/bin/spamc -u filter"

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/sbin/sendmail -i -f $@ < $INSPECT_DIR/in.$$

exit 0

Обновлено: 13.03.2015