From 3b8f57584e0b9f5523cca1e064df2d0c1318b215 Mon Sep 17 00:00:00 2001
From: Jesse Norell <jesse@kci.net>
Date: Thu, 4 Jun 2020 17:47:33 -0600
Subject: [PATCH] migrate legacy postfix mysql query interface to "new"
 interface

---
 install/tpl/mysql-virtual_client.cf.master     |  7 ++-----
 install/tpl/mysql-virtual_domains.cf.master    |  7 ++-----
 .../tpl/mysql-virtual_email2email.cf.master    |  9 ++++-----
 .../tpl/mysql-virtual_forwardings.cf.master    | 18 +++++++++++++++++-
 install/tpl/mysql-virtual_gids.cf.master       |  7 ++-----
 install/tpl/mysql-virtual_mailboxes.cf.master  |  5 +----
 install/tpl/mysql-virtual_outgoing_bcc.cf      |  8 --------
 .../tpl/mysql-virtual_outgoing_bcc.cf.master   |  7 ++-----
 .../mysql-virtual_policy_greylist.cf.master    |  3 +--
 install/tpl/mysql-virtual_recipient.cf.master  |  7 ++-----
 .../tpl/mysql-virtual_relaydomains.cf.master   |  7 ++-----
 .../mysql-virtual_relayrecipientmaps.cf.master |  7 ++-----
 install/tpl/mysql-virtual_sender.cf.master     |  7 ++-----
 .../mysql-virtual_sender_login_maps.cf.master  |  2 +-
 install/tpl/mysql-virtual_transports.cf.master |  7 ++-----
 install/tpl/mysql-virtual_uids.cf.master       |  5 +----
 16 files changed, 43 insertions(+), 70 deletions(-)
 delete mode 100644 install/tpl/mysql-virtual_outgoing_bcc.cf

diff --git a/install/tpl/mysql-virtual_client.cf.master b/install/tpl/mysql-virtual_client.cf.master
index bad0cb9655..106b647e4a 100644
--- a/install/tpl/mysql-virtual_client.cf.master
+++ b/install/tpl/mysql-virtual_client.cf.master
@@ -1,8 +1,5 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-table        = mail_access
-select_field = access
-where_field  = source
-additional_conditions = and type = 'client' and active = 'y'
-hosts = {mysql_server_ip}
\ No newline at end of file
+hosts = {mysql_server_ip}
+query = select access from mail_access where source = '%s' and type = 'client' and active = 'y'
diff --git a/install/tpl/mysql-virtual_domains.cf.master b/install/tpl/mysql-virtual_domains.cf.master
index 5b711422f2..0d1793a95a 100644
--- a/install/tpl/mysql-virtual_domains.cf.master
+++ b/install/tpl/mysql-virtual_domains.cf.master
@@ -1,8 +1,5 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-table = mail_domain
-select_field = domain
-where_field = domain
-additional_conditions = and active = 'y' and server_id = {server_id}
-hosts = {mysql_server_ip}
\ No newline at end of file
+hosts = {mysql_server_ip}
+query = select domain from mail_domain where domain = '%s' and active = 'y' and server_id = {server_id}
diff --git a/install/tpl/mysql-virtual_email2email.cf.master b/install/tpl/mysql-virtual_email2email.cf.master
index e18ef2407e..68d7f70ba9 100644
--- a/install/tpl/mysql-virtual_email2email.cf.master
+++ b/install/tpl/mysql-virtual_email2email.cf.master
@@ -1,8 +1,7 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-table = mail_user
-select_field = email
-where_field = email
-additional_conditions = and postfix = 'y' and server_id = {server_id}
-hosts = {mysql_server_ip}
\ No newline at end of file
+hosts = {mysql_server_ip}
+query = select email from mail_user where email = '%s' and postfix = 'y' and disabledeliver = 'n' and server_id = {server_id}
+        union
+        select cc as email from mail_user where email = '%s' and postfix = 'y' and disabledeliver = 'y' and server_id = {server_id}
diff --git a/install/tpl/mysql-virtual_forwardings.cf.master b/install/tpl/mysql-virtual_forwardings.cf.master
index e39b129f50..818cac07bc 100644
--- a/install/tpl/mysql-virtual_forwardings.cf.master
+++ b/install/tpl/mysql-virtual_forwardings.cf.master
@@ -2,4 +2,20 @@ user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
 hosts = {mysql_server_ip}
