2024-01-05 20:10:29 +01:00
|
|
|
CREATE TABLE IF NOT EXISTS virtual_domains (
|
|
|
|
id integer primary key generated by default as identity,
|
2024-01-12 19:50:14 +01:00
|
|
|
name varchar(50) NOT NULL UNIQUE
|
2024-01-05 20:10:29 +01:00
|
|
|
);
|
2024-11-01 16:42:54 +01:00
|
|
|
|
|
|
|
{% for domain in virtual_domains %}
|
|
|
|
INSERT INTO virtual_domains (name) VALUES ('{{ domain }}') ON CONFLICT (name) DO NOTHING;
|
|
|
|
{% endfor %}
|
2024-01-05 20:10:29 +01:00
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS virtual_users (
|
|
|
|
id integer primary key generated by default as identity,
|
|
|
|
domain_id integer NOT NULL,
|
2024-01-12 19:50:14 +01:00
|
|
|
email varchar(254) NOT NULL UNIQUE,
|
2024-01-05 20:10:29 +01:00
|
|
|
password varchar(150) NOT NULL,
|
|
|
|
quota bigint NOT NULL DEFAULT 0,
|
2024-07-24 17:12:00 +02:00
|
|
|
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
|
2024-01-05 20:10:29 +01:00
|
|
|
);
|
2024-11-01 16:42:54 +01:00
|
|
|
|
|
|
|
{% for domain in virtual_domains %}
|
2024-01-17 09:53:35 +01:00
|
|
|
{% for user in mailserver_database.virtual_users %}
|
2024-01-12 19:50:14 +01:00
|
|
|
INSERT INTO virtual_users (domain_id, email, password, quota) VALUES (
|
2024-11-01 16:42:54 +01:00
|
|
|
(SELECT id FROM virtual_domains WHERE name = '{{ domain }}'),
|
|
|
|
'{{ user.name }}@{{ domain }}',
|
2024-10-25 19:23:49 +02:00
|
|
|
{# same as `doveadm pw -s BLF-CRYPT -p ${user.pwd}` -#}
|
|
|
|
'{BLF-CRYPT}{{ user.pwd | password_hash('blowfish') }}',
|
2024-01-12 19:50:14 +01:00
|
|
|
0
|
|
|
|
) ON CONFLICT (email) DO UPDATE SET password = EXCLUDED.password, quota = EXCLUDED.quota;
|
2024-01-12 20:44:44 +01:00
|
|
|
{% endfor %}
|
2024-11-01 16:42:54 +01:00
|
|
|
{% endfor %}
|
2024-01-05 20:10:29 +01:00
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS virtual_aliases (
|
|
|
|
id integer primary key generated by default as identity,
|
|
|
|
domain_id integer NOT NULL,
|
2024-07-24 17:29:36 +02:00
|
|
|
source varchar(254) NOT NULL,
|
2024-01-05 20:10:29 +01:00
|
|
|
destination varchar(254) NOT NULL,
|
2024-07-24 17:12:00 +02:00
|
|
|
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
|
2024-01-05 20:10:29 +01:00
|
|
|
);
|
2024-07-24 17:29:36 +02:00
|
|
|
CREATE UNIQUE INDEX IF NOT EXISTS virtual_aliases_s_d_key ON virtual_aliases (source, destination);
|
2024-11-01 16:42:54 +01:00
|
|
|
|
|
|
|
{% for domain in virtual_domains %}
|
2024-07-24 16:46:30 +02:00
|
|
|
{% for alias in mailserver_database.virtual_aliases %}
|
|
|
|
INSERT INTO virtual_aliases (domain_id, source, destination) VALUES (
|
2024-11-01 16:42:54 +01:00
|
|
|
(SELECT id FROM virtual_domains WHERE name = '{{ domain }}'),
|
|
|
|
'{{ alias.source }}@{{ domain }}',
|
|
|
|
'{{ alias.destination }}@{{ domain }}'
|
2024-07-24 17:29:36 +02:00
|
|
|
) ON CONFLICT (source, destination) DO NOTHING;
|
2024-07-24 16:46:30 +02:00
|
|
|
{% endfor %}
|
2024-11-01 16:42:54 +01:00
|
|
|
{% endfor %}
|