posso adicionar o alias global em virtual_alias_maps, mas apenas para domínios locais?

3

Eu quero criar um alias global para todos os meus domínios para capturar todos os e-mails para endereços como postmaster@

Adicionei estas linhas a aliases.pcre :

/(MAILER-DAEMON|postmaster|abuse|webmaster)@(.*)$/  me@mydomain

e em main.cf

virtual_alias_maps = pcre:/etc/postfix/aliases.pcre

mas também captura e-mails para domínios externos, ou seja, redirecionando para mim e-mails enviados para [email protected]

Posso redirecionar todos os e-mails enviados para esses endereços, mas somente se o domínio estiver em virtual_mailbox_domains ? (sem gravar os nomes de domínio em aliases.pcre

* update *

usuários, domínios, alias .. são armazenados em um banco de dados, usando postfixadmin para gerenciá-lo.

as tabelas de alias são assim:

mysql> describe alias;
+----------+--------------+------+-----+---------------------+-------+
| Field    | Type         | Null | Key | Default             | Extra |
+----------+--------------+------+-----+---------------------+-------+
| address  | varchar(255) | NO   | PRI | NULL                |       |
| goto     | text         | NO   |     | NULL                |       |
| domain   | varchar(255) | NO   | MUL | NULL                |       |
| created  | datetime     | NO   |     | 0000-00-00 00:00:00 |       |
| modified | datetime     | NO   |     | 0000-00-00 00:00:00 |       |
| active   | tinyint(1)   | NO   |     | 1                   |       |
+----------+--------------+------+-----+---------------------+-------+

idealmente, ele deve respeitar o alias do banco de dados, se estiver definido, e redirecionar apenas o correio para endereços sem o alias

    
por Lluís 17.10.2014 / 12:36

2 respostas

4

Como alternativa, em vez de consulta longa, como proposto acima, você pode dividir em dois mapas sql

virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-aliases.cf, mysql:/etc/postfix/my-custom-query.cf

Ambos os arquivos têm o mesmo parâmetro, exceto a consulta. Para /etc/postfix/mysql-virtual-aliases.cf , você pode usar a consulta padrão de postfixadmin

SELECT goto FROM alias WHERE address = '%s'

E para my-custom-query.cf você tem consulta

select '[email protected]' AS goto from domain where domain='%d' AND '%u' REGEXP '^(MAILER-DAEMON|postmaster|abuse|webmaster)$' LIMIT 1;

Como funciona

Se os seus primeiros mapas mysql-virtual-aliases.cf retornarem null , o postfix tentará consultar os segundos mapas my-custom-query.cf .

Prós:

  • Se o seu endereço de e-mail corresponder à consulta em mysql-virtual-aliases.cf , basta executar uma consulta simples.

Contras:

  • Se o seu endereço de e-mail não corresponder à consulta em mysql-virtual-aliases.cf , você deverá executar a segunda consulta adicional .
por 20.10.2014 / 10:14
2

Finalmente, isso é o que eu configurei

em /etc/postfix/mysql-virtual-aliases.cf :

hosts = localhost
user = postfix
password = mypass
dbname = postfix

query = SELECT goto FROM alias WHERE address = '%s'

em /etc/postfix/mysql-virtual-aliases-postmaster.cf :

hosts = localhost
user = postfix
password = mypass
dbname = postfix

query = SELECT 'me@mydomain' AS goto FROM domain WHERE
        domain='%d' AND active = '1' AND
        '%u' REGEXP '^(MAILER-DAEMON|postmaster|abuse|webmaster)$' LIMIT 1

e em main.cf :

virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-aliases.cf,
                     mysql:/etc/postfix/mysql-virtual-aliases-postmaster.cf

Talvez alguém conheça uma maneira mais fácil / eficiente?

    
por 17.10.2014 / 14:47