Postfix + mysql: virtual_users combinados com um pega-tudo em virtual_aliases

5

Eu tenho um servidor Postfix (e Dovecot) rodando, usando o MySQL para definir os nomes de domínio, usuários e aliases. Tudo está correndo bem, mas agora eu quero adicionar um pega-tudo para um domínio onde eu já tenho alguns usuários definidos. Eu adicionei o usuário na tabela virtual_users, e enquanto eu posso me conectar a ele e enviar e-mails com ele, todos os e-mails que são enviados para ele estão sendo capturados pelo pega-tudo. Existe uma maneira de resolver isso?

Arquivos de configuração e detalhes relevantes:

/etc/postfix/main.cf:

virtual_transport = lmtp:unix:private/dovecot-lmtp  
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf  
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf  
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf  
local_recipient_maps = $virtual_mailbox_maps  

tabela de usuários virtuais do mysql:

+----+-----------+--------------+------------------------+  
| id | domain_id | password     | email                  |  
+----+-----------+--------------+------------------------+  
|  2 |         1 | passwordhash | [email protected] |  
+----+-----------+--------------+------------------------+  

tabela de aliases virtuais do mysql:

+----+-----------+------------------------+-------------------------------+  
| id | domain_id | source                 | destination                   |  
+----+-----------+------------------------+-------------------------------+  
|  2 |         1 | @example.com           | [email protected]   |  
+----+-----------+------------------------+-------------------------------+  
    
por canihavesomecoffee 13.03.2015 / 20:00

2 respostas

10

Por padrão, o postfix sempre pesquisa em virtual_alias_maps primeiro . Portanto, sempre substitui a outra entrada em outros mapas (por exemplo: alias_maps e virtual_mailbox_maps ). Portanto, precisamos excluir o endereço de e-mail definido em virtual_mailbox_maps .

Para excluí-lo, precisamos criar um novo mapa do mysql para virtual_alias_maps em main.cf

virtual_alias_maps = mysql:/etc/postfix/mailbox.cf, mysql:/etc/postfix/mysql-virtual-alias-maps.cf

Em seguida, no mailbox.cf, defina a consulta

SELECT email from VIRTUALUSERTABLE WHERE email = %s

É isso. Você precisa de consulta para que o resultado = chave de pesquisa. Quando isso acontece, o postfix não vai aliasing o email para o usuário catchall.

Referência: tutorial postfix

    
por 14.03.2015 / 02:34
1

Encontrei esta pesquisa por um problema semelhante no nosso sistema. Adicionando o mailbox.cf não funcionou para nós, uma vez que ignora todos os encaminhamentos para caixas de correio no mesmo domínio. Se você precisar encaminhar para caixas de correio no mesmo domínio com o catchall em vigor, será necessário adicionar o endereço de origem e destino à tabela de alias virtuais.

Por exemplo, na pergunta acima, se você encaminhar [email protected] para [email protected], [email protected] não verá o e-mail. Ele só chegará a [email protected]

"Os aliases mais específicos têm precedência sobre aliases genéricos gerais". Consulte: link

Configure encaminhamentos adicionais como este para o mesmo domínio em vez de adicionar mailbox.cf:

+----+-----------+------------------------+-------------------------------+  
| id | domain_id | source                 | destination                   |  
+----+-----------+------------------------+-------------------------------+  
|  1 |         1 | [email protected] | [email protected]             |  
|  2 |         1 | [email protected] | [email protected]        |  
+----+-----------+------------------------+-------------------------------+  
    
por 25.09.2015 / 00:11