Como posso salvar um email antes de entregá-lo a usuários virtuais no Postfix?

1

Estou usando o Postfix com o DBMail, então o Postfix envia e-mails para usuários virtuais. Tem funcionado perfeitamente.

No entanto, quero salvar todos os emails em um disco local antes de entregá-los a usuários virtuais. Descobri que o content_filter pode fazer isso, mas não é uma boa maneira para mim porque eu já o usei para filtragem de spam com o DSpam.

Existe outra maneira de fazer isso?

Obrigado.

    
por Brian 15.07.2011 / 09:44

1 resposta

2

Eu fiz algo muito parecido; parece haver algumas abordagens diferentes.

Primeiramente, você pode usar recipient_bcc_maps para gerar um endereço adicional para mensagens recebidas para esse domínio. Esta poderia ser, por exemplo, uma tabela para dizer se o email tem um destinatário [email protected] deve ser bcc'd para archive , que é então aliado para um arquivo / maildir.

Como alternativa, a maneira como fiz isso localmente é ter entradas como essa em minha tabela "virtual" ( virtual_mailbox_maps ):

[email protected]           [email protected], offline-comms

e depois na minha tabela "vmailbox" ( virtual_mailbox_maps ):

[email protected]           supply/

Eu, então, tenho virtual_mailbox_base configurado para ser o diretório base dos meus arquivos de e-mail. A entrada na tabela "virtual" divide o e-mail recebido como [email protected] em uma entrega para offline-comms (que alimenta o e-mail para os servidores de aplicativos) e também para si mesmo, para que também seja pesquisada no "vmailbox". A entrada "vmailbox" informa ao agente de entrega virtual(8) para salvar o email em um Maildir chamado "supply" em virtual_mailbox_base .

Concedido, isso significa ter que atualizar dois arquivos para adicionar um novo destinatário. Mas se você estivesse gerando esses arquivos a partir de um banco de dados, ou usando uma pesquisa de banco de dados, isso não seria realmente um problema.

Observe que alimentei o e-mail para offline-comms para que seja canalizado para o servidor de aplicativos. Isso pode não funcionar para você, dependendo de como você integrou o DBMail. Outra maneira de fazer isso é alias de e-mail recebido em um domínio especial que é para arquivamento:

[email protected]   [email protected], [email protected]

Em seguida, envie o domínio virtual emails.example.com ao seu transporte do dbmail (por exemplo, usando o transports map para simplesmente mapear emails.example.com para dbmail-lmtp: ) e o archive.example.com domain usando o virtual transport to ser salvo no correio local.

Espero que ajude!

    
por 15.07.2011 / 12:46

Tags