Recent Posts

Pages: [1] 2
1
Suggestions / Ferramenta DKIM
« Last post by lucas on June 01, 2022, 10:22:33 PM »
Agora disponível o selor_dkim.

Todas as outras ferramentas DKIM que encontrei por ai eu achei que consumiam muita CPU e I/O de Disco por funcionarem com base na reescrita de todo o arquivo de email que já se encontra no HD do servidor, assim que é recebido.

Por exemplo:
Quando um email é recebido por qualquer MTA, ele precisa ser gravado em Disco, as diversas ferramentas DKIM precisam embutir no meio do HEADER a assinatura e isso requer a reescrita de todo o arquivo. Isto gera I/O de disco desnecessário e muito consumo de CPU.

Fiz o selor_dkim diferente. Assim que o email é recebido e já esta no disco, o programa é acionado para analisar o email e então ele imprime na STDOUT apenas a parte do header referente a DKIM. O Selor por sua vez captura esse texto e só adiciona ao email no momento em que ele esta entregando a mensagem para um MTA externo, sem reescrever o email que esta no spool.

Fiz um tutorial explicando sua instalação: http://www.mtaselor.com.br/?conteudo=15
2
Configuration Files / Usar múltiplos módulos
« Last post by lucas on June 01, 2022, 10:21:21 PM »
Podemos usar mais de um módulo para acesso a base de emails.

É possível configurar o Selor para carregar vários módulos e então especificar a sequência de consulta para cada ocasião.

Vou mostrar como carregar e usar os 3 módulos disponíveis atualmente para o Selor (mysql, passwd e ldap):

Abra o arquivo de configuração (/usr/local/selor/selor.conf) para carregarmos os 3 módulos e configurar suas ocasiões.
Mande o Selor carregar os módulos que você vai usar. No caso deste exemplos, usaremos os 3 módulos:

Code: [Select]
Module "/usr/local/selor/mod/selor_mysql.so /usr/local/selor/mod/selor_mysql.conf"
Module "/usr/local/selor/mod/selor_passwd.so /usr/local/selor/mod/selor_passwd.conf"
Module "/usr/local/selor/mod/selor_ldap.so /usr/local/selor/mod/selor_ldap.conf"

Você poderia parar a configuração por aqui. Neste caso, o Selor consultaria os módulos nesta sequência: mysql, passwd e ldap ,pois, foram carregados neste sequência.
Se ele não encontrar em mysql, ele consulta o passwd e depois o LDAP.

Mas digamos que eu queria usar principalmente o MySQL e o passwd e Ldap apenas para as autenticações:
Volte no arquivo de configuração (selor.conf) e edite as opções: Modseq_auth, Modseq_domain, Modseq_mail, Modseq_alias
Code: [Select]
Modseq_auth "passwd ldap"
Modseq_domain "mysql"
Modseq_mail "mysql"
Modseq_alias "mysql"

Para cada ocasião nós separamos cada ID de módulo por um espaço e entao o Selor vai consulta-los na sequência que você coloca-los.

Atualmente os módulos selor_mysql, selor_passwd e selor_ldap tem seus IDs(nomes) como: mysql, passwd e ldap.
Caso queira consultar qual é o ID de cada módulo, você pode mandar o Selor carrega-los e olhar em seu log /var/log/selor/selor_wrn.log ou usar a ferramenta de testes de modulos: /usr/local/selor/selor_mod_test

Explicação:
  Modseq_auth --> Define a sequência de consulta para a autenticação
  Modseq_domain --> Define a sequência de consulta para domínios locais(vale para a adomain também)
  Modseq_mail --> Define a sequência de consulta para emails locais
  Modseq_alias --> Define a sequência de consulta para alias de emails

Reinicie o Selor:
Linux:
Code: [Select]
/etc/rc.d/rc.selor restart
FreeBSD:
Code: [Select]
usr/local/etc/rc.d/selor restart

Feito
3
Rules and Events / Forçar um MX de destino para certos destinatários
« Last post by lucas on June 01, 2022, 10:19:26 PM »
Muitas vezes, precisamos fazer nosso servidor não entregar diretamente um email a seu destino, enviando a mensagem para outro MTA entrega-la.

Exemplo de uma situação:
Digamos que seu cliente tenta enviar uma mensagem à uma conta do Hotmail e sem qualquer motivo, as mensagens são excluídas de dentro dos servidores da Microsoft. Você já fez de tudo: configurou SPF, Reverso, o IP esta limpo no mundo das Blacklists e nada ( O Hotmail é assim mesmo ), mas, descobre que um outro servidor seu que fica em outro link esta conseguindo entregar as mensagens normalmente. A idéia então é simples: fazer o Selor encaminhar todas as mensagens com destino à @hotmail.com para este servidor secundário e ele vai entrega-las para você.

Digamos que o IP do servidor secundário seja: 10.10.10.100 ( Pode ser um IP de Internet ). Adicione a seguinte regra no evento Event.rcpt ( /usr/local/selor/rules_rcpt )

Code: [Select]
Find_in_to? "@hotmail.com" Mx_dest! "10.10.10.100"

É possível até, especificar outra porta ( além da 25 ) e até fazer o Selor se autenticar com um usuário e senha no outro servidor.

Exemplos...

Outra porta (Pode ser qualquer porta, mas aqui vou usar a 587):
Code: [Select]
Find_in_to? "@hotmail.com" Mx_dest! "10.10.10.100 587"
Autenticando-se com o usuário 'hostmaster@dominio.com.br' e a senha 'minhasenha'
Code: [Select]
Find_in_to? "@hotmail.com" Mx_dest! "10.10.10.100 587" Mx_auth! "hostmaster@dominio.com.br:minhasenha"
Você pode precisar disto para resolver muitos problemas. Alguns deles são:

- Problemas de rotas, Blacklists, Anti-Spam, Controle de fluxo, Balanceamento, etc...
4
Rules and Events / Mudar a rota de saída para cada email
« Last post by lucas on June 01, 2022, 10:17:33 PM »
Se nós temos dois ou mais links de saída para a Internet, nós podemos fazer o Selor enviar um email ou outro por essas rotas alternativas, tudo baseado nos arquivos dos eventos (Regras)

Vou dar como exemplo, cadeias de IPs de rede locais (Mas você pode usar cadeias de IPs válidos na Internet):

Rede Principal: 192.168.0.0/24 (Nesta nós não vamos mexer, apenas citei como exemplo)
IP do Servidor: 192.168.0.100
IP do Gateway: 192.168.0.1

Rede Secundária: 10.0.0.0/24 (É nesta que está o seu link de Internet secundário)
IP do Servidor: 10.0.0.50
IP do Gateway: 10.0.0.1

Vou dar uma explicação por cima de como configurar o segundo link usando o 'ip route'
Abra o arquivo /etc/iproute2/rt_tables, acrescentando logo abaixo de 'default' a seguinte linha:
Code: [Select]
200     link2
Salve e saia do arquivo.

Execute:
Code: [Select]
ip route flush cache
ip route add default via 10.0.0.1 table link2

Com isto, nós dissemos que na tabela link2, o Gateway padrão é o 10.0.0.1 ( Isto poderia ser um IP real de Internet. Aqui eu apenas usei IPs de rede interna como exemplo )

Agora nós precisamos criar uma regra pelo 'ip rule' dizendo que todo pacote que estiver saindo, cujo o IP de origem seja da cadeia 10.0.0.0/24, devem ser tratados pela tabela link2:

Code: [Select]
ip rule add from 10.0.0.0/24 lookup link2
ip route flush cache

A parte das rotas já esta pronta.
Vamos agora a regra do Selor.

Digamos que eu queria fazer com que todo email com destino ao @gmail.com, saida pelo link2:

Abra o arquivo referente ao evento Event.rcpt ( /usr/local/selor/rules_rcpt ) e coloque a seguinte regra:
Code: [Select]
Find_in_to? "@gmail.com" Mx_source! "10.0.0.50"
Salve e saida do arquivo. Esta feito !
Todo email com destino ao @gmail.com vai sair pelo link2.
Você pode adicionar quantos domínios quiser. Uma regra para cada domínio

5
Rules and Events / SRS
« Last post by lucas on June 01, 2022, 10:15:21 PM »
Hoje em dia, quando fazemos um redirecionamento para um email externo e o endereço do remetente também é externo, temos muitos problemas de SPF.
Exemplo:
Digamos que o seu cliente insiste em mandar emails usando como remetente uma conta do @hotmail.com para um destinatário do @gmail.com

O Gmail provavelmente vai considerar a mensagem como SPAM por não passar em diversos testes, incluindo o teste de SPF, pois, o seu servidor não tem permissão para enviar email @hotmail.com

Neste caso, o correto seria você explicar ao seu cliente que ele deveria enviar os emails dele usando o servidor SMTP do Hotmail e não o seu, mas, você usar o recurso de SRS...

O SRS faz o seguinte:
Pega o email do remetente e o altera de forma a usar o seu domínio para enviar as mensagens, mas, mantém o email original do remetente codificado-o no próprio endereço e NÂO altera o endereço original do Header, ou seja, quem receber o email, vai ver e responder o email para o endereço original e não para o que foi codificado.

Exemplo:
xxxxxxxxxxxxx123@hotmail.com
Seria convertido em:
SRS0-XdSeW3WESXssss=hotmail.com=xxxxxxxxxxxxx123@dominiodoseuhost.com

O texto depois do 'SRS0', é um código interno de controle do próprio Selor, que é criado com base em uma senha que você configura dentro do selor.conf. Este código serve como autenticador de retorno. Caso uma mensagem de MAILER-DAEMON volte para este endereço, o Selor poderá checar a autenticidade do email e reconverte-lo e encaminha-lo para o endereço original. Isto impede que spammers usem o seu servidor para enviar virus/spam.

Como configurar:

Abra o selor.conf e defina uma senha para o Srs em Srs_key:

Exemplo:
Code: [Select]
Srs_key "minhasenha"
Srs_shift 0
Srs_alias_redir 1

Explicação:
Srs_key -> Liga e define qual será a senha usada para criar o codigo do SRS
Srs_shift -> Este pode ter qualquer valor entre 0 e 255. É apenas um embaralhador da senha.
Srs_alias_redir -> Liga a chamada à função Srs quando o Selor detecta um redirecionamento via Alias onde o remetente e destinatário são emails externos.

Reinicie o Selor:

Linux:
Code: [Select]
/etc/rc.d/rc.selor restart
FreeBSD:
Code: [Select]
/usr/local/etc/rc.d/selor restart
Feito. Só testar o recurso
6
Rules and Events / SPF
« Last post by lucas on June 01, 2022, 10:13:45 PM »
SPF é um recurso que te permite checar se o remetente especificado é permitido pelo dono do domínio na Internet.

Exemplo:
Ao receber um email cujo remetente seja @gmail.com, o Selor através do SPF pode perguntar aos servidores do Google se aquele IP tem a permissão de enviar emails @gmail.com.

Como configurar:
Abra o arquivo referente ao evento Event.from (Consulte o seu selor.conf) e coloquei a seguinte regra

Code: [Select]
Spf_test!
Spf_resp? "4" Reply! "550 Voce nao passou pelo teste SPF" Deny!
Hadd! "X-SPF: %y"

Valores Possíveis da resposta da função Spf_test!:
0 = None (Não tem SPF)
1 = Pass (Liberado)
2 = Neutral (Neutro)
3 = SoftFail (Este IP Não deveria estar usando este dominio.)
4 = Fail (IP NÃO autorizado. Voce DEVE recursar este email)
5 = TempError
6 = PermError

No exemplo acima, eu mandei recusar apenas os retornos 4, mas, você pode mandar recusar os de valor 3 também.

Não é preciso reiniciar o Selor.
7
Rules and Events / Blacklist - RBL
« Last post by lucas on June 01, 2022, 10:13:07 PM »
Para fazermos uma consulta em uma ou mais Blacklists, podemos usar o evento Event.from, colocando a seguinte regra:

