É possível fragmentar o banco de dados de caixas de correio virtuais postfix?

1

Consegui configurar o Postfix para ler a lista de caixas de correio virtuais de um banco de dados. Mas e se minha lista for distribuída entre vários bancos de dados? Existe alguma maneira de definir as credenciais de acesso ao banco de dados do Postfix com base no domínio de destino do email de entrada?

Tenho vários clientes compartilhando um servidor da web e cada um tem seu próprio banco de dados por meio de compartilhamento. E eu queria saber se eu também posso compartilhar um postfix entre eles!? O problema é que sua lista de usuários reside em seus bancos de dados individuais e o número de fragmentos pode aumentar ao longo do tempo. E eu não quero reconfigurar o sistema para cada novo cliente.

    
por Mehran 10.05.2015 / 22:25

2 respostas

2

Do Readme do banco de dados Postfix, ele declara

All Postfix lookup tables store information as (key, value) pairs. This interface may seem simplistic at first, but it turns out to be very powerful. The (key, value) query interface completely hides the complexities of LDAP or SQL from Postfix. This is a good example of connecting complex systems with simple interfaces.

O postfix fornece apenas uma chave de pesquisa, e "sua tabela" deve retornar o valor apropriado. Em relação a vários bancos de dados, o postfix também suporta isso. Mas ele só tem um único modo de operação: verifique o banco de dados um por um sequencialmente até que a "chave" seja encontrada. Quando você adicionou alguma lógica personalizada como definir as credenciais de acesso ao banco de dados do Postfix com base no domínio de destino do email de entrada , o postfix não tem essa opção.

Então, a resposta da sua pergunta:

Is it possible to shard postfix virtual mailboxes database?

Sim, é possível. Mas você não pode fazer isso com o postfix sozinho. Você precisa de "ferramentas" adicionais para ajudar as informações de pesquisa postfix do seu banco de dados. Postfix

Alguma ideia:

  • Usando o procedimento armazenado do MySQL para preencher todos os bancos de dados e executar a consulta nos bancos de dados, por exemplo: link . Você precisa de credencial de mestre único para se conectar ao mysql.

  • Coloque múltiplos arquivos postfix-mysql-maps em uma pasta e configure o cron periodicamente para preencher novamente todos os arquivos no postfix main.cf . O comando como abaixo deve ser suficiente.

postconf -e virtual_mailbox_maps=$(for maps in /etc/postfix/mymaps/*; do printf "mysql:$maps "; done)

  • Use tcp / mapa de soquete mapeia para adicionar script adicional e fazer sua lógica. Você pode usar o postfix spawn para que seu script não precise escutar no soquete tcp / unix. Seu postfix deve obter a chave via stdin e você deve retornar o valor via stdout. Aqui é uma implementação da tabela tcp e gerar em transport_maps .
por 12.05.2015 / 02:08
0

Se você estiver usando postfix e mysql para armazenar o domínio e senha dos usuários e assim por diante, você pode ter muitos postfix servidores com um servidor mysql, porque o postfix usa mysql somente para recuperar as informações usando leia consulta SQL.

Se você tem um banco de dados centralizado, cada cliente pode apontar para esse banco de dados.

    
por 11.05.2015 / 00:16