[MASOCH-L] Blacklists manuais - MTA
Leandro Carlos Rodrigues
leandro at allchemistry.com.br
Thu Jul 23 08:37:49 -03 2015
Em 23/07/2015 08:19, Davi Peres escreveu:
> Ah sim eu havia notado a uns dias atras alguem comentando que estava com um
> projeto e que faria consulta no registro.br algo assim e ja tinha visto
> essa pagina do github mas como integro isso aí com o postfix ??!!?! não
> entendi como usar. A principio parece ser um script manual onde eu faço
> somente uma checagem. Se for para eu checar manualmente, continuo
> executando o meu shell script kkkkkkkkkk
>
> Me explica melhor?
Beleza Davi. Vamos lá.
Este projeto é referente a um serviço que precisa estar rodando em um
servidor qualquer. As consultas são feitas pelos terminais através dos
scripts, que apontam à estes servidores.
No caso eu já tenho um servidor rodando este serviço SPFBL lá na AWS.
Quando eu quero fazer uma consulta, eu aponto para o IP deste servidor
lá na AWS. O serviço lá faz o cache das consultas e guarda todas as
reclamações de SPAM também.
Então na verdade quando você olha para o script, na verdade está olhando
para uma forma de consultar este servidor externo. O script faz nada de
mais, quem faz é o serviço. Sacou?
A integração no postfix é simples. Basta substituir a parte onde ele faz
a consulta ao SPF convencional, que no caso é o comando "spfquery", pelo
script que eu forneço. A saída não é igual, mas o código de saída do
script é idêntico ao "spfquery", apenas com um código adicional que
representa o LISTED.
Eu tenho aqui um exemplo de um provedor que está me ajudando a testar o
serviço:
Pelo que entendi, preciso criar uma policy no postfix:
/et/etc/postfix/main.cf
smtpd_recipient_restrictions =
blablabla,
check_policy_service unix:private/meu-spf
blablabla,
/etc/postfix/master.cf
meu-spf unix - n n - - spawn
user=nobody argv=/usr/lib/postfix/checa-spf.sh
/usr/lib/postfix/checa-spf.sh
!/bin/bash
blablabla pega os parametros IP (client_address),
EMAIL (sender) e HELO (helo_name)
saida=/usr/lib/postfix/spfblquery-1.sh $ip $email $helo
retorno=$?
blablabla trata retorno faz action=PREPEND ou REJECT
Eh isso ai vou voce implementou de outra maneira ?
Com certeza você deve utilizar esta variável "retorno" para determinar
se o postfix rejeita ou aceita a mensagem. Ai você acrescenta uma regra
a mais que, se der código de LISTED, deve rejeitar a mensagem.
Dá uma olhada neste script anexo e veja os códigos de saída e tente
entender o que acontece lá pois está tudo documentado.
Só que você não vai conseguir utilizar ele com o IP que está lá pois
este IP é da instância AWS que mencionei e o firewall deve ser liberado
para consulta. Ai você me passa os blocos IPv4 dos terminais que você
pretende fazer a consulta que eu libero lá na AWS ok?
-------------- next part --------------
#!/bin/bash
#
# Este é um script que retorna o resultado SPFBL através de uma implementação em servidor externo.
#
# Atenção! Para utilizar este serviço, solicite a liberação das consultas
# no servidor 54.94.137.168 através do endereço leandro at allchemistry.com.br
# ou altere o IP 54.94.137.168 deste script para seu servidor SPFBL próprio.
#
# A saída deste programa deve ser incorporada ao cabeçalho Received-SPFBL da mensagem de e-mail que gerou a consulta.
#
# Exemplo:
#
# Received-SPFBL: PASS urNq9eFn65wKwDFGNsqCNYmywnlWmmilhZw5jdtvOr5jYk6mgkiWgQC1w696wT3ylP3r8qZnhOjwntTt5mCAuw==
#
# A informação que precede o qualificador é o ticket da consulta SPFBL.
# Com o ticket da consulta, é possível realizar uma reclamação ao serviço SPFBL, onde esta reclamação vai contabilizar a reclamação nos contadores do responsável pelo envio da mensagem.
# O ticket da consulta só é gerado nas saídas cujos qualificadores sejam: PASS, SOFTFAIL, NEUTRAL e NONE.
#
# Parâmetros de entrada:
#
# 1. IP: o IPv4 ou IPv6 do host de origem.
# 2. email: o email do remetente.
# 3. HELO: o HELO passado pelo host de origem.
#
# Saídas com qualificadores e as ações:
#
# PASS <ticket>: permitir o recebimento da mensagem.
# FAIL: rejeitar o recebimento da mensagem e informar à origem o descumprimento do SPF.
# SOFTFAIL <ticket>: permitir o recebimento da mensagem mas marcar como suspeita.
# NEUTRAL <ticket>: permitir o recebimento da mensagem.
# NONE <ticket>: permitir o recebimento da mensagem.
# LISTED: rejeitar o recebimento da mensagem e informar à origem a listagem em blacklist por sete dias.
#
# Códigos de saída:
#
# 0: não especificado.
# 1: qualificador NEUTRAL.
# 2: qualificador PASS.
# 3: qualificador FAIL.
# 4: qualificador SOFTFAIL.
# 5: qualificador NONE.
# 6: erro temporário.
# 7: erro permanente.
# 8: listado em lista negra.
# 9: timeout de conexão.
#
ip=$1
email=$2
helo=$3
qualifier=$(echo "$ip $email $helo" | nc -w 3 54.94.137.168 9877)
if [[ $qualifier == "" ]]; then
qualifier="TIMEOUT"
fi
echo "$qualifier"
if [[ $qualifier == "TIMEOUT" ]]; then
exit 9
elif [[ $qualifier == "LISTED" ]]; then
exit 8
elif [[ $qualifier == "ERROR: HOST NOT FOUND" ]]; then
exit 6
elif [[ $qualifier == "ERROR: "* ]]; then
exit 7
elif [[ $qualifier == "NONE "* ]]; then
exit 5
elif [[ $qualifier == "PASS "* ]]; then
exit 2
elif [[ $qualifier == "FAIL" ]]; then
exit 3
elif [[ $qualifier == "SOFTFAIL "* ]]; then
exit 4
elif [[ $qualifier == "NEUTRAL "* ]]; then
exit 1
else
exit 0
fi
More information about the masoch-l
mailing list