SOSETH / mailserver

GNU General Public License v3.0
2 stars 3 forks source link

Use mysql procedures for isvdomain and lookup #9

Closed Carbenium closed 4 years ago

Carbenium commented 4 years ago

Since postfix 3.2 stored procedures are supported.

Sample stored procs:

CREATE
    definer = root@localhost procedure isvdomain(IN arg varchar(255))
BEGIN
    SELECT GROUP_CONCAT(DISTINCT `domain` SEPARATOR ' ') FROM `alias` WHERE domain = arg AND domain != 'tsos.ethz.ch';
END;
CREATE
    definer = root@localhost procedure lookup(IN username varchar(255), IN domainname varchar(255))
BEGIN
    IF EXISTS(SELECT * FROM `alias` WHERE `name` = username AND `domain` = domainname) THEN
        SELECT GROUP_CONCAT(CONCAT_WS('@', `destname`, `destdomain`) SEPARATOR ' ')
        FROM `alias`
        WHERE `name` = username
          AND `domain` = domainname;
    ELSE
        SELECT GROUP_CONCAT(CONCAT_WS('@', username, `destdomain`) SEPARATOR ' ')
        FROM `alias`
        where `name` = '*'
          AND `domain` = domainname;
    END IF;
END;