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

Como criar rapidamente, um servidor de E-mails para grande fluxo de mensagens e de fácil administração. Inclui: SMTP (MTA Selor), POP3/IMAP (Dovecot), base MySQL, WEBmail (Roundcube), quota de envio de mensagens e técnicas anti-Spam.

[ Hits: 17.870 ]

Por: Lucas Priori em 15/05/2014


Filtros anti-Spam



O seu servidor de E-mails já está pronto.
Mas, seria muito bom criar alguns filtros básicos de corte de lixo eletrônico:

Todos os filtros anti-Spam, nós devemos criar usando os arquivos de eventos (regras) do Selor.

# cd /usr/local/selor

BLACKLIST mundial e SPF

Crie o arquivo referente ao evento Event.from (/usr/local/selor/rules_from) e coloque o seguinte conteúdo:

Auth? Stop!
Ip? "127.0.0.1" Stop!
Ip? "192.168.0.0/24" Stop!

# -- Fazendo teste de SPF --
Spf_test!
Spf_resp? "3" Reply! "550 Recusado por nao passar no SPF" Deny!
Spf_resp? "4" Reply! "550 Recusado por nao passar no SPF" Deny!

# -- Checando por BLACKLIST mundial --
Rbl_test! "b.barracudacentral.org zen.spamhaus.org"
Itest? "%R>0" Reply! "550 Voce esta listado em %R Blacklists. Resp: %T" Deny!

# ---- FIM DO ARQUIVO ---

Para maiores explicações do que é cada opção, dê uma olhada na documentação do Selor.

Testes no Helo/Ehlo

Primeiro você precisa ter em mente, qual é o IP do seu servidor na Internet. No exemplo abaixo, vou supor que o IP do meu servidor seja 240.240.240.240 e seu nome seja srv1.meuservidordemails.com.

Abra o arquivo referente ao evento Event.connection (/usr/local/selor/rules_connection) e coloque o seguinte conteúdo no FINAL do arquivo:

!Ip? "240.240.240.240" !Ip? "127.0.0.1" Find_str? "%h:127.0.0.1" Deny!
!Ip? "240.240.240.240" !Ip? "127.0.0.1" Find_str? "%h:srv1.meuservidordemails.com" Deny!

Limitar e-mails nulos

A regra é: remetente nulo não pode enviar um E-mail para mais de um destinatário.

Crie o arquivo referente ao evento Event.rcpt (/usr/local/selor/rules_rcpt) e coloque o seguinte conteúdo:

From? "" Itest? "%n>1" Reply! "550 Muitos destinatarios para um remetente anonimo" Deny!

Controlar quem pode especificar um domínio interno:

Pense o seguinte: quando algum host que não se autenticou e não pertence a nossa rede local ou de servidores, conecta-se em nosso servidor SMTP para entregar uma mensagem e diz que o endereço do remetente é justamente uma conta do NOSSO servidor, a probabilidade disso ser um Spam é 99,99%.

Podemos fazer o Selor cortar isso, testando se o endereço do remetente é interno e se não foi um IP da rede local ou autenticado que está tentando enviá-lo:

Digamos que a rede dos meus servidores sejam 240.240.240.0/24.
Coloque a linha abaixo antes das regras de SPF (as que você adicionou mais acima) do arquivo /usr/local/selor/rules_from:

Internal_from? !Auth? !Ip? "127.0.0.1" !Ip? "192.168.0.0/24" !Ip? "240.240.240.0/24" Reply! "550 Voce precisa autenticar-se" Deny!

A regra acima, primeiro testa se o remetente é um domínio interno, se for, o Selor vai testar se a conexão NÃO é autenticada. Depois, se não partiu do 127.0.0.1, se não partiu da rede 192.168.0.0/24 e se não partiu da rede de meus servidores 240.240.240.0/24 e então, responde que ele precisa se autenticar para poder enviar.

Acreditem. Isto corta bastante lixo.

Obs.: nos arquivos de eventos (regras), todas as opções terminadas com "?", são CONDIÇÕES e as terminadas com "!", são AÇÕES. Mas, a "!" logo na frente de cada CONDIÇÃO, na verdade é um NEGADOR, ele inverte o sentido do teste, ou seja, "Auth?" é verdadeira se a conexão É autenticada e "!Auth?" é verdadeira se a conexão NÃO é autenticada.

Você pode usar as condições e ações do Selor para fazer qualquer coisa, se quiser, pode até fazer um Log de tudo que foi cortado e o motivo, usando a ação "Log!" e executar programas externos com a ação "Exec!". Consulte a documentação do Selor e seu fórum.

O Selor tem mecanismos de defesa contra DoS também, através do evento Event.Limit, mas não vou especifica-lo aqui, para não estender muito o artigo, consulte na documentação do projeto caso você sofra esse tipo de ataque.

Página anterior     Próxima página

Páginas do artigo
   1. Apresentação e downloads
   2. Instalando o servidor SMTP
   3. Instalando o servidor POP3/IMAP
   4. Instalação do WEBmail
   5. Filtros anti-Spam
   6. Quota de envio de E-mails
Outros artigos deste autor

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

Benchmark entre servidores de e-mails

Servidor de e-mail no Linux com MTA Sceo

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

Leitura recomendada

Qmail Auditor, auditoria no servidor Qmail

Postfix + AntiSpam (Postgrey)

Instalando o Thunderbird e colocando o atalho no desktop

POSTFIX + SASL - Autenticando em SMTP remoto

Qmail a La Toaster no Debian Etch

  
Comentários
[1] Comentário enviado por demoncyber em 15/05/2014 - 10:36h

Olá,

Desculpe a pergunta de alguém sendo preguiçoso XP .. Vi que têm uma versão para FreeBSD, você sabe se o programa compila com LLVM ou se você esta fazendo uso de chamadas ou algo específico que só funcione com GCC, ou algo que nem vale tentar a empreitada de tentar ajustar o programa para compilar com LLVM ?

Você é o pai da criança :) vai ser mais rápido e fácil de responder.

Pergunto isto, pois a partir do freebsd 10 o compilador padrão é o LLVM .... ( blah blah ), instalar mais um compilador ( blah blah )

No mais achei bem interessante o software, pena que ainda não está utilizando algum gerenciador de código fonte como SVN, ou GIT.

Assim que conseguir um tempo melhor, espero testar e contribuir.

Ressalto aqui parabenizando a iniciativa do projeto, parabéns.

Abraços

[2] Comentário enviado por jov em 15/05/2014 - 11:46h

Parabéns pela iniciativa!

[3] Comentário enviado por lpriori em 15/05/2014 - 19:32h

Boa noite Demoncyber,

Então, eu fiquei sabendo sim que o FreeBSD estava adotando este novo compilador, porém, te confesso que ainda não testei nele. O FreeBSD no qual eu compilei e fiz testes foi o 9.0. que ainda usa o GCC.

Além do GCC, você precisa do NASM ( Montador Assembly ) também. Mas este é padrão a muito tempo em tudo quanto é Linux e FreeBSD.

Vou puxar esta nova versão para ver como é o esquema e se precisar de adaptações, eu faço. Obrigado pela dica. Vi que você já se cadastrou no Forum.
Fique a vontade para fazer criticas, tirar dúvidas ou sugestões. Como falei, estou sempre escutando o que a moçada precisa para implantar.

Realmente não usei qualquer tipo de gerenciador de código. Vamos ver como será daqui pra frente.
Eu agora estou em uma fase divulgação e estou traduzindo o site para o ingles.

Obrigado !


[4] Comentário enviado por igor.ol13 em 25/01/2015 - 14:02h


Olá, boa tarde. Agradeço e parabenizo pelo projeto, é muito bom ver brasileiros cada vez mais criando novos projetos...

Aparentemente tudo funcionou perfeitamente, exceto uma coisa: não envia emails para servidores externos, o roundcube sempre dá a mensagem "Erro SMTP (550): Falha ao adicionar o destinatário
"email@yahoo.com" (Relay denied)."

O que eu posso fazer pra corrigir o problema?

[5] Comentário enviado por willian.firmino em 29/05/2015 - 16:01h

Este projeto ainda esta ativo ?

[6] Comentário enviado por mrbirth em 09/06/2015 - 09:07h


Olá Lucas, estou criando um novo servidor de email utilizando o Selor, parei na hora de testar o smtp no tel net aparece a seguinte msg: Trying ::1... Connected to localhost. Escape character is '^]'. 220 mail.etc.etc.etc ESMTP Exim 4.84... Não aparece erros nos logs, o que pode estar ocorrendo?? Obrigado!!!

[7] Comentário enviado por lpriori em 09/06/2015 - 12:29h


[6] Comentário enviado por mrbirth em 09/06/2015 - 09:07h


Olá Lucas, estou criando um novo servidor de email utilizando o Selor, parei na hora de testar o smtp no tel net aparece a seguinte msg: Trying ::1... Connected to localhost. Escape character is '^]'. 220 mail.etc.etc.etc ESMTP Exim 4.84... Não aparece erros nos logs, o que pode estar ocorrendo?? Obrigado!!!


