aboutsummaryrefslogtreecommitdiffstats
path: root/roles/mailserver/templates/mailserver.sql.j2
diff options
context:
space:
mode:
Diffstat (limited to 'roles/mailserver/templates/mailserver.sql.j2')
-rw-r--r--roles/mailserver/templates/mailserver.sql.j257
1 files changed, 57 insertions, 0 deletions
diff --git a/roles/mailserver/templates/mailserver.sql.j2 b/roles/mailserver/templates/mailserver.sql.j2
new file mode 100644
index 0000000..203c3d8
--- /dev/null
+++ b/roles/mailserver/templates/mailserver.sql.j2
@@ -0,0 +1,57 @@
+-- If tables are not dropped, have to truncate before insert or use "insert or replace" (not postgres compatible)
+
+DROP TABLE IF EXISTS "virtual_users";
+DROP TABLE IF EXISTS "virtual_aliases";
+DROP TABLE IF EXISTS "virtual_domains";
+
+CREATE TABLE IF NOT EXISTS "virtual_domains" (
+ "id" SERIAL,
+ "name" TEXT NOT NULL,
+ PRIMARY KEY ("id")
+);
+
+CREATE UNIQUE INDEX name_idx ON virtual_domains (name);
+
+CREATE TABLE IF NOT EXISTS "virtual_users" (
+ "id" SERIAL,
+ "domain_id" int NOT NULL,
+ "password" TEXT NOT NULL,
+ "email" TEXT NOT NULL UNIQUE,
+ PRIMARY KEY ("id"),
+ FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
+);
+
+
+CREATE UNIQUE INDEX email_idx ON virtual_users (email);
+
+CREATE TABLE IF NOT EXISTS "virtual_aliases" (
+ "id" SERIAL,
+ "domain_id" int NOT NULL,
+ "source" TEXT NOT NULL,
+ "destination" TEXT NOT NULL,
+ PRIMARY KEY ("id"),
+ FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
+);
+
+CREATE INDEX source_idx ON virtual_aliases (source);
+
+{% for virtual_domain in mail_virtual_domains %}
+INSERT INTO "virtual_domains" ("id", "name")
+ VALUES ('{{ virtual_domain.pk_id }}', '{{ virtual_domain.name }}');
+{% endfor %}
+
+{% for virtual_user in mail_virtual_users %}
+INSERT INTO "virtual_users" ("domain_id", "password" , "email")
+ VALUES (
+ '{{ virtual_user.domain_pk_id }}',
+ '{{ virtual_user.password | doveadm_pw_hash }}',
+ '{{ virtual_user.account }}@{{ virtual_user.domain }}'
+ );
+{% endfor %}
+
+{% if mail_virtual_aliases is defined %}
+{% for virtual_alias in mail_virtual_aliases %}
+INSERT INTO "virtual_aliases" ("domain_id", "source", "destination")
+ VALUES ('{{ virtual_alias.domain_pk_id }}', '{{ virtual_alias.source }}', '{{virtual_alias.destination }}');
+{% endfor %}
+{% endif %}