From 4d00f40c129714a646771e72a8bf85c845039e3e Mon Sep 17 00:00:00 2001 From: Markus Kepert Date: Sun, 28 Feb 2016 23:03:42 +0000 Subject: [PATCH] add catchall config to mailboxes (only at database level first) --- doc/vboxadm/mysql/vboxadm-current.sql | 1 + doc/vboxadm/postfix/maps/virtual_alias_maps.cf | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/vboxadm/mysql/vboxadm-current.sql b/doc/vboxadm/mysql/vboxadm-current.sql index 735b755..3c2239a 100644 --- a/doc/vboxadm/mysql/vboxadm-current.sql +++ b/doc/vboxadm/mysql/vboxadm-current.sql @@ -203,6 +203,7 @@ CREATE TABLE `mailboxes` ( `sa_kill_score` decimal(5,2) NOT NULL DEFAULT '6.31', `pw_ts` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', `pw_lock` tinyint(1) NOT NULL DEFAULT '0', + `catchall` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `domain_id` (`domain_id`,`local_part`), KEY `vacation_duration` (`vacation_start`,`vacation_end`), diff --git a/doc/vboxadm/postfix/maps/virtual_alias_maps.cf b/doc/vboxadm/postfix/maps/virtual_alias_maps.cf index 2ad338c..91fb4c2 100644 --- a/doc/vboxadm/postfix/maps/virtual_alias_maps.cf +++ b/doc/vboxadm/postfix/maps/virtual_alias_maps.cf @@ -2,4 +2,4 @@ user = postfix password = PASSWORD hosts = localhost dbname = vboxadm -query = /* virtual_alias_maps.cf */ SELECT goto FROM aliases AS a LEFT JOIN domains AS d ON a.domain_id = d.id WHERE d.name = '%d' AND a.local_part = '%u' AND a.is_active AND d.is_active UNION SELECT CONCAT(local_part,'@',domain) AS goto FROM role_accounts WHERE name = '%u' AND NOT (local_part = '%u' AND domain = '%d') UNION SELECT CONCAT(ma.local_part,'@',d.name) FROM mailboxes AS ma LEFT JOIN domains AS d ON ma.domain_id = d.id WHERE ma.local_part = '%u' AND d.name = '%d' +query = /* virtual_alias_maps.cf */ SELECT goto FROM aliases AS a LEFT JOIN domains AS d ON a.domain_id = d.id WHERE d.name = '%d' AND a.local_part = '%u' AND a.is_active AND d.is_active UNION SELECT CONCAT(local_part,'@',domain) AS goto FROM role_accounts WHERE name = '%u' AND NOT (local_part = '%u' AND domain = '%d') UNION SELECT CONCAT(ma.local_part,'@',d.name) FROM mailboxes AS ma LEFT JOIN domains AS d ON ma.domain_id = d.id WHERE ma.local_part = '%u' AND d.name = '%d' UNION SELECT CONCAT(ma.local_part,'@',d.name) As goto FROM mailboxes AS ma LEFT JOIN domains AS d ON ma.domain_id = d.id WHERE NOT EXISTS (SELECT goto FROM aliases AS a LEFT JOIN domains AS d ON a.domain_id = d.id WHERE d.name = '%d' AND a.local_part = '%u' AND a.is_active AND d.is_active UNION SELECT CONCAT(ma1.local_part,'@',d.name) FROM mailboxes AS ma1 LEFT JOIN domains AS d1 ON ma1.domain_id = d1.id WHERE (ma1.local_part = '%u' AND d1.name = '%d')) AND ma.catchall=1 AND d.name='%d'