Postfix + header_checks no MySQL

Publicado por Marcelo de Faria Santoro em 13/01/2015

[ Hits: 5.256 ]

 


Postfix + header_checks no MySQL



Nesta dica irei descrever como implementar o header_checks do Postfix junto com o MySQL.

Sem blablabla.... vamos direto ao ponto.

Para que tudo funcione é necessário ter o MySQL instalado. Em distribuições Debian like digite o seguinte comando para instalar o servidor MySQL:

# apt-get install mysql-server-5.5

Feito isso, siga os passos de instalação que serão descritos na tela.

Logue como ROOT em seu MySQL e crie o banco de dados "postfix", ou qualquer outro nome que seja fácil para sua identificação:

# mysql -u root -p

CREATE DATABASE postfix;

Entre no banco de dados postfix para poder criar a tabela dentro do mesmo:

use postfix;

Agora crie a tabela header_checks com o seguinte comando:

CREATE TABLE `header_checks` (
  `hc_id` int(11) NOT NULL AUTO_INCREMENT,
  `rule` varchar(255) NOT NULL,
  `action` varchar(255) NOT NULL,
  PRIMARY KEY (`hc_id`),
  KEY `rule` (`rule`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8


Preparação do Postfix

Creio que você já deva ter o Postfix instalado em seu servidor, já existem vários artigos tratando da instalação do mesmo.

Criaremos agora o arquivo de configuração para comunicação com o MySQL:

# vi /etc/postfix/header_checks.cf

Coloque este conteúdo dentro do arquivo que estamos editando:

user = SEU_USUARIO_DO_BANCO_postfix
password = SUA_SENHA_DO_BANCO_postfix
hosts = IP_ou_NOME_do_SEU_Servidor
dbname = NOME_DO_BANCO_DE_DADOS_postfix
query = SELECT action FROM header_checks WHERE '%s' REGEXP rule LIMIT 0,1

Próximo passo é editar a configuração no arquivo /etc/postfix/main.cf, caso você ainda não tenha a linha abaixo, adicione-a:

header_checks = mysql:/etc/postfix/header_checks.cf

Com estes passos concluídos, nos resta apenas dar um restart no postfix e popular a tabela header_checks lá no MySQL, que mostrarei a correta sintaxe a seguir.

# /etc/init.d/postfix restart

Criando as regras de checks no MySQL

Aqui não temos muitos segredos, o que me deu mais trabalho foi encontrar a sintaxe correta de escrever a regra, mas vou poupá-los deste árduo trabalho e já passar a sintaxe correta da forma que estou utilizando em meus servidores.

Acesse o MYSQL:

# mysql -u root -p

use postfix;

INSERT INTO header_checks (`hc_id`, `rule`, `action`) VALUES (NULL, '^From:(.*)dominio.com.br', 'DISCARD #Dominio de SPAM Detectado');


Perceba que a sintaxe para a REGEXP usada pelo header_checks segue o seguinte padrão:

^From:(.*)dominio.com.br

Essa regra eu particularmente utilizo para bloquear domínios que costumam enviar SPAMs, mas podemos usar por exemplo para bloquear mensagens com determinados assuntos, no caso a regra ficaria parecida com isso:

^Subject:(.*)PROPAGANDA

Bom pessoal, é isso aí...

Espero que o assunto tenha sido abordado de maneira clara e objetiva.

Abraços.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

SpamAssassin e PostgreSQL: Erro: sintaxe de entrada é inválida para tipo bytea [Resolvido]

Zimbra 8.0.8: Erro em rotina do CRON / LOGROTATE

Liberação de portas para e-mail

Acompanhar logs do Zimbra por usuários

SpamAssassin - Usando whitelist para liberar e-mails de um domínio

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts