Você pode usar virtual_alias_maps
para definir o alias [email protected]. Aqui o formato usado por virtual 5 .
pattern address1, address2, address3, ...
Então você precisa construir uma consulta para concatenar todas as linhas. Retirado desta discussão: Posso concatenar várias linhas MySQL em um campo? ? , você pode usar essa consulta.
SELECT GROUP_CONCAT(CASE WHEN active='1' THEN username ELSE NULL END separator ', ')
FROM vmail
WHERE DOMAIN='%d'
AND '%s'='all@%d'
Isso precisa ir para o seu mysql_virtual_alias_maps.cf
e pode ser anexado à consulta existente usando UNION
- para que o resultado pareça, por exemplo, assim:
query = SELECT goto FROM alias WHERE address='%s' AND active = '1' UNION
SELECT GROUP_CONCAT(CASE WHEN active='1' THEN username ELSE NULL END separator ', ')
FROM vmail
WHERE DOMAIN='%d'
AND '%s'='all@%d'
(pode ser necessário estar todos em uma linha - a formatação aqui é aplicada apenas para facilitar a leitura).
Para permitir somente permit_mynetworks e allow_sasl_authenticated, coloque a restrição na seguinte ordem
smtpd_recipient_restrictions = ....
permit_mynetworks
permit_sasl_authenticated
check_recipient_access regexp:/etc/postfix/restrict.all.alias
reject_unauth_destination
Em /etc/postfix/restrict.all.alias, defina
/^all@/ REJECT access denied
Ele permitirá o e-mail para todos os domínios @ quando enviados pela mynetworks ou enviados por um usuário autenticado, mas serão rejeitados depois disso.