Você está na página 1de 17

Tutorial: Instalando um Servidor de Hosting com

Webserver, E-Mail, MySQL Completo no


Ubuntu-Server 10.04
Olá Pessoal,

Com certeza este será o maior e mais complexo tutorial que você encontrará neste site.
Ele contempla a instalação de um servidor de correio completo e muito profissional com Ubuntu Server 10.04

Para que tudo corra como está descrito abaixo, instale o Ubuntu Server sem nenhum pacote adicional,
acredito que da instalação, você só precisará do SSH Server.
Primeiramente, atualiza as fontes do APT.

apt-get update

Vamos ter certeza que o SSH está instalado (já que não descrevi neste post a instalação do Ubuntu).

aptitude install ssh openssh-server

Vamos alterar no hostname da máquina (substitua “seudmonio.com.br” pelo dominio real):

echo mailhost.seudominio.com.br > /etc/hostname

Para que ele assuma seu novo nome, reinicie o serviço HOSTNAME

/etc/init.d/hostname restart

Vamos instalar o VIM para facilitar nossas edições de arquivos (estou supondo que você sabe usar o VIM).

aptitude install vim-nox

Agora vamos atualizar o Servidor

aptitude safe-upgrade

O servidor precisará ser reiniciado

reboot

O AppArmor
Para continuar, vamos desativar o AppArmor. Apesar de uma excelente solução de segurança, ele não se
aplicará bem no nosso servidor.

/etc/init.d/apparmor stop

Vamos remover o AppArmor da inicialização

update-rc.d -f apparmor remove

Agora podemos remover com segurança o AppArmor

aptitude remove apparmor apparmor-utils

Relógio
É muito importante que este servidor esteja correto, por isto vamos sincronizar nosso relógio com NTP.br via
protocolo NTP
O NTP é um protocolo para sincronização dos relógios dos computadores, ou seja, ele define um jeito para um
grupo de computadores conversar entre si e acertar seus relógios, baseados em alguma fonte confiável de
tempo, como os relógios atômicos do Observatório Nacional, que definem a Hora Legal Brasileira.

O NTP.br através de seus servidores públicos ajuda a manter seu computador e sua rede sincronizados com a
Hora Legal Brasileira e com o Tempo Universal Coordenado (UTC).

Vamos instalar o NTP

aptitude install ntp ntpdate

Renomeie o arquivo ntp.conf para ntp.conf.old

mv /etc/ntp.conf /etc/ntp.conf.old

Entre na pasta /etc

cd /etc

Baixe o arquivo de configuração do NTP.br

wget http://ntp.br/xnix/ntp.conf

Agora reinicie o serviço NTP do seu servidor

/etc/init.d/ntp restart

Postfix
Vamos inciar a instalação dos serviços de correio, vamos instalar o Postfix, SASLAuth, MySQL, maildrop, entre
outras coisas

aptitude install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon


courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-
modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl getmail4 rkhunter binutils maildrop

Responda as perguntas que a instalação vai lhe fazer:


- Coloque a senha do Root no MySQL
- Repita a senha do Root do MySQL
- Create directories for web-based administration? – Não
- General type of mail configuration: Site de Internet
- System mail name: mailhost.seudominio.com.br

Vamos ajustar o MySQL, abra o arquivo de configuração my.cnf

vi /etc/mysql/my.cnf

