diff --git a/data/Dockerfiles/postfix/postfix.sh b/data/Dockerfiles/postfix/postfix.sh index 35cd7901..e734a9ab 100755 --- a/data/Dockerfiles/postfix/postfix.sh +++ b/data/Dockerfiles/postfix/postfix.sh @@ -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 != ''; diff --git a/docker-compose.yml b/docker-compose.yml index 60e8ce66..c0e7fecd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -290,7 +290,7 @@ services: - dovecot postfix-mailcow: - image: mailcow/postfix:1.65 + image: mailcow/postfix:1.66 depends_on: - mysql-mailcow volumes: