Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - lucas

Pages: [1]
1
Suggestions / Ferramenta DKIM
« 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
« 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
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
« 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
« 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
« 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
« 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
« 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
« 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
« 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!

11
Anti-spam Techniques / RBLs
« on: June 01, 2022, 10:08:44 PM »
Faça o Selor consultar as principais Blacklists mundiais:

Em Event.from, coloque no final do arquivo:

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

É claro: Você deve trocar o 192.168.0.0/24 pela cadeia de IPs da sua rede ou de seus servidores.
As regras de 'Stop!' impedem que o Selor rode Blacklist para conexões autenticadas e essas cadeias de IPs.


12
Anti-spam Techniques / Corte SPF inválidos
« on: June 01, 2022, 10:08:03 PM »
Corte os SPFs inválidos:

Em Event.from, coloque:
Code: [Select]
Auth? Stop!
Ip? "127.0.0.1" Stop!
Ip? "192.168.0.0/24" Stop!
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!

Troque a cadeia 192.168.0.0 por sua cadeia de rede local ou a rede de seus servidores locais.
Isto impede que o Selor rode o teste de SPF para eles.

13
Anti-spam Techniques / Helo inválido
« on: June 01, 2022, 10:05:11 PM »
Podemos cortar muito lixo apenas analisando o Helo/Ehlo que o servidor remoto mandou:

Você pode mandar o Selor recusar 'helos' como sendo 127.0.0.1, ou o IP de Internet do seu servidor ou até mesmo o nome do seu servidor.
Digamos que o IP do seu servidor seja: 240.240.240.240. e seu nome: srv1.meuservidordemails.com

Em Event.from, coloque:
Code: [Select]
!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:240.240.240.240" Deny!
!Ip? "240.240.240.240" !Ip? "127.0.0.1" Find_str? "%h:srv1.meuservidordemails.com" Deny!

14
Tutorials / Servidor de Emails Completo
« on: June 01, 2022, 10:01:24 PM »
Segue o link de um tutorial para instalação do Selor, Dovecot e Webmail com base de dados em MySQL

Qualquer dúvida sobre o tutorial, podem postar aqui.

http://www.mtaselor.com.br/tutoriais/Servidor_de_Emails_Completo.pdf

15
Tools / Selor_rquota - Quota de envio para clientes
« on: June 01, 2022, 09:56:44 PM »
Com o selor_rquota, podemos controlar o número de destinatários que nossos clientes podem enviar por hora/dia/semana/mes, etc...

Através dos eventos do Selor, nós acionamos o selor_rquota com alguns parâmetros e o sistema de quota funcionará perfeitamente.

Vamos ao passo-a-passo...

Puxando e instalando a ferramenta no seu servidor:
Code: [Select]
mkdir /home/progs
cd /home/progs
wget http://www.mtaselor.com.br/downloads/utilitarios/selor_rquota_src_1.0.tar.bz2
tar xjf selor_rquota_src_1.0.tar.bz2
cd selor_rquota_1.0

Agora, vamos compila-lo.

Se você estiver usando Linux:
Code: [Select]
gcc selor_rquota.c -o selor_rquota -lmysqlclient
Se você estiver usando FreeBSD:
Code: [Select]
gcc selor_rquota.c -o selor_rquota -DFreeBSD -L/usr/local/lib/mysql -lmysqlclient

Quote
Obs: Caso de algum erro a respeito da libmysql, é porque você precisa instalar a MySQL-devel no seu sistema ou então, as libs não estão sendo encontradas. As libs mysql (libmysql*) devem ficar em /usr/lib64 ou /usr/lib

Copie o programa, o arquivo de configuração e o arquivo .sql para o diretório do Selor:
Code: [Select]
mkdir /usr/local/selor/uteis
cp selor_rquota selor_rquota.conf selor_rquota.sql /usr/local/selor/uteis
cd /usr/local/selor/uteis

Crie a base de dados no seu MySQL com um usuario e uma senha.
Vamos supor que o usuário seja 'selor_user' e a senha 'minhasenha':
Code: [Select]
mysql
mysql> create database selor_rquota;
mysql> grant all privileges on selor_rquota.* to selor_user@localhost identified by 'minhasenha';
mysql> flush privileges;
mysql> quit

Agora, vamos criar as tabelas no banco:
Code: [Select]
mysql selor_rquota < selor_rquota.sql
Arrume o arquivo de configuração selor_rquota.conf de forma a colocar corretamente os dados para a conexão com o MySQL

Configure o selor_rquota nos eventos do Selor.
Abra o arquivo referente ao evento Event.from (No padrão, o arquivo é o /usr/local/selor/rules_from)

Quote
Obs: Verifique qual é o seu arquivo do Event.from, abrindo o selor.conf e procurando por esta opção.
Code: [Select]
pico /usr/local/selor/rules_from
Acrescente estas regras (Obs: Tudo em uma única linha):
Code: [Select]
Auth? !From? "" Exec! "/usr/local/selor/uteis/selor_rquota --conf /usr/local/selor/uteis/selor_rquota.conf -c -u %f" Exec_resp? "1" Reply! "500 Limite de envio de emails foi excedido" Deny!
A regra acima é a que testa se o remetente já atingiu a quota.

A próxima regra nós adicionaremos no evento que é executado assim que o remetente entrega o email, então, nós adicionaremos a quantidade de destinatários da mensagem no banco de dados. O evento é o Event.data (Por padrão: /usr/local/selor/rules_data).

Quote
Obs: Verifique qual é o seu arquivo do Event.data, abrindo o selor.conf e procurando por esta opção.

Code: [Select]
pico /usr/local/selor/rules_data
Acrescente estas regras (Obs: Tudo em uma única linha):
Code: [Select]
Auth? !From? "" Exec! "/usr/local/selor/uteis/selor_rquota --conf /usr/local/selor/uteis/selor_rquota.conf -a %n -u %f -d 1000"
Obs: O valor 1000 é a quota padrão que o programa vai usar para cadastrar o remetente caso ele ainda não esteja cadastrado.

Agora é hora de você decidir como quer a sua quota: por hora, dia, semana ou mes:

Tudo depende do intervalo em que você roda o selor_rquota com a opção -z que ZERA os valores de emails enviados de todos.

Podemos usar o CRON para fazer o serviço para nós:
Caso queria...

por hora:
Code: [Select]
00 * * * * /usr/local/selor/uteis/selor_rquota -z
por dia:
Code: [Select]
00 0 * * * /usr/local/selor/uteis/selor_rquota -z
por semana:
Code: [Select]
00 0 * * 0 /usr/local/selor/uteis/selor_rquota -z
por mês:
Code: [Select]
00 0 1 * * /usr/local/selor/uteis/selor_rquota -z

Esta feito ! Não é preciso reiniciar o Selor





Pages: [1]