Otimizando as consultas do MySQL no Postfix

Publicado por Yves Junqueira Marques Teixeira em 20/12/2004

[ Hits: 9.651 ]

 


Otimizando as consultas do MySQL no Postfix



Quando se utiliza contas virtuais no Postfix usando base de dados MySQL, por um lado facilitamos a administração de sites com grande número de contas e domínios e por outro aumentamos a utilização de recursos nos servidores.

A cada e-mail enviado ou recebido, o Postfix realiza diversas consultas no MySQL, dependendo da situação. Aqueles que pararam para analisar isso provavelmente notaram que diversas instâncias do cliente mysql foram abertas, aumentando a utilização de memória.

Para evitar esse problema, há duas possibilidades:

1) Configurar bem as tabelas do MySQL, criando índices em campos chaves, como "mailbox" e outros.

2) Voltar a utilizar tabelas estáticas ou gerar tabelas estáticas regularmente, com base nas tabelas do MySQL.

3) Utilizar o serviço de proxymap do Postfix.

No primeiro caso, tudo depende de como você criou a sua tabela. Se seguiu as recomendações de uma boa documentação, provavelmente você já deve ter suas tabelas bastante otimizadas.

Por outro lado, caso decida criar scripts de geração de tabelas estáticas ("estaticalização de tabelas dinâmicas"), saiba que isso aumenta a chance de problemas e erros. Sugiro criar um script que verifique erros em tabelas geradas antes de substituir a tabela antiga.

O último ponto, o mais recomendado, exige uma configuração que é simples. Basta substituir as entradas mysql:* no seu main.cf por proxy:mysql:*

Exemplo:

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

vira:

virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf

Depois disso, basta executar um "postfix reload" e tudo deve funcionar.

Há, porém, possíveis problemas, que já adianto pra vocês: :)

a) Problemas de permissões nos arquivos lidos pelo proxymap, (ex: /etc/postfix/mysql_virtual_alias_maps.cf)

Correção sugerida:

# chgrp postfix /etc/postfix/mysql*
# chmod g+r /etc/postfix/mysql*


O grupo "postfix" utilizado aqui pode ser outro em seu sistema.

b) Proxymap não está autorizado a fazer a consulta "tal".

Basta adicionar no seu main.cf:

proxy_read_maps = $local_recipient_maps $mydestination
$virtual_alias_maps
$virtual_alias_domains $virtual_mailbox_maps
$virtual_mailbox_domains
$relay_recipient_maps $relay_domains $canonical_maps
$sender_canonical_maps
$recipient_canonical_maps $relocated_maps $transport_maps
$mynetworks

E no final dessas configurações você deverá colocar a consulta que tenha provocado problemas - veja sempre o log - (exemplo: "proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf") ou a variável de configuração que ela representa ($virtual_alias_maps, que neste caso já vem autorizada por padrão na opção proxy_read_maps).

O resultado é que o Postfix irá utilizar conexões já abertas pelo proxymap para fazer as suas consultas, economizando recursos em seu servidor.

Boa sorte!

Yves Junqueira

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

Instalando o Thunderbird 3.0 no Ubuntu

Exim trabalhando de modo case insensitive

OpenMailBox - Um servidor de e-mail gratuito e 100% Open Source!

Postfix - Efetuando relay em hosts que exigem autenticação e nas portas SUBMISSION ou SMTPS

Cyrus Aggregator - Serviço Sieve não conecta no Backend [Resolvido]

  

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