diff --git a/modoboa/admin/postfix_maps.py b/modoboa/admin/postfix_maps.py index a1c58d410..1550fe7e6 100644 --- a/modoboa/admin/postfix_maps.py +++ b/modoboa/admin/postfix_maps.py @@ -116,10 +116,15 @@ class SenderLoginMap(object): "WHERE sad.address='%s') " "UNION " "(SELECT concat(mb.address, '@', dom.name) FROM admin_mailbox mb " - "INNER JOIN modoboa_admin_aliasrecipient alr ON alr.r_mailbox_id=mb.id" - " INNER JOIN admin_domain dom ON dom.id=mb.domain_id" - " INNER JOIN admin_alias al ON alr.alias_id=al.id " - "WHERE al.enabled=1 AND al.address='%s')" + "INNER JOIN modoboa_admin_aliasrecipient alr ON alr.r_mailbox_id=mb.id " + "INNER JOIN admin_domain dom ON dom.id=mb.domain_id " + "INNER JOIN admin_alias al ON alr.alias_id=al.id " + "LEFT JOIN admin_domainalias adoma ON adoma.target_id=al.domain_id " + "LEFT JOIN admin_domain adom ON adom.id=adoma.target_id " + "WHERE al.enabled=1 AND (" + " al.address='%s' OR (" + " adoma.name='%d' AND al.address=concat('%u', '@', adom.name)" + ")))" ) postgres = ( "(SELECT email FROM core_user WHERE email='%s' AND is_active) " @@ -130,10 +135,15 @@ class SenderLoginMap(object): "WHERE sad.address='%s') " "UNION " "(SELECT mb.address || '@' || dom.name FROM admin_mailbox mb " - "INNER JOIN modoboa_admin_aliasrecipient alr ON alr.r_mailbox_id=mb.id" - " INNER JOIN admin_domain dom ON dom.id=mb.domain_id" - " INNER JOIN admin_alias al ON alr.alias_id=al.id " - "WHERE al.enabled AND al.address='%s')" + "INNER JOIN modoboa_admin_aliasrecipient alr ON alr.r_mailbox_id=mb.id " + "INNER JOIN admin_domain dom ON dom.id=mb.domain_id " + "INNER JOIN admin_alias al ON alr.alias_id=al.id " + "LEFT JOIN admin_domainalias adoma ON adoma.target_id=al.domain_id " + "LEFT JOIN admin_domain adom ON adom.id=adoma.target_id " + "WHERE al.enabled AND (" + " al.address='%s' OR (" + " adoma.name='%d' AND al.address='%u'||'@'||adom.name" + ")))" ) sqlite = ( "SELECT email FROM core_user WHERE email='%s' AND is_active=1 " @@ -147,5 +157,10 @@ class SenderLoginMap(object): "INNER JOIN modoboa_admin_aliasrecipient alr ON alr.r_mailbox_id=mb.id " "INNER JOIN admin_domain dom ON dom.id=mb.domain_id " "INNER JOIN admin_alias al ON alr.alias_id=al.id " - "WHERE al.enabled=1 AND al.address='%s'" + "LEFT JOIN admin_domainalias adoma ON adoma.target_id=al.domain_id " + "LEFT JOIN admin_domain adom ON adom.id=adoma.target_id " + "WHERE al.enabled=1 AND (" + " al.address='%s' OR (" + " adoma.name='%d' AND al.address='%u'||'@'||adom.name" + "))" )