Allow multiple virtual_aliases mappings for the same source

This commit is contained in:
Tunui Franken 2024-07-24 17:29:36 +02:00
parent 80cc5a55fe
commit edfaf0e066

View file

@ -24,14 +24,15 @@ INSERT INTO virtual_users (domain_id, email, password, quota) VALUES (
CREATE TABLE IF NOT EXISTS virtual_aliases ( CREATE TABLE IF NOT EXISTS virtual_aliases (
id integer primary key generated by default as identity, id integer primary key generated by default as identity,
domain_id integer NOT NULL, domain_id integer NOT NULL,
source varchar(254) NOT NULL UNIQUE, source varchar(254) NOT NULL,
destination varchar(254) NOT NULL, destination varchar(254) NOT NULL,
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
); );
CREATE UNIQUE INDEX IF NOT EXISTS virtual_aliases_s_d_key ON virtual_aliases (source, destination);
{% for alias in mailserver_database.virtual_aliases %} {% for alias in mailserver_database.virtual_aliases %}
INSERT INTO virtual_aliases (domain_id, source, destination) VALUES ( INSERT INTO virtual_aliases (domain_id, source, destination) VALUES (
(SELECT id FROM virtual_domains WHERE name = '{{ virtual_domain }}'), (SELECT id FROM virtual_domains WHERE name = '{{ virtual_domain }}'),
'{{ alias.source }}@{{ virtual_domain }}', '{{ alias.source }}@{{ virtual_domain }}',
'{{ alias.destination }}@{{ virtual_domain }}' '{{ alias.destination }}@{{ virtual_domain }}'
) ON CONFLICT (source) DO UPDATE SET destination = EXCLUDED.destination; ) ON CONFLICT (source, destination) DO NOTHING;
{% endfor %} {% endfor %}