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: 47.178 ]

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

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)

Servidor de e-mail no Linux com MTA Sceo

Leitura recomendada

Migrando entre clientes de correio eletrônico

Qmail Auditor, auditoria no servidor Qmail

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

Sendmail sem complicações

Tutorial: Como instalar o Openfire (Wildfire) no Kubuntu 7.10 (Gutsy Gibbon) com o "copiar e colar"

  
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