Instalação do Postfix + SASL + Greylist + SPF + Amavis + Clamav no Slackware 12.0

Baixe o fonte do postfix no site http://www.postfix.org

1 – Compilando o postfix

1.1 Se já tiver compilado anteriormente execute

make tidy

1.2 Depois crie o Makefile de acordo com a versão do seu Cyrus-sasl

* Se precisar fazer download do cyrus-sasl acesse:
ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/

para compilar o cyrus-sasl execute os seguintes comandos
./configure –prefix=/usr –enable-plain –enable-login
make
make install

depois carregue o comando do cyrus-sasl e coloque esta linha para iniciar no boot
/usr/sbin/saslauthd -a shadow

Configure o postfix para compilação:
Para Cyrus-sasl e Mysql
make -f Makefile.init makefiles ‘CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl -I/usr/include/db4/’ ‘AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib -lsasl2 -R/usr/lib/ -L/usr/lib/ -ldb4’

1.3 Execute agora o comando para compilar o postfix

make

2 – Criando o usuário (escolha o UID e o GID de sua preferência)

groupadd -g 302 postfix

useradd -u 302 -g postfix -d /var/spool/postfix -s /bin/false postfix

groupadd -g 303 postdrop

3 – Desativando o sendmail (caso ele esteja instalado). Se estiver instalando em um
servidor que está em produção, deixe para fazer este procedimento quando todos os
softwares estiverem instalados.

3.1 – Pare o daemon do sendmail

/etc/rc.d/rc.sendmail stop

3.2 – Mova os arquivos do sendmail

mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF
mv /usr/bin/newaliases /usr/bin/newaliases.OFF
mv /usr/bin/mailq /usr/bin/mailq.OFF

4 – Instalando o postfix.

4.1 – Para uma nova instalação

make install

4.2 – Para atualização

make upgrade

4.3 – Se quiser manter o sendmail rodando enquanto termina a instalação do postfix,
execute o procedimento:

mv /usr/sbin/sendmail /usr/sbin/sendmail.postfix
mv /usr/sbin/sendmail.OFF /usr/sbin/sendmail
/etc/rc.d/rc.sendmail start

5 – Configurando o postfix

5.1 – Configure os aliases de acordo com a sua necessidade. Você pode fazer uma cópia
do aliases do sendmail.

cp /etc/mail/aliases /etc
vi /etc/aliases
newaliases

5.2 – Configure o main.cf de acordo com as especificações abaixo:

myhostname = nome_do_servidor.seudominio
mydomain = seudominio
myorigin = $mydomain
inet_interfaces = all
mydestination = $mydomain, $myhostname, localhost, localhost.$mydomain
mynetworks_style = subnet
mynetworks = suas redes e a rede de loopbak (192.168.0.0/24, 127.0.0.0/8)
relay_domains = $myhostname, $mydomain, $mynetworks
alias_database = hash:/etc/aliases
# PARA BLOQUEAR ARQUIVOS POR EXTENSÃO
body_checks = regexp:/etc/postfix/body_checks
# QUEUE
bounce_queue_lifetime = 2d
maximal_queue_lifetime = 5d
# TAMANHO DA MENSAGEM E CAIXA POSTAL
# 5G por caixa
mailbox_size_limit = 5120000000
# 1G por mensagem
message_size_limit = 1024000000
# ENTREGAR MENSAGENS NA CAIXA POSTAL
best_mx_transport = local
# PASSAR ANTIVIRUS
content_filter = vscan:
soft_bounce = yes
# PARA ACEITAR MENSAGENS 8BIT
disable_mime_output_conversion = yes
disable_mime_input_processing = yes
# SASL
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes
smtpd_sasl_application_name = smtpd
# POLITICA DE EMAILS DO SMTP
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
check_helo_access hash:/etc/postfix/helo_access,
reject_non_fqdn_hostname,
reject_invalid_hostname,
permit
smtpd_sender_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
permit
smtpd_recipient_restrictions =
reject_unauth_pipelining,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_sender_access hash:/etc/postfix/sender_access,
check_recipient_access hash:/etc/postfix/recipient_access,
check_helo_access hash:/etc/postfix/secondary_mx_access,
check_client_access hash:/etc/postfix/rbl-whitelist,
reject_rbl_client relays.ordb.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client sbl-xbl.spamhaus.org,
check_policy_service unix:private/policy
check_policy_service inet:127.0.0.1:10023
permit

5.3 – Configure o arquivo body_checks para bloquear os tipos de arquivos que você deseja

cd /etc/postfix
vi body_checks

Exemplo de bloqueio para extensão .exe
/^(.*)name(.*)=(.*)\.(pps)(.*)$/ REJECT Nos nao aceitamos arquivos .pps anexados ao e-mail

5.4 – Crie os demais arquivos

cd /etc/postfix

touch helo_access
makemap hash helo_access < helo_access
touch sender_access
makemap hash sender_access < sender_access
touch recipient_access
makemap hash recipient_access < recipient_access
touch secondary_mx_access
makemap hash secondary_mx_access < secondary_mx_access
touch rbl-whitelist
makemap hash rbl-whitelist < rbl-whitelist

5.5 – Adicione as seguintes linhas no master.cf
policy unix – n n – – spawn user=nobody argv=/usr/local/sbin/policyd
vscan unix – n n – 10 pipe user=amavis argv=/usr/sbin/amavis ${sender} ${recipient}
localhost:10025 inet n – n – – smtpd -o content_filter=

5.6 – Configurando a autenticação no smtp
Crie um arquivo smtpd.conf no diretório /usr/lib/sasl2 com o conteúdo:

pwcheck_method: saslauthd

6 – Instalando os softwares adicionais

6.1 – Instalando o postgrey (Greylist)

6.1.1 – Baixe o programa no site http://isg.ee.ethz.ch/tools/postgrey/
O postgrey requer as seguintes bibliotecas perl:

– Net::Server (Perl Module)
– IO::Multiplex (Perl Module)
– BerkeleyDB (Perl Module)
– Berkeley DB >= 4.1 (Library)

Baixe elas e suas dependências do site http://www.cpan.org ou instale pelo comando cpan:

cpan

cpan> install Net::Server

O módulo BerkeleyDB precisa ser recompilado manualmente. Execute os procedimentos:

cd /root/.cpan/build/BerkeleyDB-0.29
make clean
perl Makefile.PL
vi Makefile

Altere o conteúdo da linha

INC = -I/usr/local/BerkeleyDB/include
EXTRALIBS = -ldb
LDLOADLIBS = -ldb

para

INC = -I/usr/include/db4
EXTRALIBS = -ldb4
LDLOADLIBS = -ldb4

Recompile e instale o módulo

make
make test
make install

6.1.2 Ativando o postgrey:

./postgrey

Você deverá obter uma mensagem semelhante a esta:

root@ns1:/usr/local/src/postgrey-1.26# ./postgrey
ERROR: –unix or –inet must be specified

Isto indica que todos os módulos perl foram instalados e ele está pronto para
ser usado. Execute os seguintes procedimentos para ativa-lo:

cp postgrey /usr/local/sbin
cd /etc/postfix
vi postgrey_whitelist_clients – Adicione as redes locais e os domínios desejados um por linha
vi postgrey_whitelist_recipients – Adicione os recipients postmaster@ e abuse@ um por linha
mkdir /var/spool/postfix/postgrey/

Crie um script de inicialização com nome rc.postgrey no diretório /etc/rc.d/ com o seguinte
conteúdo:

#!/bin/bash
postgrey_start ()
{
/usr/local/sbin/postgrey -i 10023 -d –user=root –whitelist-clients=/etc/postfix/postgrey_whitelist_clients –whitelist-recipients=/etc/postfix/postgrey_whitelist_recipients –auto-whitelist-clients=1
}

postgrey_stop ()
{
killall postgrey
}

case $1 in
start)
echo -n “Iniciando o postgrey… ”
postgrey_start
echo “feito.”
;;
stop)
echo -n “Parando o postgray… ”
postgrey_stop
echo “feito.”
;;
restart)
postgrey_stop
postgrey_start
;;
*)
echo “Use: rc.postgrey [ stop | start | restart ]”
;;
esac

Adicione este script na inicialização do sistema (rc.local)

6.2 – Instalando o policyd (SPF)

6.2.1 – Baixe e instale a libspf2-1.0.4.tar.gz do site http://www.libspf2.org/download.html

cd /root
wget -c http://www.libspf2.org/spf/libspf2-1.0.4.tar.gz
cd /usr/local/src
tar zxf /root/libspf2-1.0.4.tar.gz
cd libspf2-1.0.4
./configure
make
make install
ldconfig

6.2.2 – Baixe e instale o policyd do site http://www.libspf2.org/download.html

cd /root
wget -c http://www.libspf2.org/patch/policyd-1.0.1.tar.gz
cd /usr/local/src
tar zxf /root/policyd-1.0.1.tar.gz
cd policyd-1.0.1
./configure
make
make install

Configure o policyd para ser executado no boot da máquina.

6.3 – Baixe e instale o clamav do site http://www.clamav.net/

cd /root
wget http://optusnet.dl.sourceforge.net/sourceforge/clamav/clamav-0.88.4.tar.gz
cd /usr/local/src
tar zxf /root/clamav-version.tar.gz
cd clamav-version
./configure
make
make install

6.4 – Instale o Amavisd-0.1

6.4.1 – Instale as dependências

Módulos do Perl
Unix::Syslog
Convert::UUlib
IO::Zlib
Archive::Tar
IO::Stringy
MailTools
MIME::tools
Convert::TNEF
Archive::Zip

Programas
arc – http://arc.sf.net
cd /root
wget -c http://superb-east.dl.sourceforge.net/sourceforge/arc/arc-5.21o.tgz
cd /usr/local/src
tar zxf /root/arc-5.21o.tgz
cd arc-5.21o/
make
cp arc /usr/local/bin/
cp marc /usr/local/bin/

unrar – http://www.rarlab.com/
cd /root
wget -c http://www.rarlab.com/rar/rarlinux-3.7.0.tar.gz
cd /usr/local/src
tar zxf /root/rarlinux-3.7.0.tar.gz
cd rar/
cp rar /usr/local/bin/
cp unrar /usr/local/bin/

6.4.2 – Baixe o amavisd-0.1 do site http://www.amavis.org e instale (Refazer este procedimento, está para versão errada do amavis)

cd /root
wget -c http://www.amavis.org/dist/perl/amavisd-0.1.tar.gz
cd /usr/local/src
tar zxf /root/amavisd-0.1.tar.gz
cd amavisd-0.1/
./configure –enable-postfix
make
cp amavis/amavisd.conf /etc/
make install

Abra o arquivo /etc/amavisd.conf e altere a seguinte linha:

$clamd = “/usr/local/sbin/clamd”;

para

$clamd = “”;

[04:33:55 PM] <rtomazini@jabber.org> muda nos clientes no amavisd.conf
para este padrão
[04:33:57 PM] <rtomazini@jabber.org> # Notify admin/sender/recipient?
$warnadmin = “no”;
$warnsender = “no”;
$warnrecip = “yes”;
[04:34:01 PM] <rtomazini@jabber.org> e restarta ele

Crie um usuário e grupo para o amavis
groupadd -g 304 amavis
useradd -u 304 -g amavis -d /var/amavis -s /bin/bash amavis
mkdir /var/amavis
chown -R amavis:amavis /var/amavis

Inicie o amavisd e adicione esta linha na inicialização do sistema (rc.local)

/bin/su – amavis -c /usr/sbin/amavisd

7 – Iniciando o postfix

Se você estava rodando o sendmail, pare-o e volte o sendmail.postfix para sendmail

/etc/rc.d/rc.sendmail stop
cd /usr/sbin
mv sendmail sendmail.OFD
mv sendmail.postfix sendmail

Agora inicie o postfix

postfix start

8 – Criando o script de inicialização

Entre no diretório de inicialização do sistema

cd /etc/rc.d

Crie um script bash com o o nome rc.postfix e com o seguinte conteúdo

#!/bin/bash
case $1 in
start)
echo -n “Iniciando o postfix… ”
/usr/sbin/postfix start
echo “feito.”
;;
stop)
echo -n “Parando o postfix… ”
/usr/sbin/postfix stop
echo “feito.”
;;
*)
echo “Usse: rc.postfix [ stop | start ]”
;;
esac

Dê permissão de execução

chmod 755 rc.postfix

Adicione no rc.local

##########################################################################################################
UPGRADE COM PATCH
##########################################################################################################

Segue o exeplo para atulização do postfix para a versão do patch03, note que trocamos a versão do postfix
no /usr/local/src/postfix-2.3.2 para postfix-2.3.3, pois assim saberemos a ultima versão que esta no servidor.

wget ftp://ftp.pangeia.com.br/pub/postfix/official/postfix-2.3-patch03.gz
cd /usr/local/src/
gunzip /root/postfix-2.3-patch03.gz
cp /root/postfix-2.3-patch03 .
path -p 1 < postfix-2.3-patch03
cd ..
mv postfix-2.3.2 postfix-2.3.3
cp postfix-2.3.3
make
make upgrade
/etc/rc.d/rc.postfix stop
/etc/rc.d/rc.postfix start