Postfix - misturando virtual_aliases e virtual_mailboxes (catchall)

Postfix - misturando virtual_aliases e virtual_mailboxes (catchall)

Estou executando o postfix (2.9.6) com o dovecot (2.2.5) e dois domínios:

  1. exemplo.com como virtual_mailbox_domain
  2. example.org como virtual_alias_domain

Gostaria de configurar duas regras abrangentes diferentes para usuários desconhecidos, mas isso não funciona conforme o esperado.

Usar a configuração abaixo da regra catch-all para example.com se aplica aos endereços example.com e example.org (ou seja, todos os e-mails desconhecidos são entregues na caixa de correio catch_com de johndoe, independentemente dos endereços example.org ou example.com). A remoção da regra @example.com faz com que a regra @example.org funcione corretamente (e-mail entregue na caixa de correio catch_org de johndoe).

principal.cf:

recipient_delimiter = +

virtual_mailbox_domains = example.com
virtual_mailbox_maps = hash:/opt/local/etc/postfix/virtual_mailbox

virtual_alias_domains = example.org
virtual_alias_maps = hash:/opt/local/etc/postfix/virtual_alias

mestre.cf

dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/opt/local/libexec/dovecot/dovecot-lda -f ${sender} -d ${user}@${nexthop} -m ${extension}

caixa_mail_virtual:

[email protected]         example.com/johndoe 

alias_virtual:

@example.org            [email protected]
@example.com            [email protected]

Adicionar a regra catchall ao virtual_mailbox não funciona porque, como li em algum lugar, o uso do dovecot-lda faz com que as regras catchall no virtual_mailbox sejam ignoradas.

Responder1

Este é o comportamento esperado do postfix. O Virtual Alias ​​será verificado primeiro, antes de qualquer outro alias. Portanto, o resumo de example.com /opt/local/etc/postfix/virtual_aliasencaminhará seu e-mail antes de /opt/local/etc/postfix/virtual_mailbox.

No seu caso, johndoe+catch_orgserá mapeado recursivamente virtual_aliasnovamente para que corresponda a johndoe+catch_com.

Se você configurar o catchall para outra caixa de correio no mesmo domínio, poderá configurar o catchall no virtual_mailbox_maps. Adicione esta linha na parte inferior de/opt/local/etc/postfix/virtual_mailbox

@example.com    example.com/johndoe

A desvantagem é que você não pode diferenciar o e-mail entre exemplo.com catchall ou exemplo.org catchall.Para o caso do pombal, não posso confirmar se esse esquema funcionará ou não.


Outra solução feia é colocar a conta não-catchall de example.com em /opt/local/etc/postfix/virtual_alias. Por exemplo:

# account with mailbox
[email protected]        [email protected]
[email protected]        [email protected]
[email protected]        [email protected]

# for example.org domain catch all
[email protected]     [email protected] 

@example.org            [email protected]
@example.com            [email protected]

informação relacionada