You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.3 KiB
83 lines
2.3 KiB
CREATE TABLE IF NOT EXISTS mail_domains (
|
|
id integer PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
|
|
domain text NOT NULL,
|
|
|
|
UNIQUE (domain)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS mail_aliases (
|
|
id integer PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
|
|
enabled boolean DEFAULT true NOT NULL,
|
|
|
|
alias_username text NOT NULL,
|
|
alias_domain_id integer NOT NULL,
|
|
|
|
email_username text NOT NULL,
|
|
email_domain_id integer NOT NULL,
|
|
|
|
FOREIGN KEY (alias_domain_id) REFERENCES mail_domains(id) ON DELETE CASCADE,
|
|
FOREIGN KEY (email_domain_id) REFERENCES mail_domains(id) ON DELETE CASCADE,
|
|
|
|
UNIQUE (alias_username, alias_domain_id, email_username, email_domain_id)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS mail_forwards (
|
|
id integer PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
|
|
enabled boolean DEFAULT true NOT NULL,
|
|
source text NOT NULL,
|
|
destination text NOT NULL,
|
|
|
|
UNIQUE (source, destination)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS mail_tls (
|
|
id integer PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
|
|
enabled boolean DEFAULT true NOT NULL,
|
|
|
|
foreign_domain text NOT NULL,
|
|
|
|
policy text NOT NULL,
|
|
params text DEFAULT NULL,
|
|
|
|
UNIQUE (foreign_domain)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS mail_users (
|
|
id integer PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,
|
|
enabled boolean DEFAULT true NOT NULL,
|
|
|
|
username text NOT NULL,
|
|
domain_id integer NOT NULL,
|
|
|
|
password_plaintext text DEFAULT NULL,
|
|
password_md5 text DEFAULT NULL,
|
|
password_sha1 text DEFAULT NULL,
|
|
password_sha256 text DEFAULT NULL,
|
|
|
|
quota_mb integer NOT NULL DEFAULT 0 CHECK (quota_mb >= 0),
|
|
no_reply boolean NOT NULL DEFAULT false,
|
|
allowed_networks text DEFAULT NULL,
|
|
|
|
when_created timestamp with time zone DEFAULT now(),
|
|
|
|
FOREIGN KEY (domain_id) REFERENCES mail_domains(id) ON DELETE CASCADE,
|
|
UNIQUE (username, domain_id),
|
|
|
|
CHECK ((password_md5 IS NOT NULL) OR (password_sha1 IS NOT NULL) OR
|
|
(password_sha256 IS NOT NULL) OR (password_plaintext IS NOT NULL))
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS mail_anyone_shares (
|
|
from_user text NOT NULL,
|
|
dummy character(1) DEFAULT '1'::bpchar,
|
|
|
|
UNIQUE (from_user)
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS mail_user_shares (
|
|
from_user text NOT NULL,
|
|
to_user text NOT NULL,
|
|
dummy character(1) DEFAULT '1'::bpchar,
|
|
|
|
UNIQUE (from_user, to_user)
|
|
);
|
|
|