-query = SELECT u.email as target FROM mail_forwarding as s INNER JOIN mail_user as u ON (u.email = CONCAT('%u@', SUBSTRING_INDEX(s.destination,'@',-1))) WHERE s.source = '@%d' AND s.type = 'aliasdomain' AND s.active = 'y' AND u.disabledeliver = 'n' AND s.server_id = {server_id} UNION SELECT s.destination as target FROM mail_forwarding as s WHERE s.source = '%s' AND s.type IN ('alias', 'forward') and s.active = 'y' AND s.server_id = {server_id} UNION SELECT s.destination as target FROM mail_forwarding as s INNER JOIN mail_forwarding as f ON (f.source = CONCAT('%u@', SUBSTRING_INDEX(s.destination,'@',-1))) WHERE s.source = '@%d' AND s.type = 'aliasdomain' AND s.active = 'y' AND f.active = 'y' AND s.server_id = {server_id} UNION SELECT s.destination as target FROM mail_forwarding as s WHERE s.source = '@%d' AND s.type IN ('catchall') and s.active = 'y' AND s.server_id = {server_id} UNION SELECT s.destination as target FROM mail_forwarding as s INNER JOIN mail_forwarding as t ON (t.source = s.destination AND t.type = 'catchall') WHERE s.source = '@%d' AND s.type = 'aliasdomain' and s.active = 'y' AND t.active = 'y' AND s.server_id = {server_id}
+query = SELECT u.email as target FROM mail_forwarding as s
+            INNER JOIN mail_user as u ON (u.email = CONCAT('%u@', SUBSTRING_INDEX(s.destination,'@',-1)))
+            WHERE s.source = '@%d' AND s.type = 'aliasdomain' AND s.active = 'y' AND u.disabledeliver = 'n' AND s.server_id = {server_id}
+        UNION
+        SELECT s.destination as target FROM mail_forwarding as s
+            WHERE s.source = '%s' AND s.type IN ('alias', 'forward') and s.active = 'y' AND s.server_id = {server_id}
+        UNION
+        SELECT s.destination as target FROM mail_forwarding as s
+            INNER JOIN mail_forwarding as f ON (f.source = CONCAT('%u@', SUBSTRING_INDEX(s.destination,'@',-1)))
+            WHERE s.source = '@%d' AND s.type = 'aliasdomain' AND s.active = 'y' AND f.active = 'y' AND s.server_id = {server_id}
+        UNION
+        SELECT s.destination as target FROM mail_forwarding as s
+            WHERE s.source = '@%d' AND s.type IN ('catchall') and s.active = 'y' AND s.server_id = {server_id}
+        UNION
+        SELECT s.destination as target FROM mail_forwarding as s
+            INNER JOIN mail_forwarding as t ON (t.source = s.destination AND t.type = 'catchall')
+            WHERE s.source = '@%d' AND s.type = 'aliasdomain' and s.active = 'y' AND t.active = 'y' AND s.server_id = {server_id}
diff --git a/install/tpl/mysql-virtual_gids.cf.master b/install/tpl/mysql-virtual_gids.cf.master
index 7c7d995fc9..5611b935dd 100644
--- a/install/tpl/mysql-virtual_gids.cf.master
+++ b/install/tpl/mysql-virtual_gids.cf.master
@@ -1,8 +1,5 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-table = mail_user
-select_field = gid
-where_field = email
-additional_conditions = and postfix = 'y' and server_id = {server_id}
-hosts = {mysql_server_ip}
\ No newline at end of file
+hosts = {mysql_server_ip}
+query = select gid from mail_user where email = '%s' and postfix = 'y' and server_id = {server_id}
diff --git a/install/tpl/mysql-virtual_mailboxes.cf.master b/install/tpl/mysql-virtual_mailboxes.cf.master
index 2fe47bbdf5..97825f9ffc 100644
--- a/install/tpl/mysql-virtual_mailboxes.cf.master
+++ b/install/tpl/mysql-virtual_mailboxes.cf.master
@@ -1,8 +1,5 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-table = mail_user
-select_field = CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
-where_field = login
-additional_conditions = and postfix = 'y' and server_id = {server_id}
 hosts = {mysql_server_ip}
