diff --git a/bundles/mailserver/items.py b/bundles/mailserver/items.py index 335ffc0..c175737 100644 --- a/bundles/mailserver/items.py +++ b/bundles/mailserver/items.py @@ -19,7 +19,7 @@ setup = ''' CONSTRAINT "fk_domain" FOREIGN KEY("domain_id") REFERENCES domains("id"), - "password" varchar(255) NOT NULL, + "password" varchar(255) NULL, "redirect" varchar(255) DEFAULT NULL ); CREATE UNIQUE INDEX ON users ("name", "domain_id") WHERE "redirect" IS NULL; @@ -36,8 +36,12 @@ actions['initialize_mailserver_db'] = { # TEST ''' +DROP TABLE users; DROP TABLE domains; + INSERT INTO domains (id, name) VALUES (1, 'mails2.sublimity.de'); INSERT INTO users (id, name, domain_id, password) VALUES (1, 'ckn', 1, MD5('test123')); +INSERT INTO users (id, name, domain_id, redirect) +VALUES (1, 'weg', 1, 'irgendweo@gmail.com'); ''' diff --git a/bundles/postfix/files/virtual_alias_maps.cf b/bundles/postfix/files/virtual_alias_maps.cf index a9299a5..a21d23b 100644 --- a/bundles/postfix/files/virtual_alias_maps.cf +++ b/bundles/postfix/files/virtual_alias_maps.cf @@ -2,4 +2,4 @@ hosts = ${host} dbname = ${name} user = ${user} password = ${password} -query = SELECT redirect FROM users LEFT JOIN domains ON users.domain_id = domains.id WHERE users.name = SPLIT_PART('%s', '@', 1) AND domains.name = SPLIT_PART('%s', '@', 2) +query = SELECT redirect FROM users LEFT JOIN domains ON users.domain_id = domains.id WHERE redirect IS NOT NULL AND users.name = SPLIT_PART('%s', '@', 1) AND domains.name = SPLIT_PART('%s', '@', 2) diff --git a/bundles/postfix/files/virtual_mailbox_maps.cf b/bundles/postfix/files/virtual_mailbox_maps.cf index 18f675d..e72d1a0 100644 --- a/bundles/postfix/files/virtual_mailbox_maps.cf +++ b/bundles/postfix/files/virtual_mailbox_maps.cf @@ -2,4 +2,4 @@ hosts = ${host} dbname = ${name} user = ${user} password = ${password} -query = SELECT CONCAT(users.name, '@', domains.name) AS email FROM users LEFT JOIN domains ON users.domain_id = domains.id WHERE users.name = SPLIT_PART('%s', '@', 1) AND domains.name = SPLIT_PART('%s', '@', 2) +query = SELECT CONCAT(users.name, '@', domains.name) AS email FROM users LEFT JOIN domains ON users.domain_id = domains.id WHERE redirect IS NULL AND users.name = SPLIT_PART('%s', '@', 1) AND domains.name = SPLIT_PART('%s', '@', 2) diff --git a/data/mailserver.sql b/data/mailserver.sql deleted file mode 100644 index 548e437..0000000 --- a/data/mailserver.sql +++ /dev/null @@ -1,25 +0,0 @@ -DROP TABLE users; DROP TABLE domains; - -CREATE TABLE domains ( - "id" BIGSERIAL PRIMARY KEY, - "name" varchar(255) UNIQUE NOT NULL -); -CREATE INDEX ON domains ("name"); - -CREATE TABLE users ( - "id" BIGSERIAL PRIMARY KEY, - "name" varchar(255) NOT NULL, - "domain_id" BIGSERIAL NOT NULL, - CONSTRAINT "fk_domain" - FOREIGN KEY("domain_id") - REFERENCES domains("id"), - "password" varchar(255) NOT NULL, - "redirect" varchar(255) DEFAULT NULL -); -CREATE UNIQUE INDEX ON users ("name", "domain_id") WHERE "redirect" IS NULL; - - -INSERT INTO domains (id, name) -VALUES (1, 'mails2.sublimity.de'); -INSERT INTO users (id, name, domain_id, password) -VALUES (1, 'ckn', 1, MD5('test123'));