Explorar E-books
Categorias
Explorar Audiolivros
Categorias
Explorar Revistas
Categorias
Explorar Documentos
Categorias
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).
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 safe-upgrade
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
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).
mv /etc/ntp.conf /etc/ntp.conf.old
cd /etc
wget http://ntp.br/xnix/ntp.conf
/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
vi /etc/mysql/my.cnf
#bind-address = 127.0.0.1
/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
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
vi /etc/courier/pop3d.cnf
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
mkimapdcert
mkpop3dcert
/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
$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.
“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.
/etc/init.d/apache2 restart
PureFTPd
Com o apache instalado, o próximo passo é instalar o FTP Server
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
/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.
vi /etc/fstab
Logo abaixo da linha proc, vamos adicionar a linha abaixo (vou colocar a linhar do proc só para referência).
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:
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
mkdir /downloads
cd /downloads
wget http://olivier.sessink.nl/jailkit/jailkit-2.11.tar.gz
Descompacte o jailkit
Entre na pasta
cd jailkit-2.11
./debian/rules binary
cd ..
dpkg -i jailkit_2.11*
Fail2ban
Agora vamos instalar o gerenciador de Logs 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
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
Webmail
Mas não acabamos ainda, falta o webmail.
Vamos a instalação
ln -s /usr/share/squirrelmail/ /var/www/webmail
squirrelmail-configure
http://localhost/webmail
Webmin
Primeiramente vamos criar (se ainda não existir) a pasta /downloads
mkdir /downloads
cd /downloads
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”:
http://localhost:10000
User: admin
Pass: (a que voce definiu)
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.
vi /etc/postfix/main.cf
Dentro do arquivo, localizem a linha smtpd_recipient_restrictions, vamos adicionar uma linha acima dele.
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
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
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
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:
Crie o arquivo access_blacklist, mais a frente, faremos um script que alimentará esta blacklist
automaticamente.
touch /etc/postfix/access_blacklist
vi /etc/postfix/ip-access
Adicione o seguinte conteudo no arquivo, da mesma forma que mais acima, deixei alguns exemplos.
# Spammers Conhecidos
rede124.centrodainternet.com REJECT Voce é um Spammer Conhecido, sai fora!
# Dominios confiaveis
yeslinux.com.br OK
postmap /etc/postfix/ip-access
Agora vamos editar o arquivo das regras dos cabeçalhos das mensagens
vi /etc/postfix/header_checks
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
chmod +x /opt/scripts/spammer.sh
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
/etc/init.d/postfix restart
vi /etc/postfix/main.cf
spf-policyd_time_limit = 3600s
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
vi /etc/postfix/master.cf
/etc/init.d/postfix restart
Abraços