Fala mrbirth,

O problema ai está ocorrendo porque o Exim está rodando ainda, o Selor nem ligou aí pois a porta 25 está sendo usada. Desative o Exim e ligue o Selor novamente

Abraço

[8] Comentário enviado por lpriori em 09/06/2015 - 12:35h


[5] Comentário enviado por willian.firmino em 29/05/2015 - 16:01h

Este projeto ainda esta ativo ?


Ola Willian.

Não entendi o motivo da pergunta, mas sim, esta ativo sim. É um projeto GPL

Abraço

[9] Comentário enviado por lpriori em 09/06/2015 - 12:43h


[4] Comentário enviado por igor.ol13 em 25/01/2015 - 14:02h


Olá, boa tarde. Agradeço e parabenizo pelo projeto, é muito bom ver brasileiros cada vez mais criando novos projetos...

Aparentemente tudo funcionou perfeitamente, exceto uma coisa: não envia emails para servidores externos, o roundcube sempre dá a mensagem "Erro SMTP (550): Falha ao adicionar o destinatário
"email@yahoo.com" (Relay denied)."

O que eu posso fazer pra corrigir o problema?


Desculpe a demora.

Mas o que ocorre ai é que você precisa ativar o Relay para as conexões para sua rede interna ou conexões autenticadas.

'Relay' na verdade é o ato do servidor de email repassar um email para fora quando um destinatário for externo.
Você deve dar relay APENAS para conexões autenticadas ou alguns IPs de sua rede interna ou ips confiáveis.

No selor.conf, você encontra a opção Auth_relay que deve estar setada para 1 e então o Selor vai dar Relay pra conexões autenticadas.

Mas me parece que no seu caso ai você esteja querendo dar Relay para sua rede interna.
No arquivo rules_connection, mande dar Relay para sua rede.

Digamos que sua rede interna ai seja: 10.10.10.0/24, coloque a seguinte linha no rules_connection:
Ip? "10.10.10.0/24" Relay!

Não é preciso reiniciar o Selor.

De uma olhada no help do site:
http://www.mtaselor.com.br/?conteudo=11#Relay

Abraço

[10] Comentário enviado por mrbirth em 10/06/2015 - 08:58h


Bom dia Lucas, legal rapaz conseguir acertar o smtp exatamente o exim4 estava ativo, muito obrigado!! Agora preciso acertar o dovecot no teste na 110 aparece a seguinte msg "-ERR Disconnected: Auth process broken", poderia me ajudar novamente? Obrigado mesmo!! Abs.

[11] Comentário enviado por lpriori em 10/06/2015 - 12:17h

Fala mrbirth,

Você deve ter pulado algum ponto do tutorial na parte do Dovecot, mas para descobrir o motivo, teria que olhar o /var/log/maillog que é onde o Dovecot anota mensagens de erros.

Se quiser, me mande por mensagem direta o que aparece no /var/log/maillog relacionado ao Dovecot ou se quiser, mesmo não sendo relacionado diretamente ao Selor, pode postar o erro la no Forum (http://www.mtaselor.com.br/forum)

Abraço

[12] Comentário enviado por mrbirth em 10/06/2015 - 14:34h


[11] Comentário enviado por lpriori em 10/06/2015 - 12:17h

Fala mrbirth,

Você deve ter pulado algum ponto do tutorial na parte do Dovecot, mas para descobrir o motivo, teria que olhar o /var/log/maillog que é onde o Dovecot anota mensagens de erros.

Se quiser, me mande por mensagem direta o que aparece no /var/log/maillog relacionado ao Dovecot ou se quiser, mesmo não sendo relacionado diretamente ao Selor, pode postar o erro la no Forum (http://www.mtaselor.com.br/forum)

Abraço


Obrigadão Lucas, olha o erro:
Jun 10 14:36:43 mail dovecot: auth: Fatal: sql /usr/local/etc/dovecot/dovecot-sql.conf: Error in configuration file /usr/local/etc/dovecot/dovecot-sql.conf line 1: Unknown setting: ver
Jun 10 14:36:43 mail dovecot: master: Error: service(auth): command startup failed, throttling for 4 secs
Jun 10 14:36:43 mail dovecot: pop3-login: Disconnected: Auth process broken (disconnected before auth was ready, waited 0 secs): user=<>, rip=::1, lip=::1, secured, session=<FhWCUS0YLQAAAAAAAAAAAAAAAAAAAAAB>

Achei o problema copiei o script errado, é muita correria sempre passa algo, ja corrigir, vou testar. Valeu novamente!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts