- name: apt install python3-psycopg2 apt: name: python3-psycopg2 state: present - name: database table domains postgresql_table: login_host: "{{ mailserver.postgresql.host }}" port: "{{ mailserver.postgresql.port }}" login_user: "{{ mailserver.postgresql.username }}" login_password: "{{ mailserver.postgresql.password }}" db: "{{ mailserver.postgresql.dbname }}" ssl_mode: disable name: domains columns: - id bigserial primary key - name varchar(128) not null unique - relay_transport text null - name: database table users postgresql_table: login_host: "{{ mailserver.postgresql.host }}" port: "{{ mailserver.postgresql.port }}" login_user: "{{ mailserver.postgresql.username }}" login_password: "{{ mailserver.postgresql.password }}" db: "{{ mailserver.postgresql.dbname }}" ssl_mode: disable name: users columns: - id BIGSERIAL PRIMARY KEY - domain_id BIGINT references domains(id) on delete cascade - username VARCHAR(128) NOT NULL - realname VARCHAR(250) NOT NULL - password VARCHAR(128) NOT NULL - suspend_submission BOOL NOT NULL DEFAULT false - suspend_imap_reason TEXT NULL - quota_storage_bytes BIGINT NOT NULL DEFAULT {{ mailserver.dovecot.mailbox_max_bytes | default(100000000000) }} - quota_inbox_messages INT NOT NULL DEFAULT {{ mailserver.dovecot.mailbox_max_messages | default(500000) }} - unique(domain_id, username) - name: database index users__domain_username postgresql_idx: login_host: "{{ mailserver.postgresql.host }}" port: "{{ mailserver.postgresql.port }}" login_user: "{{ mailserver.postgresql.username }}" login_password: "{{ mailserver.postgresql.password }}" db: "{{ mailserver.postgresql.dbname }}" ssl_mode: disable table: users columns: domain_id, username idxname: users__domain_username - name: database table aliases postgresql_table: login_host: "{{ mailserver.postgresql.host }}" port: "{{ mailserver.postgresql.port }}" login_user: "{{ mailserver.postgresql.username }}" login_password: "{{ mailserver.postgresql.password }}" db: "{{ mailserver.postgresql.dbname }}" ssl_mode: disable name: aliases columns: - id bigserial primary key - alias_domain_id bigint references domains(id) on delete cascade - alias varchar(250) not null - forwardings varchar(250)[] not null - t timestamp without time zone not null default now() - comment text null - unique(alias_domain_id, alias) - name: database index aliases__alias postgresql_idx: login_host: "{{ mailserver.postgresql.host }}" port: "{{ mailserver.postgresql.port }}" login_user: "{{ mailserver.postgresql.username }}" login_password: "{{ mailserver.postgresql.password }}" db: "{{ mailserver.postgresql.dbname }}" ssl_mode: disable table: aliases columns: alias idxname: aliases__alias - name: database table shared_folders postgresql_table: login_host: "{{ mailserver.postgresql.host }}" port: "{{ mailserver.postgresql.port }}" login_user: "{{ mailserver.postgresql.username }}" login_password: "{{ mailserver.postgresql.password }}" db: "{{ mailserver.postgresql.dbname }}" ssl_mode: disable name: shared_folders columns: - id bigserial primary key - from_user varchar(128) not null - to_user varchar(128) not null - dummy char(1) DEFAULT '1' - name: database index shared_folders__from_to postgresql_idx: login_host: "{{ mailserver.postgresql.host }}" port: "{{ mailserver.postgresql.port }}" login_user: "{{ mailserver.postgresql.username }}" login_password: "{{ mailserver.postgresql.password }}" db: "{{ mailserver.postgresql.dbname }}" ssl_mode: disable table: shared_folders columns: from_user, to_user idxname: shared_folders__from_to - name: database table shared_folders_anyone postgresql_table: login_host: "{{ mailserver.postgresql.host }}" port: "{{ mailserver.postgresql.port }}" login_user: "{{ mailserver.postgresql.username }}" login_password: "{{ mailserver.postgresql.password }}" db: "{{ mailserver.postgresql.dbname }}" ssl_mode: disable name: shared_folders_anyone columns: - id bigserial primary key - from_user varchar(128) not null - dummy char(1) DEFAULT '1' - name: database index shared_folders_anyone__from postgresql_idx: login_host: "{{ mailserver.postgresql.host }}" port: "{{ mailserver.postgresql.port }}" login_user: "{{ mailserver.postgresql.username }}" login_password: "{{ mailserver.postgresql.password }}" db: "{{ mailserver.postgresql.dbname }}" ssl_mode: disable table: shared_folders_anyone columns: from_user idxname: shared_folders__from - name: database table mail_from postgresql_table: login_host: "{{ mailserver.postgresql.host }}" port: "{{ mailserver.postgresql.port }}" login_user: "{{ mailserver.postgresql.username }}" login_password: "{{ mailserver.postgresql.password }}" db: "{{ mailserver.postgresql.dbname }}" ssl_mode: disable name: mail_from columns: - id bigserial primary key - t timestamp default now() - original varchar(250) not null - rewritten varchar(250) not null - srs_id bigint - name: database index mail_from__rewritten postgresql_idx: login_host: "{{ mailserver.postgresql.host }}" port: "{{ mailserver.postgresql.port }}" login_user: "{{ mailserver.postgresql.username }}" login_password: "{{ mailserver.postgresql.password }}" db: "{{ mailserver.postgresql.dbname }}" ssl_mode: disable table: mail_from columns: rewritten idxname: mail_from__rewritten - name: database index mail_from__srs_id postgresql_idx: login_host: "{{ mailserver.postgresql.host }}" port: "{{ mailserver.postgresql.port }}" login_user: "{{ mailserver.postgresql.username }}" login_password: "{{ mailserver.postgresql.password }}" db: "{{ mailserver.postgresql.dbname }}" ssl_mode: disable table: mail_from columns: srs_id idxname: mail_from__srs_id