+query = select CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') from mail_user where login = '%s' and postfix = 'y' and server_id = {server_id}
diff --git a/install/tpl/mysql-virtual_outgoing_bcc.cf b/install/tpl/mysql-virtual_outgoing_bcc.cf
deleted file mode 100644
index 78fca41a2f..0000000000
--- a/install/tpl/mysql-virtual_outgoing_bcc.cf
+++ /dev/null
@@ -1,8 +0,0 @@
-user = {mysql_server_ispconfig_user}
-password = {mysql_server_ispconfig_password}
-dbname = {mysql_server_database}
-table = mail_user
-select_field = sender_cc
-where_field = email
-additional_conditions = and postfix = 'y' and disabledeliver = 'n' and disables$
-hosts = {mysql_server_ip}
\ No newline at end of file
diff --git a/install/tpl/mysql-virtual_outgoing_bcc.cf.master b/install/tpl/mysql-virtual_outgoing_bcc.cf.master
index 53afa53106..9554847a9f 100644
--- a/install/tpl/mysql-virtual_outgoing_bcc.cf.master
+++ b/install/tpl/mysql-virtual_outgoing_bcc.cf.master
@@ -1,8 +1,5 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-table = mail_user
-select_field = sender_cc
-where_field = email
-additional_conditions = and postfix = 'y' and disabledeliver = 'n' and disablesmtp = 'n' and sender_cc != ''
-hosts = {mysql_server_ip}
\ No newline at end of file
+hosts = {mysql_server_ip}
+query = select sender_cc from mail_user where email = '%s' and postfix = 'y' and disabledeliver = 'n' and disablesmtp = 'n' and sender_cc != ''
diff --git a/install/tpl/mysql-virtual_policy_greylist.cf.master b/install/tpl/mysql-virtual_policy_greylist.cf.master
index 55378b29ca..6ad282324e 100644
--- a/install/tpl/mysql-virtual_policy_greylist.cf.master
+++ b/install/tpl/mysql-virtual_policy_greylist.cf.master
@@ -1,10 +1,9 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
+hosts = {mysql_server_ip}
 query = SELECT 'greylisting' FROM
   (SELECT `greylisting`, 1 as `prio` FROM `mail_user` WHERE `server_id` = {server_id} AND `email` = '%s' 
   UNION SELECT `greylisting`, 2 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '%s' 
   UNION SELECT `greylisting`, 3 as `prio` FROM `mail_forwarding` WHERE `server_id` = {server_id} AND `source` = '@%d' ORDER BY `prio` ASC LIMIT 1) as rules 
   WHERE rules.greylisting = 'y'
-
-hosts = {mysql_server_ip}
diff --git a/install/tpl/mysql-virtual_recipient.cf.master b/install/tpl/mysql-virtual_recipient.cf.master
index 49024f3ebd..2099966df2 100644
--- a/install/tpl/mysql-virtual_recipient.cf.master
+++ b/install/tpl/mysql-virtual_recipient.cf.master
@@ -1,8 +1,5 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-table        = mail_access
-select_field = access
-where_field  = source
-additional_conditions = and type = 'recipient' and active = 'y' and server_id = {server_id}
-hosts = {mysql_server_ip}
\ No newline at end of file
+hosts = {mysql_server_ip}
+query = select access from mail_access where source = '%s' and type = 'recipient' and active = 'y' and server_id = {server_id}
diff --git a/install/tpl/mysql-virtual_relaydomains.cf.master b/install/tpl/mysql-virtual_relaydomains.cf.master
index fb7bec1a3a..5ce2db6954 100644
--- a/install/tpl/mysql-virtual_relaydomains.cf.master
+++ b/install/tpl/mysql-virtual_relaydomains.cf.master
@@ -1,8 +1,5 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-table = mail_transport
-select_field = domain
-where_field = domain
-additional_conditions = and active = 'y' and server_id = {server_id}
-hosts = {mysql_server_ip}
\ No newline at end of file
+hosts = {mysql_server_ip}
+query = select domain from mail_transport where domain = '%s' and active = 'y' and server_id = {server_id}
diff --git a/install/tpl/mysql-virtual_relayrecipientmaps.cf.master b/install/tpl/mysql-virtual_relayrecipientmaps.cf.master
index a6304fe323..ea67220215 100644
--- a/install/tpl/mysql-virtual_relayrecipientmaps.cf.master
+++ b/install/tpl/mysql-virtual_relayrecipientmaps.cf.master
@@ -1,8 +1,5 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-table = mail_relay_recipient
-select_field = access
-where_field = source
-additional_conditions = and active = 'y' and server_id = {server_id}
-hosts = {mysql_server_ip}
\ No newline at end of file
+hosts = {mysql_server_ip}
+query = select access from mail_relay_recipient where source = '%s' and active = 'y' and server_id = {server_id}
diff --git a/install/tpl/mysql-virtual_sender.cf.master b/install/tpl/mysql-virtual_sender.cf.master
index 0ef634aec7..1a5c4cb877 100644
--- a/install/tpl/mysql-virtual_sender.cf.master
+++ b/install/tpl/mysql-virtual_sender.cf.master
@@ -1,8 +1,5 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-table        = mail_access
-select_field = access
-where_field  = source
-additional_conditions = and type = 'sender' and active = 'y' and server_id = {server_id}
-hosts = {mysql_server_ip}
\ No newline at end of file
+hosts = {mysql_server_ip}
+query = select access from mail_access where source = '%s' and type = 'sender' and active = 'y' and server_id = {server_id}
diff --git a/install/tpl/mysql-virtual_sender_login_maps.cf.master b/install/tpl/mysql-virtual_sender_login_maps.cf.master
index 5b7f144f8c..b51bddc96d 100644
--- a/install/tpl/mysql-virtual_sender_login_maps.cf.master
+++ b/install/tpl/mysql-virtual_sender_login_maps.cf.master
@@ -1,5 +1,5 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
+hosts = {mysql_server_ip}
 query = SELECT destination FROM mail_forwarding WHERE source = '%s' AND active = 'y' AND allow_send_as = 'y' AND server_id = {server_id} UNION SELECT email FROM mail_user WHERE email = '%s' AND disablesmtp = 'n' AND server_id = {server_id};
-hosts = {mysql_server_ip}
\ No newline at end of file
diff --git a/install/tpl/mysql-virtual_transports.cf.master b/install/tpl/mysql-virtual_transports.cf.master
index 048a7a81ac..e9585ca6cc 100644
--- a/install/tpl/mysql-virtual_transports.cf.master
+++ b/install/tpl/mysql-virtual_transports.cf.master
@@ -1,8 +1,5 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-table = mail_transport
-select_field = transport
-where_field = domain
-additional_conditions = and active = 'y' and server_id = {server_id}
-hosts = {mysql_server_ip}
\ No newline at end of file
+hosts = {mysql_server_ip}
+query = select transport from mail_transport where domain = '%s' and active = 'y' and server_id = {server_id}
diff --git a/install/tpl/mysql-virtual_uids.cf.master b/install/tpl/mysql-virtual_uids.cf.master
index da3cd7c2a0..de35368c0a 100644
--- a/install/tpl/mysql-virtual_uids.cf.master
+++ b/install/tpl/mysql-virtual_uids.cf.master
@@ -1,8 +1,5 @@
 user = {mysql_server_ispconfig_user}
 password = {mysql_server_ispconfig_password}
 dbname = {mysql_server_database}
-table = mail_user
-select_field = uid
-where_field = email
-additional_conditions = and postfix = 'y' and server_id = {server_id}
 hosts = {mysql_server_ip}
+query = select uid from mail_user where email = '%s' and postfix = 'y' and server_id = {server_id}
-- 
GitLab