Comente a linha bind-access (colocando um # no inicio).

#bind-address = 127.0.0.1

Reinicie o serviço do MySQL

/etc/init.d/mysql restart

A instalação criou todos os sertificados como localhost, o que está errado. Os certificados devem ser para
mailhost.seudominio.com.br
Sendo assim, vamos deleta-los:

rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem

Vamos modificar agora o arquivo de configuração do imapd para que ele leia o dominio correto.

vi /etc/courier/imapd.cnf

Altere o CN=localhost por CN=mailhost.seudominio.com.br, altere tambem o e-mail do postmaster

RANDFILE = /usr/lib/courier/imapd.rand

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
C=US
ST=NY
L=New York
O=Courier Mail Server
OU=Automatically-generated IMAP SSL key
CN=mailhost.seudominio.com.br
emailAddress=postmaster@seudominio.com.br

[ cert_type ]
nsCertType = server

A mesma coisa deve ser veita com o arquivo de configuração do POP3

vi /etc/courier/pop3d.cnf

Altere o domínio do arquivo

RANDFILE = /usr/lib/courier/pop3d.rand

[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no

[ req_dn ]
C=US
ST=NY
L=New York
O=Courier Mail Server
OU=Automatically-generated POP3 SSL key
CN=mailhost.seudominio.com.br
emailAddress=postmaster@seudominio.com.br

[ cert_type ]
nsCertType = server

Vamos recriar os 2 certificados

mkimapdcert
mkpop3dcert

Vamos reiniciar os 2 serviços

/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop-ssl restart

Anti-Vírus
Vamos instalar um anti-vírus que tentar barrar ao máximo os vírus que vão para as estações de trabalho, ou
que possam sair delas.
Instando o Amavis Anti-Vírus e o SpamAssassin (tá na cara o que ele faz não?)

aptitude install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop
cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl
libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

Vamos corrigir um arquivo do Amavis, ele não consegue muitas vezes resolver o nome do servidor
Edite o arquivo abaixo

vi /etc/amavis/conf.d/05-node_id

Descomente a linha da variável $myhostname e preencha com o nome do seu servidor

$myhostname = "mailhost.meudominio.com.br";

Reinicie o Amavis

/etc/init.d/amavis restart

Apache
próximo passo, instalar o webserver apache, vamos fazer isto junto com PHP, PHPMyAdmin e certificado.

aptitude install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-


cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi
libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick
libapache2-mod-suphp libopenssl-ruby

Também teremos que responder algumas perguntas:

“Escolha o servidor web que deve ser configurado automaticamente para correr o phpMyAdmin” – Apache2
“Configurar a base de dados para phpmyadmin com dbconfig-common?” – Não
Agora vamos habilitar os módulos: suexec, rewrite, ssl, actions, e include.

a2enmod suexec rewrite ssl actions include

Seguindo as instruções, vamos reiniciar o apache

/etc/init.d/apache2 restart

PureFTPd
Com o apache instalado, o próximo passo é instalar o FTP Server

aptitude install pure-ftpd-common pure-ftpd-mysql quota quotatool


Bom, não queremos cair na recente armadilha que caiu um provedor recentemente correto? não vamos deixar
que os usuários fiquem passeando pelo FTP, vamos coloca-lo em chroot.

Vamos editar o arquivo pure-ftpd-common

vi /etc/default/pure-ftpd-common

Tornem o servidor STANDALONE e ativem o CHROOT alterando as linhas que vou citar abaixo

STANDALONE_OR_INETD=standalone
VIRTUALCHROOT=true

Vamos reiniciar o FTP

/etc/init.d/pure-ftpd-mysql restart

Em um servidor como este, não podemos deixar que os usuários façam o que querem com os sites, imagina
alguém fazer um site com todas as distribuições de linux disponíveis para download, além de matar sua
banda, vai acabar com seu espaço em disco.

Sendo assim, vamos habilitar a cota, que já instalamos junto com o FTP.

Para habilitar a cota, vamos editar o arquivo fstab

vi /etc/fstab

Logo abaixo da linha proc, vamos adicionar a linha abaixo (vou colocar a linhar do proc só para referência).

proc /proc proc nodev,noexec,nosuid 0 0


/dev/mapper/server1-root / ext4 errors=remount-
ro,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0 1

Precisaremos de 2 arquivos para gerenciar a cota, um para usuários e um para grupos.


Vamos ter que cria-los e dar as devidas permissões

touch /aquota.user /aquota.group


chmod 600 /aquota.*
mount -o remount /

Agora precisamos ativar a cota

quotaon -avug

DNS Server
Agora vamos para o DNS Server (quanto trabalho não?? relaxem, ainda nem começamos a configurar, ainda
estamos instalando).
Hora de instalar:

aptitude install bind9 dnsutils

Estatísticas
Vamos instalar o Vlogger e o Webalizer para estatísticas de acessos dos sites.

Jailkit
O Jailkit é também para fazer chroot, porém do SSH, não é utilizado neste servidor a função de SSH para
usuários, porém é uma segurança a mais caso haja algum incidente.
Instalando:
aptitude install build-essential autoconf automake1.9 libtool flex bison debhelper

Agora vamos criar a pasta downloads e vamos pra lá.

mkdir /downloads
cd /downloads

Vamos baixar o jailkit

wget http://olivier.sessink.nl/jailkit/jailkit-2.11.tar.gz

Descompacte o jailkit

tar -xzvpf jailkit-2.11.tar.gz

Entre na pasta

cd jailkit-2.11

Vamos compilar o jailkit

./debian/rules binary

Volte o diretório a um nível acima

cd ..

Instale o pacote do jailkit

dpkg -i jailkit_2.11*

Fail2ban
Agora vamos instalar o gerenciador de Logs fail2ban

aptitude install fail2ban

ISPConfig
O ISConfig é uma poderosa ferramenta para administrar tudo isto que instalamos.
Vamos instala-lo

cd /downloads
wget http://downloads.sourceforge.net/ispconfig/ISPConfig-3.0.2.1.tar.gz?use_mirror=

É possível que o download venha com o nome errado, então vamos renomeá-lo

mv ISPConfig-3.0.2.1.tar.gz\?use_mirror\= ISPConfig-3.0.2.1.tar.gz

Agora vamos descompactar o ISPConfig

tar -xzvpf ISPConfig-3.0.2.1.tar.gz

Entre na pasta de instalação

cd ispconfig3_install/install/

Hora de instalar…

php -q install.php
Vamos responder diversas perguntas, então abaixo as respostas para cada uma delas.
Select language (en,de) [en]: en
Installation mode (standard,expert) [standard]:standard
MySQL server hostname [localhost]:localhost
MySQL root username [root]: root
MySQL root password []:senhaquevcdefiniu
MySQL database to create [dbispconfig]:dbispconfig
MySQL charset [utf8]:utf8
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Sao_Paulo
Locality Name (eg, city) []:Sao_Paulo
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Yes!Linux Solutions
Organizational Unit Name (eg, section) []:Yes!Linux
Common Name (eg, YOUR name) []:Bob Reis
Email Address []:bob@yeslinux.com.br
ISPConfig Port [8080]:8080

Acesse seu sistema pelo navegar com IP na porta 8080


http://localhost:8080 utilize o usuário: admin e a senha: admin
Dentro da ferramenta você poderá administrar todo o servidor

Webmail
Mas não acabamos ainda, falta o webmail.
Vamos a instalação

aptitude install squirrelmail

Crie o link simbólico para o DocumentRoot do apache

ln -s /usr/share/squirrelmail/ /var/www/webmail

Vamos fazer as configurações

squirrelmail-configure

E la vem as perguntas e claro, as respostas…

No menu principal, começaremos escolhendo a opção D


“D. Set pre-defined settings for specific IMAP servers”

Na próxima tela, vamos escolher “courier”


Please select your IMAP server:
bincimap = Binc IMAP server
courier = Courier IMAP server
cyrus = Cyrus IMAP server
dovecot = Dovecot Secure IMAP server
exchange = Microsoft Exchange IMAP server
hmailserver = hMailServer
macosx = Mac OS X Mailserver
mercury32 = Mercury/32
uw = University of Washington’s IMAP server
gmail = IMAP access to Google mail (Gmail) accounts

quit = Do not change anything


Command >> courier

De volta ao menu principal, escolha S para Salvar


“Command >> S”

Agora Q para sair


“Command >> Q”

Pronto, para acessar o webmail entre com o endereço:

http://localhost/webmail

Webmin
Primeiramente vamos criar (se ainda não existir) a pasta /downloads

mkdir /downloads

Vamos para a pasta downloads

cd /downloads

Agora vamos baixar o webmin


wget http://downloads.sourceforge.net/project/webadmin/webmin/1.520/webmin-1.520.tar.gz?r=http%3A%2F
%2Fwww.webmin.com%2F&ts=1286138576&use_mirror=ufpr

Vamos descompactar o webmin

tar -xzvpf webmin-1.520.tar.gz -C /usr/local/

Hora de iniciar a instalação, entre na pasta onde o Webmin foi descompactado:

cd /usr/local/webmin-1.520/

Iniciando a instalação

./setup.sh

Abaixo as respostas para as perguntas da instalacão, basta confirmar com enter em todos os pontos, exceto a
senha que você deverá colocar e a utima pergunta é se você gostaria que o sistema incie automaticamente,
responda “y”:

Config file directory [/etc/webmin]:


Log file directory [/var/webmin]:
Web server port (default 10000):
Login name (default admin):
Start Webmin at boot time (y/n): y

Pronto!!! Vamos logar pela primeira vez no sistema, entre:

http://localhost:10000

User: admin
Pass: (a que voce definiu)

Vamos ajudar o Webmin para Português:

Na barra lateral, expanda o Menu “Webmin” e Clique em “Change Language and Theme”

Em “Webmin UI language”, selecione “Personal choice ..” e no select Bos escolha: “Portugues (Brasilian)
pt_BR”
Clique em Make Changes
Atualize sua tela e seu sistema está em Português.

Postfix
De novo??? Yes!!!, agora vamos dar um gás nele, vamos adicionar alguns recursos de segurança a mais.

Editem o arquivo main.cf

vi /etc/postfix/main.cf

Dentro do arquivo, localizem a linha smtpd_recipient_restrictions, vamos adicionar uma linha acima dele.

Vamos adicionar as seguintes linhas (acima da linha que citei)

# Quais protocolos terão notificações


notify_classes =
# Recursos
resource,
# Aplicação
software,
# Violação de Protocolo
protocol
# Envia uma mensagem de alerta se a mensagem nao puder ser entregue no periodo de 5hs
delay_warning_time = 5h
# Tempo máximo que o postfix tentara entregar a mensagem, definido como 5 dias
maximal_queue_lifetime = 5d
# Define o tamanho máximo de uma mensagem a ser enviada, esta definido como 20MB
message_size_limit = 20480000
# Resposta para usuarios nao encontrados
unknown_local_recipient_reject_code = 500
# Rejeitar com erro 554 enderecos desconhecido
unknown_address_reject_code = 554
# Rejeitar com erro 554 hostnames desconhecidos
unknown_hostname_reject_code = 554
# Rejeitar Clients desconhecidos com erro 554
unknown_client_reject_code = 554
# Respeita RFC 821 - MAIL FROM e RCPT TO,
# A RFC 821 basicamente exige que os enderecos sejam "envelopados" ou contidos por <>.
# faz com que se use essa notacao na sessao SMTP. Isso ajuda a barrar alguns Mailers
strict_rfc821_envelopes = yes
# Desabilitada VRFY
disable_vrfy_command = yes
# Faz com que as rejeiçẽos aconteçam apenas após o rcpt to, se setado como no, faz com que as rejeições
acontecam
# imediatamente, não é aconselhável, pois alguns servidores nao aceita recusa antes do rcpt to
smtpd_delay_reject = yes
# Listas de RBL
# Obs.: Utilizar com cuidado as listas, pois algumas bloqueiam e-mails
# do Brasil. Informacoes em: http://www.dnsstuff.com
maps_rbl_domains = xbl.spamhaus.org, relays.ordb.org, list.dsbl.org, dun.dnsrbl.net, spam.dnsrbl.net,
cbl.abuseat.org, sbl-xbl.spamhaus.org, bl.spamcop.net, dns.rfc-ignorant.org
# Obriga o uso de HELO/EHLO
smtpd_helo_required = yes
# Tempo limite para envio de HELO (Ajustar com o tempo para o minimo possivel)
smtp_helo_timeout = 60s
# Nmero aximo de destinatarios no mesmo e-mail
smtpd_recipient_limit = 300
# Restricao durante comando HELO/EHLO
smtpd_helo_restrictions =
# Permite antes as redes autenticadas
permit_sasl_authenticated,
# Permite "mynetwork"
permit_mynetworks,
# Checa contedo do HELO_ACCESS
check_helo_access regexp:/etc/postfix/regras_ehlo,
# Quando nao informado o hostname
reject_invalid_hostname,
# Bloqueio comando para forcar entrega
reject_unauth_pipelining,
# Rejeita quem estiver na lista negra
reject_rhsbl_sender dsn.rfc-ignorant.org,
# Bloqueia IP's listados em RBL
reject_rbl_client maps_rbl_domains,
# Obrigatorio o HELO deve ser de dominio valido.
reject_non_fqdn_hostname

Agora ainda com o arquivo aberto, substitua a linha smtpd_recipient_restrictions inteira pelo que vou colocar
abaixo:

smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf,
reject_invalid_hostname,
reject_unverified_recipient,
reject_unknown_recipient_domain,
reject_unauth_pipelining,
reject_unauth_destination

Agora localize a linha smtpd_sender_restrictions e substitua pelo conteudo abaixo

smtpd_sender_restrictions =
permit_sasl_authenticated,
reject_unknown_sender_domain,
check_sender_access mysql:/etc/postfix/mysql-virtual_sender.cf,
check_sender_access hash:/etc/postfix/access_blacklist,
reject_unauth_pipelining,
reject_non_fqdn_sender

Faça o mesmo com a linha smtpd_client_restrictions

smtpd_client_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
check_client_access mysql:/etc/postfix/mysql-virtual_client.cf
check_client_access hash:/etc/postfix/ip-access,
reject_unauth_pipelining,
reject_rbl_client maps_rbl_domains

Na sequencia, podemos ir adiciona as linhas abaixo:

# Restrições nos dados da mensagem


smtpd_data_restrictions =
# Bloqueia tentativas de forçar a entrega
reject_unauth_pipelining
# Verifica os 50 K inicais
body_checks_size_limit = 51200
# Tamanho da mensagem de erro
bounce_size_limit = 50000
# Tamanho maximo do HEADER aceito
header_size_limit = 102400
# Quantidade de conexões concorrentes para entrega de mensagens em servidores remotos
smtp_destination_concurrency_limit = 5
# Quantidade de conexoes simultaneas na entrega das mensagens para outros servidores
smtp_destination_recipient_limit = 10
# Limite total de erros, apos 3 erros é desconectado
smtpd_hard_error_limit = 3
# Erros temporarios (450)
smtpd_soft_error_limit = 1
# Velocidade que o client abre conexao por minuto
smtpd_client_connection_rate_limit = 25
# Quantas conexoes simultaneas uma maquina pode abrir
smtpd_client_connection_count_limit = 25
# Maximo de mensagens que pode ser entregue por minuto
smtpd_client_message_rate_limit = 180
# Tempo de espera pra retorno a cada erro de comando do sistema
smtpd_error_sleep_time = 20
# Permitir a maquina remota dar o comando RSET apenas 1 vez.
smtpd_junk_command_limit = 1
Próximo passo, criaremos alguns arquivos com algumas regras, alguns arquivo já estavam citados no seu
main.cf, outros citei com as alterações acima.

vi /etc/postfix/regras_ehlo

Este arquivo foi citado acima, ele vai dizer quais são as regras para os servidores fazerem o HELO.
Abaixo o conteúdo do arquivo, edite-o como achar melhor, deixei alguns exemplos:

# Nao permite que outro servidor se passe pelo seu servidor


/^mailhost\.seudominio\.com\.br$/ REJECT Regras EHLO Voce nao é Eu mesmo
/(mailhost\.)?seudominio\.com\.br/ REJECT Regras EHLO Voce nao é Eu mesmo

# Nao permite que outro servidor se identifique como Localhost


/localhost/ REJECT Regras EHLO Não, Definitivamente voce nao é localhost

# Bloquear tentativa de se passar pelo proprio servidor


/200\.XXX\.XXX\.219/ REJECT Regras EHLO Voce nao é Eu Mesmo

# Não Permitir IPs Literais em ehlo/helo


#/^\[[[:digit:]\.]*\]$/ REJECT Regras Locais não permitem endereços IPs no Helo
/^[[:digit:]\.]*$/ REJECT Regras EHLO Regras Locais não permitem endereços IPs no Helo

# Bloquenado hotmail falso


/^hotmail\.com\.*$/ REJECT Regras EHLO Não é permitido hotmail fake

# Bloqueando Spammers Conhecidos


/61-219-13-178.hinet-ip.hinet.net/ REJECT Regras EHLO Spammer conhecido

Crie o arquivo access_blacklist, mais a frente, faremos um script que alimentará esta blacklist
automaticamente.

touch /etc/postfix/access_blacklist

Vamos criar o arquivo ip-access

vi /etc/postfix/ip-access

Adicione o seguinte conteudo no arquivo, da mesma forma que mais acima, deixei alguns exemplos.

# Bloqueando as redes de acordo com a RFC 198


10 REJECT RFC 1918 Esta rede nao é permitida
192.168 REJECT RFC 1918 Esta rede nao é permitida
127 REJECT - Voce nao é construtivo
201.22.6.143 REJECT - Servidor Bloqueado por SPAM

# Spammers Conhecidos
rede124.centrodainternet.com REJECT Voce é um Spammer Conhecido, sai fora!

# Dominios confiaveis
yeslinux.com.br OK

Este arquivo deve ser mapeado pelo postmap

postmap /etc/postfix/ip-access

Agora vamos editar o arquivo das regras dos cabeçalhos das mensagens
vi /etc/postfix/header_checks

Abaixo, da mesma forma, segue o conteúdo do arquivo

#Bloqueio de mensagens falsas de virus


/([Vv].rus(es)?|V.RUS).*(ALERT|alert|S(EU|UA)|YOUR|en(viado|contrado)|found|detect(ado|ed)|blo(cked|
queado)|[Rr]emetente|sent)/ REJECT HeaderCheck - Bogus anti-virus alert - please config your mail
server properly
/[Rr]eturn(ado|ed) d(evido|ue) (a|to) [Vv].rus/ REJECT HeaderCheck - Bogus anti-virus alert - please
config your mail server properly
/[dD]etect[ea]do? [Vv].rus(es)?/ REJECT HeaderCheck - Bogus anti-virus alert - please config your mail
server properly
/setting for your mailbox*/ REJECT HeaderCheck - Mensagem recusada - Virus detectado
/account notification/ REJECT HeaderCheck - Mensagem recusada - Virus detectado
/Outlook Setup Notification/ REJECT HeaderCheck - Mensagem recusada - Virus detectado
/Confirm your e-mail address/ REJECT HeaderCheck - Mensagem recusada - Virus detectado
/Please confirm your email to/ REJECT HeaderCheck - Mensagem recusada - Virus detectado
/Male meds crazy deals/ REJECT HeaderCheck - Mensagem recusada - Virus detectado
/Confirm your e-mail address for*/ REJECT HeaderCheck - Mensagem recusada - Virus detectado
/Reset your construtivo.com*/ REJECT HeaderCheck - Mensagem recusada - Virus detectado
/Your confirmation is needed/ REJECT HeaderCheck - Mensagem recusada - Virus detectado
/Your construtivo.com account information has changed/ REJECT HeaderCheck - Mensagem recusada - Virus
Detectado
/Delivery Status Notification*/ REJECT HeaderCheck - Mensagem recusada - Virus Detectado
/Convite - Software de Help Desk*/ REJECT HeaderCheck - Sua mensagem foi classificada como SPAM
Recebemos muitos e-mails deste - SPAM

# Bloqueio de Spams conhecidos


/VIAGRA*|Viagra*|viagra*/ REJECT HeaderCheck - Mensagem recusada - Spams nao sao permitidos aqui
/you?*|You?*|YOU?*/ REJECT HeaderCheck - Mensagem recusada - Spams nao sao permitidos aqui

Próximo passo, criar o script que vai atualizar automaticamente nossa blacklist, este passo escrevi um post a
algum tempo atras, mas nao precisam buscar, vamos refazer aqui…

mkdir /opt/scripts
vi /opt/scripts/spammer.sh

Vamos ao conteúdo

#!/bin/bash
export LANG="en_US"
access_blacklist="/etc/postfix/access_blacklist"
whitelist="seudominio.com.br seuoutrodominio.com.br"
maillog=/var/log/mail.log
if [ ! -f $access_blacklist ]; then
touch /etc/postfix/access_blacklist
[ "$?" != "0" ] && exit 1
fi
echo "Ultimos Bloqueios feitos pela BlackList" > .last_blocks
echo "------------------------------------------" >> .last_blocks
cat $maillog.1| grep "Auto BlackList - Spammers nao sao permitidos aqui" >> .last_blocks
cat $maillog | grep "Auto BlackList - Spammers nao sao permitidos aqui">> .last_blocks
echo "------------------------------------------" >> .last_blocks
grep "User unknown in local recipient table" $maillog | awk '{ print $23 }' |grep @ |uniq |sort -u |
sed s/\//g | awk -F= '{ print $2 }' | sed 's/$/\tREJECT Auto BlackList - Spammers nao sao permitidos
aqui/' > .spammer_list
for wl in $whitelist
do
grep -v $wl .spammer_list > .spammer_list.tmp
mv .spammer_list.tmp .spammer_list
done
cat $access_blacklist >> .spammer_list
sort -u .spammer_list > $access_blacklist
postmap $access_blacklist
postfix reload 2> /dev/null
rm .spammer_list
cat .last_blocks | mail -s "Servidor de Correio - Ultimos Bloqueios feitos pela BlackList `date '+%d/
%b'`" seuemail@seudominio.com.br

Torne seu script executável

chmod +x /opt/scripts/spammer.sh

Adicione seu script no crontab

crontab -e
00 21 * * * /opt/scripts/spammer.sh

Pronto, o script acima vai todos os dias as 21:00 varrer seus logs e procurar aqueles robots que ficam a todo
custo enfiar um spam no seu servidor, mandando mensagens para todos os nomes possiveis

Vamos reiniciar o postfix

/etc/init.d/postfix restart

Vamos instalar a checagem SPF ao servidor de e-mail

aptitude install python-policyd-spf python-spf

Mais uma vez, abram o arquivo main.cf

vi /etc/postfix/main.cf

Adicionem a seguinte linha:

spf-policyd_time_limit = 3600s

Localizem novamente a linha smtpd_recipient_restrictions e adicionem a linha check_policy_service


unix:private/policy-spf conforme abaixo

smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
check_recipient_access mysql:/etc/postfix/mysql-virtual_recipient.cf,
check_policy_service unix:private/policy-spf
reject_invalid_hostname,
reject_unverified_recipient,
reject_unknown_recipient_domain,
reject_unauth_pipelining,
reject_unauth_destination

Abram o arquivo master.cf

vi /etc/postfix/master.cf

Adicionem a seguinte linha

policy-spf unix - n n - - spawn


user=nobody argv=/usr/bin/policyd-spf

Reinicie mais uma vez o postfix

/etc/init.d/postfix restart

Isso ai pessoal, não esqueçam de seguir @yeslinux no twitter e se gostaram, Retweetem!!

Abraços