|
@@ -181,11 +181,31 @@ hosts = unix:/var/run/mysqld/mysqld.sock
|
|
|
dbname = ${DBNAME}
|
|
|
query = SELECT CONCAT_WS(':', username, password) AS auth_data FROM relayhosts
|
|
|
WHERE id IN (
|
|
|
- SELECT relayhost FROM domain
|
|
|
- WHERE CONCAT('@', domain) = '%s'
|
|
|
- OR domain IN (
|
|
|
- SELECT target_domain FROM alias_domain WHERE CONCAT('@', alias_domain) = '%s'
|
|
|
+ SELECT COALESCE(
|
|
|
+ (SELECT id FROM relayhosts
|
|
|
+ LEFT OUTER JOIN domain ON domain.relayhost = relayhosts.id
|
|
|
+ WHERE relayhosts.active = '1'
|
|
|
+ AND (domain.domain = '%d'
|
|
|
+ OR domain.domain IN (
|
|
|
+ SELECT target_domain FROM alias_domain
|
|
|
+ WHERE alias_domain = '%d'
|
|
|
+ )
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ (SELECT id FROM relayhosts
|
|
|
+ LEFT OUTER JOIN mailbox ON JSON_UNQUOTE(JSON_VALUE(mailbox.attributes, '$.relayhost')) = relayhosts.id
|
|
|
+ WHERE relayhosts.active = '1'
|
|
|
+ AND (
|
|
|
+ mailbox.username IN (
|
|
|
+ SELECT alias.goto from alias
|
|
|
+ JOIN mailbox ON mailbox.username = alias.goto
|
|
|
+ WHERE alias.active = '1'
|
|
|
+ AND alias.address = '%s'
|
|
|
+ AND alias.address NOT LIKE '@%%'
|
|
|
+ )
|
|
|
+ )
|
|
|
)
|
|
|
+ )
|
|
|
)
|
|
|
AND active = '1'
|
|
|
AND username != '';
|