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.879 ]

Por: Lucas Priori em 08/10/2010


Instalando o Sceo



[MTA-Sceo]

Para instalar o Sceo basta você descompactá-lo na raiz do sistema.

# cp sceo_0.30.tar.bz2 /
# cd /
# tar xjf sceo_0.30.tar.bz2


Foram criados os seguintes diretórios:

/usr/local/sceo
/var/spool/sceo
/var/log/sceo

O binário e os arquivos de configuração do Sceo estão em /usr/local/sceo. A "fila" ficará em /var/spool/sceo e os logs em /var/log/sceo. Foi criado o rc.sceo dentro de /etc/rc.d para ligar/desligar o MTA.

Adicione o usuário "sceo":

# groupadd -g 105 sceo
# useradd -g sceo -u 105 sceo


As pastas /var/log/sceo e /var/spool/sceo ficaram com permissão 777 porque não da para saber qual usuário você utilizará com o MTA. Vamos arrumar a permissão para ficar mais seguro:

# chown -R sceo. /var/spool/sceo /var/log/sceo
# chmod -R 744 /var/spool/sceo /var/log/sceo


Vamos à configuração (eu gosto do "pico" como editor de textos, use o de sua preferência).

# cd /usr/local/sceo/
# pico sceo.conf


Procure e altere a opção "Server_name" colocando o nome reverso do endereço IP de seu servidor (FQDN). Exemplo:

Server_name "mx1.meudominio.com.br"

É importantíssimo colocar corretamente o nome do seu servidor na Internet para não ser recusado pelos demais MTAs.

Procure agora a linha "Module """ e comente-a com "#" na frente. Ela deve ficar assim:

#Module ""

Descomente a linha Module que aponta para o módulo MySQL. A linha deve ficar assim:

Module "/usr/local/sceo/mod/sceo_mysql /usr/local/sceo/mod/sceo_mysql.conf"

Agora procure e altere a opção Dlocal para:

Dlocal "/usr/local/libexec/dovecot/deliver -d %l <"

Salve e feche o sceo.conf.

Vamos criar alguns links.

O sceo vem com as ferramentas sceo_mail e fila.
  • sceo_mail - Substitui o ‘sendmail’ usado pelos programas locais como Cron, PHP ( função mail) etc. Vamos linka-lo com o nome /usr/bin/sendmail, assim, você não precisa reconfigurar esses programas.
  • fila - Mostra a atual fila de emails em processamento do Sceo. Ele praticamente lista o /var/spool/sceo

# ln -sf /usr/local/sceo/sceo_mail /usr/bin/sendmail
# ln -sf /usr/local/sceo/fila /usr/bin/fila


E o binário do Sceo, para facilitar o processamento manual de um ID de fila com a opção -p.

# ln -sf /usr/local/sceo/sceo /usr/bin/sceo

Em relação a quota, não é preciso fazer nada. Ela funcionará corretamente para cada email com base no que você colocar em seu registro no banco de dados.

Módulo Sceo_MySQL

No Slackware é preciso rodar os seguintes comandos para preparar o MySQL:

# /usr/bin/mysql_install_db
# chown -R mysql. /var/lib/mysql/mysql
# chown -R mysql. /var/lib/mysql/test
# chmod 555 /etc/rc.d/rc.mysqld


Agora ligue o banco de dados:

# /etc/rc.d/rc.mysqld start

Vamos criar o banco de dados das contas de e-mails.

# mysql
mysql> create database mail;
mysql> grant all privileges on mail.* to sceo@localhost identified by "minhasenha";
mysql> flush privileges;
mysql> quit;

LEMBRETE: Em todos os comandos e exemplos de configuração abaixo que requerem o uso da senha do banco de dados eu usarei "minhasenha", você deve estar atento para colocar a senha correta. Em um outro tutorial que escrevi, recebi muitos e-mails de pessoas em que o seu servidor não funcionava porque esqueciam de colocar a senha correta.

Instalando o módulo em seu devido lugar:

# cd /usr/local/sceo/mod
# cp /home/progs/sceo_mysql_1.2.5.tar.bz2 .
# tar xjf sceo_mysql_1.2.5.tar.bz2


Compile o módulo com o comando:

# gcc sceo_mysql.c -o sceo_mysql -lmysqlclient -lcrypt

Se a compilação acima der algum erro é porque você não tem o Mysql-devel instalado corretamente ai em seu sistema operacional. Lembre-se que eu estou usando um Linux Full (tudo instalado).

Agora edite o sceo_mysql.conf:

# pico sceo_mysql.conf

Altere a opção "Pass=" colocando a senha que usou na criação do banco de dados.

Salve e feche o arquivo. Agora crie a estrutura do banco de dados "mail" com o seguinte comando:

# mysql mail < sceo_mysql.sql

No meu caso, acabei de instalar o Slackware e o MySQL por padrão não vem com a senha do root ligada, por isso eu não precisei especificar a senha do root do banco de dados na linha acima. Caso o seu MySQL esteja com senha, use o comando "mysql -p mail < sceo_mysql.sql" e entre com a senha do root do MySQL quando for solicitado.

Insira um registro de e-mail para testes:

# mysql
mysql> use mail;
mysql> INSERT INTO domain VALUES ('dominio.com.br');

O comando abaixo é em uma única linha:

mysql> INSERT INTO users (mail,home,pass,maildir,date_add,time_add,domain,name) VALUES ('lucas@dominio.com.br','/home/mail/dominio.com.br/lucas/', encrypt('senha123','$1$e8O/rKAf'),'Maildir','2010-02-16','01:22:00','dominio.com.br','Lucas Testador');

E agora saia do cliente do MySQL:

mysql> quit

Rápida explicação das tabelas:
  • users - Tabela onde ficam os e-mails locais
  • aliases - Tabela que contém os alias dos e-mails
  • domain - Tabela que diz ao Sceo quais são os domínios locais
  • adomain - Tabela que contém os alias de domínios.

Vamos testar o sceo_mysql agora:

# ./sceo_mysql sceo_mysql.conf

Deve aparecer:

+OK SCEO_Mysql v 1.2.5 Conectado

Caso apareça "Não conectado" é por que você fez algo errado. Veja se o MySQL esta ligado ou se a senha foi configurada corretamente no sceo_mysql.conf.

Dentro do módulo digite:

user lucas@dominio.com.br

E ele responderá:

+OK

Digite:

local dominio.com.br

+OK

Digite:

quota lucas@dominio.com.br

+OK 100000000

Módulo e MySQL funcionando. Pressione CTRL + D para sair.

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

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

Benchmark entre servidores de e-mails

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

Leitura recomendada

Solução completa com o sendmail (segunda edição)

Enviando e-mail pelo shell com smtp remoto

Servidor de e-mail com anti-vírus: MailScanner + Exim + Clamav + Cpanel/WHM

Configurando o Korn

Alta disponibilidade com Debian Lenny + Heartbeat + DRBD8 + OCFS2 + MONIT + LVS

  
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