Code: [Select]
Rbl_test! "b.barracudacentral.org zen.spamhaus.org"
Itest? "%R>0" Reply! "550 Voce esta listado em %R Blacklists. Resp: %T" Deny!

Estas linhas recusam o host remoto se estiver em uma ou mais Blacklists.
Se quiser acrescentar mais blacklists, basta adiciona-la a lista ai em cima, separando-a por espaços.

Lembre-se de que quanto mais blacklists você adicionar, mais tempo o servidor vai levar para testar tudo.
8
Rules and Events / Blacklist Local
« Last post by lucas on June 01, 2022, 10:12:32 PM »
Podemos montar nossa própria blacklist, baseada em endereços de remetentes, IPs ou nomes de hosts.

Blacklist por IP:
Evento -> Event.connection (Padrao -> /usr/local/selor/rules_connection) Obs: Veja no seu selor.conf para descobrir qual é o arquivo associado a este evento

Regra:
Code: [Select]
Find_strfile? "%i:/usr/local/selor/blacklist_ip" Reply! "500 Voce esta na blacklist local" Close!
Crie o arquivo /usr/local/selor/blacklist_ip com os IPs que você quer bloquear, um por linha.
Exemplo de arquivo:
Code: [Select]
10.10.10.1
10.0.0.20
192.0.0.1

Coloquei IPs privados na lista acima, apenas como exemplo. É claro que você pode colocar qualquer IP externo.




Blacklist por nome do Host:
Evento -> Event.connection (Padrao -> /usr/local/selor/rules_connection) Obs: Veja no seu selor.conf para descobrir qual é o arquivo associado a este evento
Regra:
Code: [Select]
Find_strfile? "%e:/usr/local/selor/blacklist_hosts" Reply! "500 Voce esta na blacklist local" Close!
Crie o arquivo /usr/local/selor/blacklist_hosts com os nome de hosts que você quer bloquear, um por linha.
Exemplo de arquivo:
Quote
srv.spammer100.com
mxxxx.spamlandia.ru


Blacklist por Remetente:
Evento -> Event.from (Padrao -> /usr/local/selor/rules_from) Obs: Veja no seu selor.conf para descobrir qual é o arquivo associado a este evento
Regra:
Code: [Select]
Find_strfile? "%f:/usr/local/selor/blacklist_from" Reply! "500 Voce esta na blacklist local" Close!

Crie o arquivo /usr/local/selor/blacklist_from com os remetentes que você quer bloquear, um por linha.
Exemplo de arquivo:

Code: [Select]
zespam@spamzao1212.com
marketing@marketinglandiadospam.com.ru


Blacklist por domínio de remetente:
Evento -> Event.from (Padrao -> /usr/local/selor/rules_from) Obs: Veja no seu selor.conf para descobrir qual é o arquivo associado a este evento
Regra:
Code: [Select]
Find_strfile? "%o:/usr/local/selor/blacklist_from_domain" Reply! "500 Voce esta na blacklist local" Close!
Crie o arquivo /usr/local/selor/blacklist_from_domain com os remetentes que você quer bloquear, um por linha.
Exemplo de arquivo:
Quote
spamzao.com
marketinglandiadospam.com.ru




9
Anti-spam Techniques / Emails internos não autenticados
« Last post by lucas on June 01, 2022, 10:09:55 PM »
Se os seus clientes se autenticam para enviar os emails, você pode simplesmente recusar emails cujo o domínio seja interno e não estejam autenticados.


Isso corta muito Lixo Eletrônico que tenta entregar mensagens usando como remetentes, emails do seu servidor.

Code: [Select]
Internal_from? !Auth? Reply! "550 Voce precisa autenticar-se" Deny!
10
Anti-spam Techniques / Remetentes anônimos
« Last post by lucas on June 01, 2022, 10:09:23 PM »
Um remetente anônimo não pode enviar emails para mais de um destinatário.

Podemos cortar isto assim.

Em Event.rcpt, coloque:

Code: [Select]
From? "" Itest? "%n>1" Reply! "550 Muitos destinatarios para um remetente anonimo" Deny!
Pages: [1] 2