O postfix coloca os e-mails recebidos dependentes do domínio do remetente em uma caixa de correio catchall local

1

Estou tentando configurar o postfix para colocar mensagens de entrada de diferentes domínios em caixas de correio catchall.

O caso de uso é o seguinte:

  • clientes empresariais enviam e-mails para o endereço [email protected] (a parte local é sempre diferente, a parte do domínio é sempre a mesma para todos os clientes)
  • a caixa de correio de destino, onde o e-mail é colocado, deve ser igual ao domínio do remetente (e-mails de [email protected] e [email protected] são colocados no /customer1.com, e-mails de [email protected] em /customer2.com)
  • as caixas de correio /customer1.com e /customer2.com são pesquisadas via POP3 por diferentes clientes com diferentes credenciais de autenticação

Exemplo, o seguinte e-mail recebido:

From: [email protected]
To: [email protected]

deve ser colocado na caixa de correio virtual local:

/customer1.com

O domínio To é sempre o mesmo. As caixas de correio locais são nomeadas como possíveis entrada de domínios.

Existe a possibilidade de usar virtual_mailbox_maps ou similar para este propósito?

ATUALIZAÇÃO:

Eu criei a seguinte entrada em /etc/postfix/virtual_alias_maps :

@myservice.com       catchall

para apontar todos os e-mails para a caixa de correio "catchall".

Nesta caixa de correio, criei um script do Sieve /var/mail/vhosts/myservice.com/catchall/.dovecot.sieve :

require ["variables"];

# pick any ("*") domain in From or Sender header
if address :matches :domain ["From", "Sender"] "*" {
        #  the variable ${1} contains the domain name
        redirect "${1}";
}

Este script do Google Sieve redireciona todos os e-mails para a caixa de correio igual ao domínio do remetente (por exemplo, customer1.com).

Para rejeitar todos os e-mails de domínios desconhecidos (não no banco de dados), usei smtpd_sender_restrictions em /etc/postfix/main.cf :

smtpd_sender_restrictions =  permit_mynetworks, pgsql:/etc/postfix/pgsql_check_sender_access.cf

/etc/postfix/pgsql_check_sender_access.cf :

user = dbuser
password = dbpass
dbname = customers
query = select case count(*) when 0 then 'REJECT' else 'OK' end from servers where user_domain='%d';
hosts = 127.0.0.1:5432
    
por DronNick 28.11.2012 / 00:35

1 resposta

1

Este não é o trabalho do MTA. É melhor fazer isso no MUA (seu programa cliente).

Se você realmente quiser fazer isso no lado do servidor, escolha algum programa de filtragem de e-mail como o dovecot (é compatível com peneira) ou o maildrop (tem sua própria solução de filtragem proprietária). (o procmail também está disponível, mas eu não recomendaria isso).

Existe um howto para a configuração do Maildrop link Como configurar filtros: link

    
por 28.11.2012 / 01:07

Tags