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