Boa tarde pessoal!!!
Após um bom tempo sem postar nada (porque não tinha nada de interessante para postar), resolvi postar esse script que eu desenvolvi para incluir, excluir e listar endereços na blacklist e whitelist do Zimbra 8.8.11 (não testei em outras versões).
Depois de muuuuuuuuuito pesquisar, eu cheguei à forma correta de controlar as listas de spam do Zimbra. Na internet existem muitas informações desencontradas, ou que não funcionam mais, etc. Então abaixo está o script que eu fiz e que está funcionando perfeitamente no meu ambiente, espero que ajude:
#!/bin/bash
# Controle de blacklist e whitelist
# Desenvolvido por Rodrigo Garcia em 12/04/2019
# Contato rodrigogarcia.ti@gmail.com
DOMAIN="seudominio.com.br"
# Adiciona um único endereço ou domínio à blacklist
fn_AddDomainBlack(){
until [ $OP == "n" ]
do
clear
read -p "Digite o endereço (Ex: exemplo@exemplo.com ou exemplo.com): " ADDRESS
read -p "Confirma a adição do domínio $ADDRESS à blacklist (s/n)?" RESP
if [ $RESP == "s" ]
then
echo "Verificando se o endereço já existe..."
su - zimbra -c "zmprov gd $DOMAIN amavisBlacklistSender" | grep -w $ADDRESS > /dev/null
if [ $? != 0 ]
then
echo "Adicionando $ADDRESS à blacklist..."
su - zimbra -c "zmprov md $DOMAIN +amavisBlacklistSender $ADDRESS"
echo -e "Concluído!!!\n"
else
echo "Endereço já existe na blacklist!!!"
fi
fi
read -p "Deseja adicionar outro endereço (s/n)?" OP
done
unset OP
}
# Adiciona uma lista de endereços ou domínios à blacklist lendo o arquivo blacklist.conf
# Formato exemplo@exemplo.com ou exemplo.com
fn_ListaBlack(){
clear
while read LINE
do
su - zimbra -c "zmprov gd $DOMAIN amavisBlacklistSender" | grep -w $ADDRESS > /dev/null
if [ $? != 0 ]
then
echo "Adicionando $LINE à blacklist..."
su - zimbra -c "zmprov md $DOMAIN +amavisBlacklistSender $LINE"
else
echo "$ADDRESS já existe!!!"
fi
done < blacklist.conf
echo -e "Concluído!!!\n"
read -rsp $'Pressione enter para voltar...\n'
}
# Exclui um endereço ou domínio da blacklist
fn_DelDomainBlack(){
until [ $OP == "n" ]
do
clear
read -p "Digite o domínio (Ex: exemplo@exemplo.com ou exemplo.com): " ADDRESS
read -p "Confirma a exclusão do domínio $ADDRESS da blacklist (s/n)?" RESP
if [ $RESP == "s" ]
then
echo "Verificando se o endereço existe..."
su - zimbra -c "zmprov gd $DOMAIN amavisBlacklistSender" | grep -w $ADDRESS > /dev/null
if [ $? == 0 ]
then
echo "Excluíndo $ADDRESS da blacklist..."
su - zimbra -c "zmprov md $DOMAIN -amavisBlacklistSender $ADDRESS"
echo -e "Concluído!!!\n"
else
echo "Endereço não encontrado!!!"
fi
fi
read -p "Deseja remover outro endereço (s/n)?" OP
done
unset OP
}
# Consulta um endereço ou domínio na blacklist
fn_BuscaBlack(){
until [ $OP == "n" ]
do
clear
read -p "Digite o domínio para busca (Ex: exemplo@exemplo.com ou exemplo.com): " ADDRESSBL
echo "Buscando $ADDRESSBL ..."
su - zimbra -c "zmprov gd $DOMAIN amavisBlacklistSender" | grep -w $ADDRESSBL
if [ $? != 0 ]
then
echo -e "Endereço ou domínio não encontrado!!!\n"
fi
read -p "Deseja buscar outro endereço (s/n)?" OP
done
unset OP
}
# Faz cópia de segurança da blacklist e whitelist
fn_BkpList(){
clear
echo -e "Fazendo backup das listas...\n"
su - zimbra -c "zmprov gd $DOMAIN amavisBlacklistSender" | cut -d" " -f2 > blacklist.conf.bkp
echo -e "Backup da blacklist criado com sucesso em blacklist.conf.bkp\n"
su - zimbra -c "zmprov gd $DOMAIN amavisWhitelistSender" | cut -d" " -f2 > whitelist.conf.bkp
echo -e "Backup da whitelist criado com sucesso em whitelist.conf.bkp\n"
read -rsp $'Pressione enter para voltar...\n'
}
# Adiciona endereço ou domínio à whitelist
fn_AddDomainWhite(){
until [ $OP == "n" ]
do
clear
read -p "Digite o domínio (Ex: exemplo@exemplo.com ou exemplo.com): " ADDRESS
read -p "Confirma a adição do domínio $ADDRESS à whitelist (s/n)?" RESP
if [ $RESP == "s" ]
then
echo "Verificando se o endereço já existe..."
su - zimbra -c "zmprov gd $DOMAIN amavisWhitelistSender" | grep -w $ADDRESS > /dev/null
if [ $? != 0 ]
then
echo "Adicionando $ADDRESS à whitelist..."
su - zimbra -c "zmprov md $DOMAIN +amavisWhitelistSender $ADDRESS"
echo -e "Concluído!!!\n"
else
echo "Endereço já existe na whitelist!!!"
fi
read -p "Deseja adicionar outro endereço (s/n)?" OP
fi
done
unset OP
}
# Adiciona uma lista de endereços ou domínios à whitelist lendo o arquivo whitelist.conf
# Formato exemplo@exemplo.com ou exemplo.com
fn_ListaWhite(){
clear
while read LINE
do
su - zimbra -c "zmprov gd $DOMAIN amavisWhitelistSender" | grep -w $ADDRESS > /dev/null
if [ $? != 0 ]
then
echo "Adicionando $LINE à whitelist..."
su - zimbra -c "zmprov md $DOMAIN +amavisWhitelistSender $LINE"
else
echo "$ADDRESS já existe!!!"
fi
done < whitelist.conf
echo -e "Concluído!!!\n"
read -rsp $'Pressione enter para voltar...\n'
}
# Exclui um endereço ou domínio da whitelist
fn_DelDomainWhite(){
until [ $OP == "n" ]
do
clear
read -p "Digite o domínio (Ex: exemplo@exemplo.com ou exemplo.com): " ADDRESS
read -p "Confirma a exclusão do domínio $ADDRESS da whitelist(s/n)?" RESP
if [ $RESP == "s" ]
then
echo "Verificando se o endereço existe..."
su - zimbra -c "zmprov gd $DOMAIN amavisWhitelistSender" | grep -w $ADDRESS > /dev/null
if [ $? == 0 ]
then
echo "Excluíndo $ADDRESS da whitelist..."
su - zimbra -c "zmprov md $DOMAIN -amavisWhitelistSender $ADDRESS"
echo -e "Concluído!!!\n"
else
echo "$ADDRESS não encontrado!!!"
fi
fi
read -p "Deseja remover outro endereço (s/n)?" OP
done
unset OP
}
# Consulta endereço ou domínio na whitelist
fn_BuscaWhite(){
until [ $OP == "n" ]
do
clear
read -p "Digite o domínio para busca (Ex: exemplo@exemplo.com ou exemplo.com): " ADDRESSWL
su - zimbra -c "zmprov gd $DOMAIN amavisWhitelistSender" | grep $ADDRESSWL
echo "Buscando $ADDRESSWL ..."
if [ $? != 0 ]
then
echo -e "\nEndereço ou domínio não encontrado!!!\n"
fi
read -p "Deseja buscar outro endereço (s/n)?" OP
done
unset OP
}
# Adiciona um IP na Blacklist do Postfix
fn_BlackIp(){
until [ $OP == "n" ]
do
clear
read -p "Digite o IP a ser bloqueado: " BLACKIP
echo "Buscando IP $BLACKIP ..."
cat /opt/zimbra/conf/postfix_rbl_override | grep -w $BLACKIP > /dev/null
if [ $? != 0 ]
then
echo "Adicionando o IP $BLACKIP à Blacklist..."
echo "$BLACKIP REJECT" >> /opt/zimbra/conf/postfix_rbl_override
su - zimbra -c "postmap /opt/zimbra/conf/postfix_rbl_override"
echo "IP adicionado com sucesso à Blacklist!!!"
else
echo -e "\nEndereço IP já existe na Blacklist!!!"
fi
read -p "Deseja adicionar outro IP à Blacklist (s/n)?" OP
done
unset OP
}
# Executa o código
until [ $DO = "0" ]
do
clear
echo "############################################################################################"
echo "# Bem vindo, o que você deseja?"
echo "############################################################################################"
echo "1- Consultar um endereço ou domínio na blacklist"
echo "2- Adicionar um endereço ou domínio à blacklist"
echo "3- Adicionar uma lista de endereços e/ou domínios à blacklist (crie a lista blacklist.conf)"
echo "4- Remover um endereço ou domínio da blacklist"
echo "5- Consultar um endereço ou domínio na whitelist"
echo "6- Adicionar um endereço ou domínio à whitelist"
echo "7- Adicionar uma lista de endereços e/ou domínios à whitelist (crie a lista whitelist.conf)"
echo "8- Remover um endereço domínio da whitelist"
echo "9- Fazer backup das listas (whitelist e blacklist)"
echo "10- Adicionar um IP à Blacklist do Postfix"
echo "0- Sair"
read -p "Escolha uma ação: " DO
case $DO in
"1")
fn_BuscaBlack
;;
"2")
fn_AddDomainBlack
;;
"3")
fn_ListaBlack
;;
"4")
fn_DelDomainBlack
;;
"5")
fn_BuscaWhite
;;
"6")
fn_AddDomainWhite
;;
"7")
fn_ListaWhite
;;
"8")
fn_DelDomainWhite
;;
"9")
fn_BkpList
;;
"10")
fn_BlackIp
;;
"0")
clear
exit
;;
esac
done
Até a próxima!!!
Rodrigo Garcia