Posts com a Tag ‘postfix’

Post-LA-ng – o início de um novo projeto

sexta-feira, 18 de setembro de 2009
Algo que sempre sinto falta quando faço uma nova instalação de um servidor de correio eletrônico é a possibilidade de permitir que o administrador do mesmo possa pesquisar nos logs de e-mails de forma simples e eficaz. Já procurei várias ferramentas, mas não encontrei nada que atendesse minhas expectativas.

Pois parece que essa insatisfação é compartilhada com muitas outras pessoas, pois essa semana fui procurado pelo Fábio Luiz, que me apresentou ao software Post-LA (software para geração de relatórios e análise de logs do Postfix) e me convidou para dar sequência ao projeto.

Analisando o mesmo percebi que ele é bastante interessante, mas que ainda existe muito para ser melhorado e explorado. Então, percebemos que o interessante mesmo seria pegar a idéia inicial do Post-LA e fazer um fork avançado do mesmo, que acabei batizando de Post-LA-ng (nomes criativos para projetos nunca foram o meu forte).

E parece que iniciamos já com o pé direito, pois o Post-LA-ng já nasce com uma equipe de peso. Contamos com o Fábio Luiz, com o Leandro Mendes, com o Reinaldo de Carvalho (que irá desenvolver o parser em Python), com o Henrique Bueno (desenvolvedor do Post-LA original) e também com a ajuda da equipe de desenvolvimento da Propus, que deverá cuidar da interface web da aplicação (talvez usando Django).

Algumas features planejadas para as primeiras versões:
  • Parser dos logs em "tempo real" com armazenamento em banco de dados (MySQL ou Postgres - a definir);
  • Interface web para geração de relatórios com filtros e ordenamento pelos campos (remetente, destinatário, data, etc..);
  • Geração de gráficos e estatísticas (maiores remetentes, maiores destinatários, maiores mensagens, entre outros);
A expectativa é já ter em algumas semanas uma primeira versão funcional, com recursos básicos de pesquisa.

Aguardem mais notícias e sigam acompanhando o projeto na página do SourceForge. E fiquem de olho porque o projeto promete !

Utilizando o Postfix Quota Reject 2.0

sábado, 12 de setembro de 2009
Implementar o Postfix Quota Reject em um servidor com Postfix + Cyrus/Courier é uma tarefa bastante simples e que agrega muito ao serviço de correio.

O PQR é composto de 2 scripts Perl que rodam como policy daemons no Postfix. Existe uma versão para Cyrus e outra para Courier, mas ambas funcionam de forma análoga. O projeto é bem documentado, e o tarball vem com um pdf que explica mais sobre o software.

Instalando o PQR

Para começar baixe o .tar.gz do PQR e abra-o em um diretório ( por exemplo /usr/local/pqr ). É preciso dar permissão de leitura e de execução nesse diretório e nos scripts para o usuário que for rodar os daemons ( nesse caso, vou usar o usuário vmail ).

Configurando o Postfix

Arquivo /etc/postfix/master.cf:

Adicione as seguintes linhas no arquivo master.cf:
127.0.0.1:2222 inet n n n - 0 spawn user=vmail argv=/usr/local/pqr/postfix-qreject-frontales.pl
127.0.0.1:3333 inet n n n - 0 spawn user=vmail argv=/usr/local/pqr/postfix-qreject-buzones-courier.pl

Se você for usar cyrus, troque o script postfix-qreject-buzones-courier.pl pelo script postfix-qreject-buzones-cyrus.pl.

E não esqueça: é preciso que o usuário que rodará os scripts (configurado no master.cf) tenha permissão de leitura e execução dos mesmos, caso contrário os daemons não serão carregados.

Arquivo de classe de restrição (/etc/postfix/qreject):

É necessário criar um arquivo com os domínios que serão consultados pelo PQR. O conteúdo do arquivo deve ser algo como:
[root@mailserver /etc/postfix]# cat qreject
seudominio.com.br pqr

Após a criação ou modificação desse arquivo, gere a tabela hash com o comando postmap /etc/postfix/qreject.

Explicando de forma bem simples, esse arquivo (juntamente com as demais configurações) garante que qualquer e-mail enviado para o domínio seudominio.com.br deverá consultar a classe de restrição pqr, que será criada no arquivo /etc/postfix/main.cf e que evocará os scripts do Postfix Quota Reject.

Arquivo /etc/postfix/main.cf:
# Classe do pqr
pqr = check_policy_service inet:127.0.0.1:2222

smtpd_restriction_classes = pqr # caso já existam outras classes, basta adicionar a classe pqr a lista

smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
check_recipient_access hash:/etc/postfix/qreject,
...

smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:2222

Criando o banco de dados do PQR


Antes de continuar, é preciso criar o banco de dados do PQR no servidor MySQL.

Para isso crie um database (com nome de qreject, por exemplo) e um usuário (novamente qreject) que tenha permissão total nesse banco. Como não é o objetivo desse post, não irei entrar nos detalhes dessas operações, supondo que o leitor saiba como efetuar tais tarefas.

Depois de criados adicione os dados do script qreject.sql que vem com o tarball do PQR nesse novo DB. Isso pode ser feito com o seguinte comando (logado como root) :
mysql -p -D qreject < /usr/local/pqr/qreject.sql

Arquivo /usr/local/pqr/postfix-qreject-frontales.pl
(obs. do Allan Carvalho)

Abra o arquivo /usr/local/pqr/postfix-qreject-frontales.pl e altere as variáveis do banco de dados, com os dados do seu servidor.

No meu exemplo, tenho o seguinte:
our $mysql_server = "127.0.0.1";
our $mysql_port = 3306;
our $database = "qreject";
our $usu_mysql = "qreject";
our $clave_mysql = "password";

Inserção de usuários no DB


Como já explanado em meu post anterior, o mais trabalhoso na configuração do PQR é a necessidade de cadastrar no banco de dados cada conta que deverá ser verificada (o que por outro lado também torna a ferramenta mais flexível, pois permite que você verifique somente as contas desejadas).

Para facilitar essa tarefa (pelo menos nos casos onde todas as contas do servidor devem ser consultadas), adaptei alguns scripts (baseados nos originais sugeridos por Egoitz Aurrekoetxea Aurre, desenvolvedor do Postfix Quota Reject) e os mesmos podem ser baixados aqui. É bem provável que sejam necessárias pequenas adaptações para fazê-los funcionarem no seu ambiente, mas nada que seja complexo.

DICA: caso existam contas com quota ilimitada (ou sem quota), não adicione estas no DB, pois o sistema irá negar todas as mensagens destinadas as mesmas por overquota (experiência própria).

Concluindo

O PQR é uma ferramenta eficiente que permite o bloqueio de mensagens destinadas a usuários com caixas postais lotadas diretamente no SMTP. Tal abordagem além de não gerar tráfego desnecessário, reduz as filas no seu servidor e garante que o remetente tenha consciência de que a mensagem não foi entregue logo após enviá-la, o que em muitos casos é algo fundamental. Sua instalação é simples e sua performance é muito boa, o que me faz recomendar sua instalação sem receios em qualquer servidor que necessite desse recurso.


Leia também:Link

Postfix Quota Reject

domingo, 23 de agosto de 2009
Quem acompanha meu blog deve ter lido em um dos meus últimos posts sobre a necessidade que tinha de enviar e-mails "em tempo real" informando ao remetente sobre problemas de over quota na caixa postal do destinatário de seu e-mail.

Depois de tentar usar o Postfix com patch VDA para tal realizar tarefa (sem obter sucesso), pesquisei mais e parece que encontrei a ferramenta que vai resolver a situação. A mesma chama-se Postfix quota reject (UPDATE 10/09/2009: a pedido do desenvolvedor já atualizei o link desse post, mas a versão 1.0 está disponível aqui).

O Postfix quota reject é um policy daemon que funciona de forma muito mais eficiente e segura do que o sistema de bounce do patch VDA. Ele barra o e-mail diretamente na porta SMTP, evitando que a mensagem seja recebida, fazendo assim com que o servidor que originou o e-mail gere o bounce para o remetente. Tal abordagem além de economizar banda e processamento ainda reduz a chance de problemas de DoS.

No site do projeto encontrei a versão 1.0 que ainda não atende a minha necessidade, mas ao pesquisar mais encontrei posts falando de uma versão 2.0 que trabalha com maildir usando Cyrus ou Courier.

Entrei então em contato com o desenvolvedor (Egoitz Aurrekoetxea) que foi muito simpático e atencioso, e me prometeu que assim que voltar das férias em setembro irá me enviar o software (que será oficialmente lançado em outubro) para que eu já vá utilizando e possa dar meu feedback .

Então por enquanto só resta aguardar até setembro para colocar o software em produção. Assim que o mesmo estiver instalado postarei minha impressões sobre a ferramenta.


Leia também: