Servidor de emails com Dovecot e MTA Sceo (projeto brasileiro)

Como criar um servidor de e-mails completo e avançado usando o Dovecot e o projeto brasileiro MTA Sceo com banco de dados MySQL. Técnicas antiDoS e antispam a nível de SMTP. Antivírus Clamav, antispam Spamassassin, Greylist e RBLs. Quota de espaço e controle do número de e-mails que cada cliente pode enviar.

[ Hits: 45.937 ]

Por: Lucas Priori em 08/10/2010


Instalando o Dovecot



Sem rodeios. Vamos à instalação:

# cd /home/progs/
# tar xzf dovecot-1.2.14.tar.gz
# cd dovecot-1.2.14
# ./configure --with-mysql
# make
# make install


Crie um grupo e usuário para o Dovecot:

# groupadd -g 106 dovecot
# useradd -s /bin/false -g dovecot -u 106 dovecot


Crie o arquivo /usr/local/etc/dovecot.conf:

# pico /usr/local/etc/dovecot.conf

Coloque o seguinte conteúdo dentro dele (alterando o hostname que está "perdido" aí no meio para o seu hostname correto):

base_dir = /var/run/dovecot/
protocols = imap pop3
listen = *
disable_plaintext_auth = no
ssl = no
mail_location = maildir:~
mail_uid = sceo
mail_gid = sceo
first_valid_uid = 105
last_valid_uid = 105
protocol pop3 {
mail_plugins = quota
}
protocol imap {
mail_plugins = quota imap_quota
}
protocol lda {
postmaster_address = postmaster@dominio.com.br
hostname = mx1.meudominio.com.br
sendmail_path = /usr/local/sceo/sceo_mail
mail_plugins = quota
}
auth_executable = /usr/local/libexec/dovecot/dovecot-auth
auth default {
mechanisms = plain
passdb sql {
  args =/usr/local/etc/dovecot-sql.conf
}
userdb sql {
  args = /usr/local/etc/dovecot-sql.conf
}
user = sceo
socket listen {
  master {
   path = /var/run/dovecot/auth-master
   mode = 0600
   user = sceo
  }
}
}

Salve e saia do arquivo.

Agora crie o arquivo /usr/local/etc/dovecot-sql.conf:

# pico /usr/local/etc/dovecot-sql.conf

Coloque o seguinte conteúdo:

driver = mysql
connect = host=localhost dbname=mail user=sceo password=minhasenha
default_pass_scheme = CRYPT
password_query = SELECT mail as name, domain, pass as password FROM users WHERE mail = '%u'

user_query = SELECT concat(home,maildir) AS home, uid, gid,concat('maildir') AS quota FROM users WHERE mail = '%u' ATENÇÃO:

As últimas duas linhas fazem parte de uma linha só. Deixa-as em uma única linha.

Salve e saia do arquivo.

Vamos criar o rc.dovecot para ligarmos e desligarmos o servidor.

# pico /etc/rc.d/rc.dovecot

Cole o seguinte conteúdo no arquivo:

#!/bin/sh
#############################################
# Script de controle do servidor Dovecot
# ./rc.dovecot start -> Ligar servidor
# ./rc.dovecot stop -> Parar servidor
# ./rc.dovecot restart -> Reiniciar servidor
#
#
#

ligar_dovecot() {
echo "INICIANDO Dovecot..."
/usr/local/sbin/dovecot
}
# Stop dovecot:
parar_dovecot() {
echo "Parando Dovecot..."
killall dovecot
}
case "$1" in
'start')
ligar_dovecot
;;
'stop')
parar_dovecot
;;
'restart')
parar_dovecot
sleep 1
ligar_dovecot
;;
*)
echo "Os parametros aceitaveis sao: $0 start|stop|restart"
esac

Dê permissão de execução:

# chmod 500 /etc/rc.d/rc.dovecot

Hora de testar os servidores. Mas antes é preciso criar o maildir daquele e-mail (lucas@dominio.com.br) que criamos.

# mkdir -p /home/mail/dominio.com.br/lucas/Maildir/new
# mkdir /home/mail/dominio.com.br/lucas/Maildir/cur
# mkdir /home/mail/dominio.com.br/lucas/Maildir/tmp
# touch /home/mail/dominio.com.br/lucas/Maildir/maildirsize
# chown -R sceo. /home/mail
# chmod -R 740 /home/mail


ATENÇÃO: Acima eu usei os comandos chown e chmod desta forma porque é o primeiro e-mail criado. Lembre-se de que você precisa sempre ter tudo dentro do diretório /home/mail com permissão 740 e para o usuário "sceo", mas não cometa o erro de dar um "chown -R" e nem um "chmod -R" direto em /home/mail sempre que criar uma nova conta pois se você já tiver muitos domínios ou e-mails criados, o sistema operacional vai redefinir permissões de muitos e muitos arquivos e diretórios desnecessariamente.

Ligue os servidores agora:

# /etc/rc.d/rc.sceo start
# /etc/rc.d/rc.dovecot start


É normal o Dovecot dar a mensagem abaixo antes de ser efetuado o primeiro login via pop/imap:

"If you have trouble with authentication failures,
enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork
This message goes away after the first successful login."


Dê um "ps aux" e na saída deve aparecer algo assim:

2727 ?        Ss     0:00 /usr/local/sceo/sceo
2728 ?        S      0:00 [SCEO_MODULE] /usr/local/sceo/mod/sceo_mysql.conf
2737 ?        S      0:00 [SCEO_MODULE] /usr/local/sceo/mod/sceo_mysql.conf
2739 ?        S      0:00 [SCEO_MODULE] /usr/local/sceo/mod/sceo_mysql.conf
2741 ?        S      0:00 [SCEO_MODULE] /usr/local/sceo/mod/sceo_mysql.conf
2743 ?        S      0:00 [SCEO_MODULE] /usr/local/sceo/mod/sceo_mysql.conf
2745 ?        S      0:00 /usr/local/sceo/sceo
2937 ?        Ss     0:00 /usr/local/sbin/dovecot
2938 ?        S      0:00 dovecot-auth
2939 ?        S      0:00 dovecot-auth -w
2941 ?        S      0:00 pop3-login
2942 ?        S      0:00 pop3-login
2943 ?        S      0:00 pop3-login
2944 ?        S      0:00 imap-login
2945 ?        S      0:00 imap-login
2946 ?        S      0:00 imap-login

Testando o Sceo

# telnet localhost 25
220 mx1.dominio.com.br SMTP SCEO v0.30

ehlo localhost
250-mx1.dominio.com.br
250-SIZE 10485760
250-AUTH PLAIN LOGIN
250 8BITMIME

mail from: <lucas@dominio.com.br>
250 Remetente liberado

rcpt to: <lucas@dominio.com.br>
250 Destinatario liberado

data
354 Envie o email e termine com <CRLF>.<CRLF>

From: Testando <lucas@dominio.com.br>
To: <lucas@dominio.com.br>
Subject: Teste

Ola mundo dos emails
Estou apenas fazendo um teste
.


250 Email aceito (ID: 1266282671_29640)

quit
221 Ate logo

Email entregue.

Testando o Dovecot

# telnet localhost 110
+OK Dovecot ready.

user lucas@dominio.com.br
+OK

pass senha123
+OK Logged in.

Lembre-se de colocar a senha que usou na criação do email "lucas@dominio.com.br" no INSERT de MySQL mais acima.

list
+OK 1 messages:
1 348
.

retr 1
+OK 348 octets
Return-Path: <lucas@dominio.com.br>
Received: from teste (localhost[127.0.0.1])
        by mx1.dominio.com.br SMTP SCEO v0.30b id 1266282671_mx129640
        for <lucas@dominio.com.br>; Wed, 22 Sep 2010 00:11:32 -0300
From: Testando <lucas@dominio.com.br>
To: <lucas@dominio.com.br>
Subject: Teste

Ola mundo dos emails
Estou apenas fazendo um teste

.

quit

+OK Logging out.

Nosso servidor já está pronto para receber emails.

Vamos agora a uma parte mais avançada do servidor. Combate ao Spam!

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Downloads
   3. Instalando o Sceo
   4. Instalando o Dovecot
   5. SPF e Greylist
   6. Antivírus Clamav
   7. Spamassassin
   8. Quota de envio
   9. Técnicas diversas
Outros artigos deste autor

Servidor de e-mail no Linux com MTA Sceo

Benchmark entre servidores de e-mails

Dividindo carga de saída de servidor SMTP (MTA Selor)

MTA Selor: Servidor de E-mails - Novo Projeto GPL

Leitura recomendada

Instalando o servidor de mensagens Postfix no Slackware 10.1

Recuperando senhas de e-mails esquecidas usadas no Claws-Mail

POSTFIX + SASL - Autenticando em SMTP remoto

Instalando o Thunderbird e colocando o atalho no desktop

Configurando o SendMail

  
Comentários
[1] Comentário enviado por leoberbert em 10/10/2010 - 03:59h

Excelente Artigo...

Está de parabéns!

[2] Comentário enviado por fmpfmp em 15/10/2010 - 16:01h

Só faltou a instalação de um sistema de Webmail para completar o artigo.

[3] Comentário enviado por obernan em 13/12/2010 - 20:26h

Valeu brother, muito bom seu tuto, obrigado !!!!

[4] Comentário enviado por ricardoschet em 08/03/2013 - 13:35h

Uso e recomendo


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts