Postfix + header_checks no MySQL

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

[ Hits: 4.023 ]

 


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

Bloqueio por extensões no Postfix

Erro no Sendmail: "Deferred: 403 4.7.0 TLS handshake failed" (solucionado)

Cyrus IMAP: Eliminar mensagens "fetching user deny" no código

Zimbra - "Erro: PKIX path building failed" ao executar o Zmmailbox

Dovecot - Mover Spam automaticamente para a pasta desejada

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts