--- /dev/null
+CREATE TABLE "alias" (
+ domain varchar(64) NOT NULL,
+ pattern varchar(64) NOT NULL,
+ box varchar(64) NOT NULL
+ REFERENCES box (address)
+ ON DELETE CASCADE,
+ created timestamp NOT NULL
+ DEFAULT CURRENT_TIMESTAMP,
+ PRIMARY KEY (domain, pattern, box),
+);
+
+CREATE TABLE "box" (
+ address varchar(64) NOT NULL,
+--- Cannot CASCADE as we have per-box files to cleanup
+ user varchar(32) NOT NULL
+ REFERENCES user (id)
+ ON DELETE RESTRICT,
+ max_size bigint NOT NULL,
+ size bigint NOT NULL
+ DEFAULT 0,
+ max_msgs bigint NOT NULL,
+ msgs bigint NOT NULL
+ DEFAULT 0,
+ created timestamp NOT NULL
+ DEFAULT CURRENT_TIMESTAMP,
+ in timestamp NOT NULL
+ DEFAULT CURRENT_TIMESTAMP,
+ out timestamp NOT NULL
+ DEFAULT CURRENT_TIMESTAMP,
+ filter boolean NOT NULL
+ DEFAULT 'f',
+ description varchar(64),
+ PRIMARY KEY (address)
+);
+
+CREATE TABLE "filter" (
+ address varchar(64) NOT NULL
+ REFERENCES box (address)
+ ON DELETE CASCADE,
+ pattern varchar(128) NOT NULL,
+ created timestamp NOT NULL
+ DEFAULT CURRENT_TIMESTAMP,
+ description varchar(64),
+ PRIMARY KEY (address, pattern)
+);
+
+CREATE TABLE "mail" (
+ id bigserial NOT NULL,
+ box varchar(64) NOT NULL
+ REFERENCES box (address)
+ ON DELETE CASCADE,
+ file varchar(255) NOT NULL,
+ created timestamp NOT NULL
+ DEFAULT CURRENT_TIMESTAMP,
+ size bigint NOT NULL,
+# data bytea NOT NULL,
+ PRIMARY KEY (id),
+);
+CREATE INDEX mail_box_index ON mail (box);
+
+CREATE TABLE "nofrom" (
+ pattern varchar(64) NOT NULL,
+ PRIMARY KEY (pattern)
+);
+
+CREATE TABLE "user" (
+ id varchar(32) NOT NULL,
+ name varchar(64) NOT NULL,
+ passwd char(34) NOT NULL,
+ created timestamp NOT NULL
+ DEFAULT CURRENT_TIMESTAMP,
+ activity timestamp NOT NULL
+ DEFAULT CURRENT_TIMESTAMP,
+ logins bigint NOT NULL
+ DEFAULT 0,
+ active boolean NOT NULL
+ DEFAULT 't',
+ admin boolean NOT NULL
+ DEFAULT 'f',
+ PRIMARY KEY (id)
+);
+
+CREATE TABLE "relayqyeye" (
+ id bigserial NOT NULL,
+ from varchar(64) NOT NULL,
+ ipaddr inet NOT NULL,
+ todomain varchar(64) NOT NULL,
+ touser varchar(64) NOT NULL,
+ size bigint NOT NULL,
+ file varchar(255) NOT NULL,
+ queued timestamp NOT NULL
+ DEFAULT CURRENT_TIMESTAMP,
+ lasttry timestamp,
+ expire timestamp NOT NULL,
+ tries bigint NOT NULL
+ DEFAULT 0,
+ lasterror int NOT NULL
+ DEFAULT 0,
+ PRIMARY KEY (id)
+);
+CREATE INDEX relayqueue_todomain_index ON relayqueue (todomain);
+
+CREATE TABLE "relaylocal" (
+ pattern varchar(64) NOT NULL,
+ PRIMARY KEY (pattern)
+);
+
+CREATE TABLE "relayfrom" (
+ pattern varchar(64) NOT NULL,
+ PRIMARY KEY (pattern)
+);
+
+CREATE TABLE "session" (
+ id char(64) NOT NULL,
+ expires bigint NOT NULL,
+ data text NOT NULL,
+ PRIMARY KEY (id)
+);
+
+CREATE TABLE "boxdelete" (
+ address varchar(64) NOT NULL,
+ PRIMARY KEY (address)
+);