Servidor de e-mail no Linux com MTA Sceo

Como configurar um servidor de email no Linux usando MTA Sceo e Courier-IMAP com base de dados MySQL, Maildir, proteção antivírus com Clamav, proteção antispam com SPF e Greylist, quota de caixa postal e controle de número de emails enviados por cliente.

[ Hits: 43.690 ]

Por: Lucas Priori em 15/09/2008


Greylist



Lógica da Greylist

A Greylist faz com que um email seja temporariamente recusado por nosso servidor, se por acaso o host remoto seguir as regras do protocolo SMTP ele vai tentar reenviar a mensagem mais tarde onde será aceita sem problemas pelo nosso servidor. Grande parte dos spammers não tentam reenviar uma mensagem em caso de erro temporário. Todo esse processo é controlado via banco de dados pelo programa sceo_greylist.

O filtro Greylist é muito poderoso e barra muito lixo. Muitos servidores por aí usam Greylist baseada no IP do servidor remoto, mas há casos em que um host possui vários IPs e isso prejudica muito o esquema básico da Greylist. Vamos fazer então o sceo_greylist trabalhar não com o IP, mas com o endereço reverso do servidor e caso o mesmo não tenha, o Sceo automaticamente utilizará o endereço IP.

O Gmail é um exemplo onde um mesmo endereço reverso tenta entregar uma mensagem com muitos IPs diferentes. Outro diferencial é que NÃO vamos rodar Greylist caso o SPF do domínio esteja OK (Pass). Isto agiliza a entrega de emails de servidores válidos (vindos do Gmail, Hotmail etc). Isto me tirou muita dor de cabeça, já que o spammer que é capaz de configurar um registro SPF consegue passar tranqüilamente por uma Greylist.

Para tudo ficar organizado crie o diretório /usr/local/sceo/uteis:

# mkdir /usr/local/sceo/uteis
# cd /home/temp
# cp sceo_greylist.tar.bz2 /usr/local/sceo/uteis/
# cd /usr/local/sceo/uteis
# tar xjvf sceo_greylist.tar.bz2


Crie o banco de dados:

# mysql

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


Você pode usar outro usuário e senha se quiser. Jogue do arquivo sceo_greylist.sql para o banco de dados:

# mysql sceo_greylist < sceo_greylist.sql

Agora é só editar o sceo_greylist.c:

# pico sceo_greylist.c

Procure as defines USUARIO e SENHA para mudar seus "valores" se necessário.

#define USUARIO "sceo"
#define SENHA "minhasenha"

Lembre-se de colocar a senha que especificou na criação do banco de dados sceo_greylist acima. Salve, saia do arquivo e compile-o:

# gcc sceo_greylist.c -o sceo_greylist -lmysqlclient

Caso dê algum erro para compilar, deve ser porque você não tem todos os pacotes do MySQL instalado.

Precisamos configurar o programa sceo_greylist para o Sceo chamá-lo. Copie o binário gerado para um diretório que esteja no PATH (Ex: /usr/bin).

# cp sceo_greylist /usr/bin

Edite o arquivo /usr/local/sceo/regras_destinatario.

# pico /usr/local/sceo/regras_destinatario

Acrescente a seguinte linha:

!SPF_resp? "1" !Auth? Internal_rcpt? Exec! "sceo_greylist -i %s -f %f -t %r" Exec_resp? "1" Reply! "451 Tente mais tarde" Deny!

Obs.: Todos comandos acima DEVEM ficar em uma única linha.

Esta linha roda o programa externo sceo_greylist caso a resposta do SPF NÃO seja 1 e o cliente NÃO seja autenticado. A exclamação (!) na frente da condição funciona como um negador.

Salve e saia do arquivo. Não é preciso reiniciar o Sceo. Você só precisa reiniciá-lo quando alterar o arquivo sceo.conf.

Agende o seu cron para rodar a seguinte linha uma vez ao dia:

sceo_greylist -clean

Linha do cron:

00 0 * * * /usr/bin/sceo_greylist -clean

Isso fará a exclusão de registros mortos mantendo o banco de dados limpo e rápido.

Página anterior     Próxima página

Páginas do artigo
   1. Preparando-se
   2. Courier-Authlib
   3. Courier-IMAP
   4. MTA Sceo
   5. Configurando o SPF
   6. Greylist
   7. Quota de caixa postal e número de emails enviados
   8. Antivírus Clamav e finalizando
Outros artigos deste autor

Benchmark entre servidores de e-mails

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

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

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

Leitura recomendada

Servidor de e-mail Postfix + MySQL + Dovecot + Cyrus

Post-la - Gerador de relatórios para o Postfix

Autenticando e enviando e-mail diretamente através da linha de comando

Instalação do Zextras Suite para o Zimbra

Zimbra no Debian 5

  
Comentários
[1] Comentário enviado por giovanildo em 15/09/2008 - 09:49h

É por causa de artigos como esse que se tornou rotina a minha visita a este site, o q tenho a dizer eh obrigado.

[2] Comentário enviado por naarea em 15/09/2008 - 11:56h

So tomem cuidado com a questão da licença do software
"2) Esta versão do MTA Sceo não disponibiliza seu código-fonte, ficando
obrigado a qualquer um não modificar, descompilar ou utilizar qualquer outro
meio para descobrir o código-fonte do programa."

"Você deve estar ciente de que o programa não
é livre de defeitos e seus autores e/ou distribuidores não dão e não
podem dar qualquer tipo de garantias"

Mais parabens pelo tutorial.

[3] Comentário enviado por lpriori em 15/09/2008 - 13:24h

Ola naarea e giovanildo,

Obrigado, é muito bom poder contribuir para a comunidade.
Pretendo escrever muito mais.

O software é grátis como os de licença GPL, mas por enquanto só não é possível modifica-lo porque seu código fonte não esta disponível.

Toda idéia das "garantias" foram tiradas da licença GPL que tenta sempre proteger o autor de qualquer problema. Foi apenas isso que tentei fazer. Este programa esta em uso em muitos lugares e a muito tempo sem dar problemas, sem sequer precisar ser reiniciado.

Não tenho sequer pensamentos de num futuro próximo cobrar o uso do programa, muito pelo contrário, espero disponibiliza-lo sob GPL também, assim como seus utilitários disponíveis no site.

Conheço vários outros programadores que também tem medo de disponibilizar o código fonte de seu projeto e na maioria das vezes eles nem mesmo divulgam o projeto. Uma pena pois nosso país é residência dos melhores programadores.

O Sceo é um projeto muito especial pra mim. Esta disponível porque tenho certeza absoluta que seu poder em velocidade, flexibilidade e segurança vai ajudar muito todos nós da comunidade e porque tenho o sonho de incentivar nós brasileiros a mostrar que temos o potencial para bater de frente com os enlatados de fora e principalmente porque quero receber dicas de melhorias.

Gostaria de aproveitar e agradecer ao grupo vivaolinux. Achei extremamente profissional o processo de criação de tutorial aqui.



[4] Comentário enviado por renatomartins em 15/09/2008 - 14:35h

Parabéns pelo MTA.
Mas não caia no erro do qmail, que devido o tipo da licença não se popularizou, e não pode ser integrada nas distribuições e não teve o devido crescimento. Isso foi uma grande perda para a comunidade livre.
Mas mesmos sem licença mas com código aberto ele é considerado o melhor servido de email do mundo.( o código do qmail é aberto com ressalva o núcleo não pode ser alterado só podemos aplicar patch. )

Outra coisa se você abrir seu código alem de ganhar varias contribuições e atá melhorias. Você pode aprende muito com outros programadores e talvez até uma distro linux receber seu servidor como uma alternativa ate mesmo para o qmail e portfix.

Eu mesmo já precisei fazer varias alterações tanto no postfix quanto qmail e isso só foi possível devido o código ser aberto

Um grande abraço e novamente Parabéns

[5] Comentário enviado por grandmaster em 15/09/2008 - 17:24h

Muito bom saber que temos mais opções :D

Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[6] Comentário enviado por nariz em 16/09/2008 - 08:36h

nao conhecia esse
testarei em breve

obrigado

[7] Comentário enviado por c.rafael em 16/09/2008 - 17:32h

lpriori ,

Meus parabéns pelo o software e pelo insentivo de colocar o mesmo no VL. Irei testar o mesmo e colocar o resultado do mesmo aqui.

Abraços

[8] Comentário enviado por Telli em 16/09/2008 - 17:44h

Mas não possui nem um webmail ? E como criar as contas de e-mail nele ?

[9] Comentário enviado por lpriori em 20/09/2008 - 17:43h

Desculpem-me mas ficou faltando um comando no tutorial.

Logo após a instalação do Maildrop, é preciso setar o uid dele senão ele pode ter problemas para entregar o email na caixa postal.

# chmod 4555 /usr/local/bin/maildrop

É só fazer isto e tudo fica ok

Em relação a criação de contas de emails:
Estou terminando uma ferramenta de criação das contas de emails no banco de dados MySQL que será anexada ao pacote do sceo_mysql em breve.


Obrigado a todos pelos comentários.
Espero que gostem do projeto.


[10] Comentário enviado por kram3r em 09/10/2008 - 20:43h

Caro lpriori,
adorei o seu mta. Simples prático rápido e seguro.
Implementei ele em 2 servidores que utilizo e estão trabalhando de forma absolutamente Jóia!!!
porem, vc comentou que esta terminando uma ferramenta de criacao de contas. Eu a fiz e estou somente finalizando e o código estará liberado após alguns testes. Inclusive gostaria de uma avaliação sua e do pessoal que já o tem implementado (basta entrar em contato).
Outra coisa que gostaria de saber, é como implementar lista de discussao nele (como o mailman, ezmlm, majordomo e outros...)Há algum já implementado com SCEO?

Grande abraço e parabens.

[11] Comentário enviado por lpriori em 21/10/2008 - 16:13h

Obrigado pelo comentário aqui e o que me enviou por email, kram3r

Como disse a você via email, eu nunca instalei esses gerenciadores de listas com Sceo. Quando você o fizer,
ficaremos feliz em ler um tutorial seu explicando o caminho (principalmente eu) ;-)

Podem enviar qualquer dúvida ou sugestão por email ou pelo site sceo.hospedaria.com.br que
ficarei feliz em ajudar ou que me ajudem. =)

Uma nova versão do Sceo esta a caminho, com muitos melhoramentos, por isso é importante que eu
receba sugestões para o projeto.

Há uma nova versão do modulo Mysql
A versão apontada pelo tutorial é a versão 1.1 e a nova versão é a 1.2
http://sceo.hospedaria.com.br/ferramentas/sceo_mysql_1.2.tar.bz2

Foi corrigido apenas um bug no controle de quota para caixas postais gigantes.

Abraço a todos e mais uma vez obrigado a equipe do VOL.



[12] Comentário enviado por lpriori em 14/11/2008 - 16:46h

Esta disponível no site do projeto o Sceo-UI. É uma ferramenta extremamente útil escrita em PHP para administrar seu servidor de emails.
Foi programada pelo Ananias (kram3r)

O link é http://sceo.hospedaria.com.br/ferramentas/sceo-ui-0.6.tar.gz


Obrigado Ananias por contribuir para o projeto. O administrador ficou excelente.

[13] Comentário enviado por lpriori em 12/12/2008 - 13:05h

Me desculpem mais eu percebi um erro no tutorial. É um erro de digitação apenas.

Na parte de Greylist, a regra que aciona o programa no arquivo regras_destinatario esta incorreta.

Na regra:
!SPF_resp? "1" !Auth? Internal_rcpt? Exec! "sceo_greylist -i %s -f %f -t %r" Exec_resp? "1" Reply! "451 Tente mais tarde" Deny!

A primeira condição esta digitada de forma errada, o correto é:
!Spf_resp? "1" .....

Com o erro, a Greylist acaba não sendo processada e por conseqüência, muitos Spams passam.



[14] Comentário enviado por calaff2 em 31/01/2009 - 23:46h

Ae meu velho estou com alguns problemas nunca configurei um servidor de email.
Vamos lá:
telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.

login lucas@dominio.com.br mudar123
-ERR Invalid command.

login idalmo@ipxba.no-ip.biz
-ERR Invalid command.

elnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.

user lucas@dominio.com.br
+OK Password required.

ass mudar123
-ERR Temporary problem, please try again later
Connection closed by foreign host.

telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
user idalmo@ipxba.no-ip.biz
+OK Password required.
pass mudar123
-ERR Temporary problem, please try again later
Connection closed by foreign host.




[15] Comentário enviado por lpriori em 01/02/2009 - 12:56h

Olá calaff2,

O primeiro problema ocorreu porque você errou a porta. Você deu comandos de IMAP no POP3

"login lucas@dominio.com.br mudar123" é um comando de IMAP que funciona na porta 143

Veja que você deu um telnet na porta 110

O outro problema ocorreu porque provavelmente você não criou o diretorio HOME do email lucas@dominio.com.br

De uma olhada no tutorial, antes ele te manda criar o diretorio home do email...

Abraço,
Lucas

[16] Comentário enviado por calaff2 em 01/02/2009 - 14:41h

Lucas você tem como informar seu msn e seu email para contato tirar algumas duvidas?


telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION STARTTLS] Courier-IMAP ready. Copyright 1998-2008 Double Precision, Inc. See COPYING for distribution information.
? login lucas@dominio.com.br mudar123
* BYE Temporary problem, please try again later
Connection closed by foreign host.


telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
user lucas@dominio.com.br
+OK Password required.
pass mudar123
-ERR Temporary problem, please try again later
Connection closed by foreign host.



ta criado o direotrio

ls /home/mail/dominio.com.br/lucas/Maildir/
cur/ maildirsize new/ tmp/

ls /home/mail/ipxba.no-ip.biz/idalmo/Maildir/
cur/ maildirsize new/ tmp/


Att: Idalmo Junior

[17] Comentário enviado por lpriori em 02/02/2009 - 16:10h

Pode ser um problema de permissão então.

Tente dar um chmod -R 755 em /home/mail
chmod -R 755 /home/mail

o Corrier é meio chatinho mesmo.

Algum passo foi pulado no tutorial. Verifique se o /usr/local/libexec/courier-authlib/authdaemond esta rodando.


Você pode me contactar pelo email sceo@hospedaria.com.br

Abraço,
Lucas

[18] Comentário enviado por lpriori em 02/02/2009 - 16:11h

Esqueci de um detalhe,

Verifique se é o usuario do diretorio também.

chown -R sceo. /home/mail


[19] Comentário enviado por calaff2 em 11/02/2009 - 14:18h

Lucas velho você esta vivo ? hauhauha mandei alguns emails para você e até agora não recebi resposta .

Abraços

Att: Idalmo Junior

[20] Comentário enviado por lpriori em 22/06/2009 - 15:36h

Gostaria de informar que o código fonte do MTA Sceo será disponibilizado em breve sob licença GPL.
O código fonte esta sendo preparado para um fácil entendimento, como adição de comentários, estrutura interna de distribuição das funções em arquivos fonte separados, etc...

Espero poder contar com a comunidade livre

[21] Comentário enviado por kram3r em 22/06/2009 - 15:46h

Ótima notícia.
Lembrando que uma das ferramentas externas do sceo já é GPL (nasceu GPL)
O Sceo-UI que era de minha autoria e que já foi modificado por 4 pessoas e hoje tem um mantedor junto comigo na re-escrita do zero utilizando o framework CodeIgniter.
Parabéns pela decisão!

[22] Comentário enviado por poetah em 02/10/2009 - 11:15h

Belo artigo,
mais aqui não se encontra a pasta com o file
para iniciar o imap

/usr/lib/courier-imap/libexec/imapd.rc

debian lenny aqui

?


[23] Comentário enviado por poetah em 03/10/2009 - 01:09h

disfarça, acabei não lendo os erro na compilação e nao vi que precisa de permissão ali para criar as pastas!!!

(Y)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts