author | Pascal Volk <user@localhost.localdomain.org> |
Wed, 12 Feb 2014 21:28:02 +0000 | |
branch | v0.7.x |
changeset 721 | 2f25d1cf8502 |
parent 550 | 867d950ce7b7 |
permissions | -rw-r--r-- |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
1 |
SET client_encoding = 'UTF8'; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
2 |
SET client_min_messages = warning; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
3 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
4 |
|
6
07d141039f74
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
0
diff
changeset
|
5 |
CREATE SEQUENCE transport_id; |
07d141039f74
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
0
diff
changeset
|
6 |
|
297
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
7 |
CREATE SEQUENCE mailboxformat_id; |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
8 |
|
8
7e3ce56f49e6
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
7
diff
changeset
|
9 |
CREATE SEQUENCE maillocation_id; |
6
07d141039f74
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
0
diff
changeset
|
10 |
|
382
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
11 |
CREATE SEQUENCE quotalimit_id; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
12 |
|
437
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
13 |
CREATE SEQUENCE service_set_id; |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
14 |
|
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
15 |
CREATE SEQUENCE domain_gid |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
16 |
START WITH 70000 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
17 |
INCREMENT BY 1 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
18 |
MINVALUE 70000 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
19 |
MAXVALUE 4294967294 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
20 |
NO CYCLE; |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
21 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
22 |
CREATE SEQUENCE users_uid |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
23 |
START WITH 70000 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
24 |
INCREMENT BY 1 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
25 |
MINVALUE 70000 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
26 |
MAXVALUE 4294967294 |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
27 |
NO CYCLE; |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
28 |
|
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
29 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
30 |
CREATE TABLE transport ( |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
31 |
tid bigint NOT NULL DEFAULT nextval('transport_id'), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
32 |
transport varchar(270) NOT NULL, -- smtps:[255-char.host.name:50025] |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
33 |
CONSTRAINT pkey_transport PRIMARY KEY (tid), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
34 |
CONSTRAINT ukey_transport UNIQUE (transport) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
35 |
); |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
36 |
-- Insert default transport |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
37 |
INSERT INTO transport(transport) VALUES ('dovecot:'); |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
38 |
|
297
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
39 |
CREATE TABLE mailboxformat ( |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
40 |
fid bigint NOT NULL DEFAULT nextval('mailboxformat_id'), |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
41 |
format varchar(20) NOT NULL, |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
42 |
CONSTRAINT pkey_mailboxformat PRIMARY KEY (fid), |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
43 |
CONSTRAINT ukey_mailboxformat UNIQUE (format) |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
44 |
); |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
45 |
-- Insert supported mailbox formats |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
46 |
INSERT INTO mailboxformat(format) VALUES ('maildir'); |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
47 |
INSERT INTO mailboxformat(format) VALUES ('mdbox'); |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
48 |
INSERT INTO mailboxformat(format) VALUES ('sdbox'); |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
49 |
|
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
50 |
CREATE TABLE maillocation ( |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
51 |
mid bigint NOT NULL DEFAULT nextval('maillocation_id'), |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
52 |
fid bigint NOT NULL DEFAULT 1, |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
53 |
directory varchar(20) NOT NULL, |
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
54 |
extra varchar(1024), |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
55 |
CONSTRAINT pkey_maillocation PRIMARY KEY (mid), |
297
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
56 |
CONSTRAINT fkey_maillocation_fid_mailboxformat FOREIGN KEY (fid) |
368
be4bd77dbe57
pgsql/create_tables{,-dovecot-1.2.x}.pgsql: Fixed syntax errors
Tobias Berling <t-obi@users.sourceforge.net>
parents:
297
diff
changeset
|
57 |
REFERENCES mailboxformat (fid) |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
58 |
); |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
59 |
-- Insert default Maildir-folder name |
297
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
60 |
INSERT INTO maillocation(directory) VALUES ('Maildir'); |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
61 |
|
382
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
62 |
CREATE TABLE quotalimit ( |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
63 |
qid bigint NOT NULL DEFAULT nextval('quotalimit_id'), |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
64 |
bytes bigint NOT NULL, |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
65 |
messages integer NOT NULL DEFAULT 0, |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
66 |
CONSTRAINT pkey_quotalimit PRIMARY KEY (qid), |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
67 |
CONSTRAINT ukey_quotalimit UNIQUE (bytes, messages) |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
68 |
); |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
69 |
-- Insert default (non) quota limit |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
70 |
INSERT INTO quotalimit(bytes, messages) VALUES (0, 0); |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
71 |
|
437
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
72 |
CREATE TABLE service_set ( |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
73 |
ssid bigint NOT NULL DEFAULT nextval('service_set_id'), |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
74 |
smtp boolean NOT NULL DEFAULT TRUE, |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
75 |
pop3 boolean NOT NULL DEFAULT TRUE, |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
76 |
imap boolean NOT NULL DEFAULT TRUE, |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
77 |
sieve boolean NOT NULL DEFAULT TRUE, |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
78 |
CONSTRAINT pkey_service_set PRIMARY KEY (ssid), |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
79 |
CONSTRAINT ukey_service_set UNIQUE (smtp, pop3, imap, sieve) |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
80 |
); |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
81 |
-- Insert all possible service combinations |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
82 |
COPY service_set (smtp, pop3, imap, sieve) FROM stdin; |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
83 |
TRUE TRUE TRUE TRUE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
84 |
FALSE TRUE TRUE TRUE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
85 |
TRUE FALSE TRUE TRUE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
86 |
FALSE FALSE TRUE TRUE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
87 |
TRUE TRUE FALSE TRUE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
88 |
FALSE TRUE FALSE TRUE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
89 |
TRUE FALSE FALSE TRUE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
90 |
FALSE FALSE FALSE TRUE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
91 |
TRUE TRUE TRUE FALSE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
92 |
FALSE TRUE TRUE FALSE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
93 |
TRUE FALSE TRUE FALSE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
94 |
FALSE FALSE TRUE FALSE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
95 |
TRUE TRUE FALSE FALSE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
96 |
FALSE TRUE FALSE FALSE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
97 |
TRUE FALSE FALSE FALSE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
98 |
FALSE FALSE FALSE FALSE |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
99 |
\. |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
100 |
|
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
101 |
CREATE TABLE domain_data ( |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
102 |
gid bigint NOT NULL DEFAULT nextval('domain_gid'), |
437
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
103 |
qid bigint NOT NULL DEFAULT 1, -- default quota limit |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
104 |
ssid bigint NOT NULL DEFAULT 1, -- default service set |
257
5b8fde01e4f0
VMM/Alias.py: Replaced some %r with '%s'.
Tobias Berling <mail@tobiasberling.de>
parents:
160
diff
changeset
|
105 |
tid bigint NOT NULL DEFAULT 1, -- default transport |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
106 |
domaindir varchar(40) NOT NULL, --/srv/mail/$RAND/4294967294 |
547
5020c56f9388
pgsql: Create column `note' as text.
Pascal Volk <user@localhost.localdomain.org>
parents:
538
diff
changeset
|
107 |
note text NULL DEFAULT NULL, |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
108 |
CONSTRAINT pkey_domain_data PRIMARY KEY (gid), |
437
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
109 |
CONSTRAINT fkey_domain_data_qid_quotalimit FOREIGN KEY (qid) |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
110 |
REFERENCES quotalimit (qid), |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
111 |
CONSTRAINT fkey_domain_data_ssid_service_set FOREIGN KEY (ssid) |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
112 |
REFERENCES service_set (ssid), |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
113 |
CONSTRAINT fkey_domain_data_tid_transport FOREIGN KEY (tid) |
437
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
114 |
REFERENCES transport (tid) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
115 |
); |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
116 |
|
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
117 |
CREATE TABLE domain_name ( |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
118 |
domainname varchar(255) NOT NULL, |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
119 |
gid bigint NOT NULL, |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
120 |
is_primary boolean NOT NULL, |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
121 |
CONSTRAINT pkey_domain_name PRIMARY KEY (domainname), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
122 |
CONSTRAINT fkey_domain_name_gid_domain_data FOREIGN KEY (gid) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
123 |
REFERENCES domain_data (gid) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
124 |
); |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
125 |
|
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
126 |
CREATE TABLE users ( |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
127 |
local_part varchar(64) NOT NULL,-- only localpart w/o '@' |
297
e21ceaabe871
pgsql: Added support for different mailbox formats.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
257
diff
changeset
|
128 |
passwd varchar(270) NOT NULL, |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
129 |
name varchar(128) NULL, |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
130 |
uid bigint NOT NULL DEFAULT nextval('users_uid'), |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
131 |
gid bigint NOT NULL, |
6
07d141039f74
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
0
diff
changeset
|
132 |
mid bigint NOT NULL DEFAULT 1, |
530
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
133 |
qid bigint NULL DEFAULT NULL, |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
134 |
ssid bigint NULL DEFAULT NULL, |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
135 |
tid bigint NULL DEFAULT NULL, |
547
5020c56f9388
pgsql: Create column `note' as text.
Pascal Volk <user@localhost.localdomain.org>
parents:
538
diff
changeset
|
136 |
note text NULL DEFAULT NULL, |
71
4c94ba297698
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
67
diff
changeset
|
137 |
CONSTRAINT pkey_users PRIMARY KEY (local_part, gid), |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
138 |
CONSTRAINT ukey_users_uid UNIQUE (uid), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
139 |
CONSTRAINT fkey_users_gid_domain_data FOREIGN KEY (gid) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
140 |
REFERENCES domain_data (gid), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
141 |
CONSTRAINT fkey_users_mid_maillocation FOREIGN KEY (mid) |
8
7e3ce56f49e6
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
7
diff
changeset
|
142 |
REFERENCES maillocation (mid), |
437
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
143 |
CONSTRAINT fkey_users_qid_quotalimit FOREIGN KEY (qid) |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
144 |
REFERENCES quotalimit (qid), |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
145 |
CONSTRAINT fkey_users_ssid_service_set FOREIGN KEY (ssid) |
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
146 |
REFERENCES service_set (ssid), |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
147 |
CONSTRAINT fkey_users_tid_transport FOREIGN KEY (tid) |
437
9823548b2717
pgsql: Added new table `service_set'.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
391
diff
changeset
|
148 |
REFERENCES transport (tid) |
382
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
149 |
); |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
150 |
|
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
151 |
CREATE TABLE userquota ( |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
152 |
uid bigint NOT NULL, |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
153 |
bytes bigint NOT NULL DEFAULT 0, |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
154 |
messages integer NOT NULL DEFAULT 0, |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
155 |
CONSTRAINT pkey_userquota PRIMARY KEY (uid), |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
156 |
CONSTRAINT fkey_userquota_uid_users FOREIGN KEY (uid) |
387
05dc4e1f8dff
pgsql/{create,update}_tables*: Added the ON DELETE CASCADE clause
Pascal Volk <neverseen@users.sourceforge.net>
parents:
382
diff
changeset
|
157 |
REFERENCES users (uid) ON DELETE CASCADE |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
158 |
); |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
159 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
160 |
CREATE TABLE alias ( |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
161 |
gid bigint NOT NULL, |
67
e4d25f50164d
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
63
diff
changeset
|
162 |
address varchar(64) NOT NULL,-- only localpart w/o '@' |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
163 |
destination varchar(320) NOT NULL, |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
164 |
CONSTRAINT pkey_alias PRIMARY KEY (gid, address, destination), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
165 |
CONSTRAINT fkey_alias_gid_domain_data FOREIGN KEY (gid) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
166 |
REFERENCES domain_data (gid) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
167 |
); |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
168 |
|
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
169 |
CREATE TABLE relocated ( |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
170 |
gid bigint NOT NULL, |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
171 |
address varchar(64) NOT NULL, |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
172 |
destination varchar(320) NOT NULL, |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
173 |
CONSTRAINT pkey_relocated PRIMARY KEY (gid, address), |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
174 |
CONSTRAINT fkey_relocated_gid_domain_data FOREIGN KEY (gid) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
175 |
REFERENCES domain_data (gid) |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
176 |
); |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
177 |
|
503
492c179094c9
Add database table for catchall destinations
martin f. krafft <madduck@madduck.net>
parents:
502
diff
changeset
|
178 |
CREATE TABLE catchall ( |
492c179094c9
Add database table for catchall destinations
martin f. krafft <madduck@madduck.net>
parents:
502
diff
changeset
|
179 |
gid bigint NOT NULL, |
492c179094c9
Add database table for catchall destinations
martin f. krafft <madduck@madduck.net>
parents:
502
diff
changeset
|
180 |
destination varchar(320) NOT NULL, |
492c179094c9
Add database table for catchall destinations
martin f. krafft <madduck@madduck.net>
parents:
502
diff
changeset
|
181 |
CONSTRAINT pkey_catchall PRIMARY KEY (gid, destination), |
492c179094c9
Add database table for catchall destinations
martin f. krafft <madduck@madduck.net>
parents:
502
diff
changeset
|
182 |
CONSTRAINT fkey_catchall_gid_domain_data FOREIGN KEY (gid) |
492c179094c9
Add database table for catchall destinations
martin f. krafft <madduck@madduck.net>
parents:
502
diff
changeset
|
183 |
REFERENCES domain_data (gid) |
492c179094c9
Add database table for catchall destinations
martin f. krafft <madduck@madduck.net>
parents:
502
diff
changeset
|
184 |
); |
492c179094c9
Add database table for catchall destinations
martin f. krafft <madduck@madduck.net>
parents:
502
diff
changeset
|
185 |
|
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
186 |
CREATE OR REPLACE VIEW postfix_gid AS |
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
187 |
SELECT gid, domainname |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
188 |
FROM domain_name; |
0
bb0aa2102206
Initial import @sf.net
Pascal Volk <neverseen@users.sourceforge.net>
parents:
diff
changeset
|
189 |
|
9
e3d3dbeb5b84
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
8
diff
changeset
|
190 |
CREATE OR REPLACE VIEW vmm_domain_info AS |
391
8217ddd5220d
pgsql: Updated view vmm_domain_info. No longer select data we have already.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
388
diff
changeset
|
191 |
SELECT gid, count(uid) AS accounts, |
80
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
71
diff
changeset
|
192 |
(SELECT count(DISTINCT address) |
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
71
diff
changeset
|
193 |
FROM alias |
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
71
diff
changeset
|
194 |
WHERE alias.gid = domain_data.gid) AS aliases, |
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
71
diff
changeset
|
195 |
(SELECT count(gid) |
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
71
diff
changeset
|
196 |
FROM relocated |
5dedc673524e
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
71
diff
changeset
|
197 |
WHERE relocated.gid = domain_data.gid) AS relocated, |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
198 |
(SELECT count(gid) |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
199 |
FROM domain_name |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
200 |
WHERE domain_name.gid = domain_data.gid |
515
09fa019bb330
Include catch-all count in domaininfo output
martin f. krafft <madduck@madduck.net>
parents:
514
diff
changeset
|
201 |
AND NOT domain_name.is_primary) AS aliasdomains, |
09fa019bb330
Include catch-all count in domaininfo output
martin f. krafft <madduck@madduck.net>
parents:
514
diff
changeset
|
202 |
(SELECT count(gid) |
09fa019bb330
Include catch-all count in domaininfo output
martin f. krafft <madduck@madduck.net>
parents:
514
diff
changeset
|
203 |
FROM catchall |
09fa019bb330
Include catch-all count in domaininfo output
martin f. krafft <madduck@madduck.net>
parents:
514
diff
changeset
|
204 |
WHERE catchall.gid = domain_data.gid) AS catchall |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
205 |
FROM domain_data |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
206 |
LEFT JOIN domain_name USING (gid) |
9
e3d3dbeb5b84
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
8
diff
changeset
|
207 |
LEFT JOIN users USING (gid) |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
208 |
WHERE domain_name.is_primary |
391
8217ddd5220d
pgsql: Updated view vmm_domain_info. No longer select data we have already.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
388
diff
changeset
|
209 |
GROUP BY gid; |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
210 |
|
502
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
211 |
-- ########################################################################## -- |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
212 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
213 |
CREATE LANGUAGE plpgsql; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
214 |
|
502
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
215 |
-- ######################## TYPEs ########################################### -- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
216 |
|
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
217 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
218 |
-- Data type for function postfix_virtual_mailbox(varchar, varchar) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
219 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
220 |
CREATE TYPE address_maildir AS ( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
221 |
address varchar(320), |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
222 |
maildir text |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
223 |
); |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
224 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
225 |
-- Data type for function dovecotpassword(varchar, varchar) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
226 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
227 |
CREATE TYPE dovecotpassword AS ( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
228 |
userid varchar(320), |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
229 |
password varchar(270), |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
230 |
smtp boolean, |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
231 |
pop3 boolean, |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
232 |
imap boolean, |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
233 |
sieve boolean |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
234 |
); |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
235 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
236 |
-- Data type for function dovecotquotauser(varchar, varchar) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
237 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
238 |
CREATE TYPE dovecotquotauser AS ( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
239 |
userid varchar(320), |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
240 |
uid bigint, |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
241 |
gid bigint, |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
242 |
home text, |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
243 |
mail text, |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
244 |
quota_rule text |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
245 |
); |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
246 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
247 |
-- Data type for function dovecotuser(varchar, varchar) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
248 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
249 |
CREATE TYPE dovecotuser AS ( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
250 |
userid varchar(320), |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
251 |
uid bigint, |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
252 |
gid bigint, |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
253 |
home text, |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
254 |
mail text |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
255 |
); |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
256 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
257 |
-- Data type for functions: postfix_relocated_map(varchar, varchar) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
258 |
-- postfix_virtual_alias_map(varchar, varchar) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
259 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
260 |
CREATE TYPE recipient_destination AS ( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
261 |
recipient varchar(320), |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
262 |
destination text |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
263 |
); |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
264 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
265 |
-- Data type for function postfix_transport_map(varchar, varchar) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
266 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
267 |
CREATE TYPE recipient_transport AS ( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
268 |
recipient varchar(320), |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
269 |
transport text |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
270 |
); |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
271 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
272 |
-- Data type for function postfix_virtual_uid_map(varchar, varchar) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
273 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
274 |
CREATE TYPE recipient_uid AS ( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
275 |
recipient varchar(320), |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
276 |
uid bigint |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
277 |
); |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
278 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
279 |
-- Data type for function postfix_smtpd_sender_login_map(varchar, varchar) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
280 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
281 |
CREATE TYPE sender_login AS ( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
282 |
sender varchar(320), |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
283 |
login text |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
284 |
); |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
285 |
|
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
286 |
-- ######################## TRIGGERs ######################################## -- |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
287 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
288 |
CREATE OR REPLACE FUNCTION domain_primary_trigger() RETURNS TRIGGER AS $$ |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
289 |
DECLARE |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
290 |
primary_count bigint; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
291 |
BEGIN |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
292 |
SELECT INTO primary_count count(gid) + NEW.is_primary::integer |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
293 |
FROM domain_name |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
294 |
WHERE domain_name.gid = NEW.gid |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
295 |
AND is_primary; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
296 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
297 |
IF (primary_count > 1) THEN |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
298 |
RAISE EXCEPTION 'There can only be one domain marked as primary.'; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
299 |
END IF; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
300 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
301 |
RETURN NEW; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
302 |
END; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
303 |
$$ LANGUAGE plpgsql STABLE; |
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
304 |
|
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
305 |
|
63
9b627307f4a8
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
42
diff
changeset
|
306 |
CREATE TRIGGER primary_count_ins BEFORE INSERT ON domain_name |
42
9d10877e1c10
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
29
diff
changeset
|
307 |
FOR EACH ROW EXECUTE PROCEDURE domain_primary_trigger(); |
63
9b627307f4a8
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
42
diff
changeset
|
308 |
|
9b627307f4a8
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
42
diff
changeset
|
309 |
CREATE TRIGGER primary_count_upd AFTER UPDATE ON domain_name |
9b627307f4a8
* 'create_tables.pgsql'
Pascal Volk <neverseen@users.sourceforge.net>
parents:
42
diff
changeset
|
310 |
FOR EACH ROW EXECUTE PROCEDURE domain_primary_trigger(); |
382
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
311 |
|
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
312 |
|
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
313 |
CREATE OR REPLACE FUNCTION merge_userquota() RETURNS TRIGGER AS $$ |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
314 |
BEGIN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
315 |
IF NEW.messages < 0 OR NEW.messages IS NULL THEN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
316 |
IF NEW.messages IS NULL THEN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
317 |
NEW.messages = 0; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
318 |
ELSE |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
319 |
NEW.messages = -NEW.messages; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
320 |
END IF; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
321 |
RETURN NEW; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
322 |
END IF; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
323 |
LOOP |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
324 |
UPDATE userquota |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
325 |
SET bytes = bytes + NEW.bytes, messages = messages + NEW.messages |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
326 |
WHERE uid = NEW.uid; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
327 |
IF found THEN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
328 |
RETURN NULL; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
329 |
END IF; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
330 |
BEGIN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
331 |
IF NEW.messages = 0 THEN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
332 |
INSERT INTO userquota VALUES (NEW.uid, NEW.bytes, NULL); |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
333 |
ELSE |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
334 |
INSERT INTO userquota VALUES (NEW.uid, NEW.bytes, -NEW.messages); |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
335 |
END IF; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
336 |
RETURN NULL; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
337 |
EXCEPTION |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
338 |
WHEN unique_violation THEN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
339 |
-- do nothing, and loop to try the UPDATE again |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
340 |
WHEN foreign_key_violation THEN |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
341 |
-- break the loop: a non matching uid means no such user |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
342 |
RETURN NULL; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
343 |
END; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
344 |
END LOOP; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
345 |
END; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
346 |
$$ LANGUAGE plpgsql; |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
347 |
|
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
348 |
|
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
349 |
CREATE TRIGGER mergeuserquota BEFORE INSERT ON userquota |
5e6bcb2e010e
pgsql/*: Added tables, triggers and functions for quota support.
Pascal Volk <neverseen@users.sourceforge.net>
parents:
368
diff
changeset
|
350 |
FOR EACH ROW EXECUTE PROCEDURE merge_userquota(); |
502
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
351 |
|
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
352 |
-- ######################## FUNCTIONs ####################################### -- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
353 |
|
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
354 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
355 |
-- Parameters (from login name [localpart@the_domain]): |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
356 |
-- varchar localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
357 |
-- varchar the_domain |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
358 |
-- Returns: dovecotpassword records |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
359 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
360 |
-- Required access privileges for your dovecot database user: |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
361 |
-- GRANT SELECT ON users, domain_name, service_set TO dovecot; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
362 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
363 |
-- For more details see http://wiki.dovecot.org/AuthDatabase/SQL |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
364 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
365 |
CREATE OR REPLACE FUNCTION dovecotpassword( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
366 |
IN localpart varchar, IN the_domain varchar) RETURNS SETOF dovecotpassword |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
367 |
AS $$ |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
368 |
DECLARE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
369 |
record dovecotpassword; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
370 |
userid varchar(320) := localpart || '@' || the_domain; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
371 |
BEGIN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
372 |
FOR record IN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
373 |
SELECT userid, passwd, smtp, pop3, imap, sieve |
530
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
374 |
FROM users, service_set, domain_data |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
375 |
WHERE users.gid = (SELECT gid |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
376 |
FROM domain_name |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
377 |
WHERE domainname = the_domain) |
502
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
378 |
AND local_part = localpart |
530
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
379 |
AND users.gid = domain_data.gid |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
380 |
AND CASE WHEN |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
381 |
users.ssid IS NOT NULL |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
382 |
THEN |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
383 |
service_set.ssid = users.ssid |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
384 |
ELSE |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
385 |
service_set.ssid = domain_data.ssid |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
386 |
END |
502
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
387 |
LOOP |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
388 |
RETURN NEXT record; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
389 |
END LOOP; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
390 |
RETURN; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
391 |
END; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
392 |
$$ LANGUAGE plpgsql STABLE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
393 |
RETURNS NULL ON NULL INPUT |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
394 |
EXTERNAL SECURITY INVOKER; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
395 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
396 |
-- Nearly the same as function dovecotuser below. It returns additionally the |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
397 |
-- field quota_rule. |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
398 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
399 |
-- Required access privileges for your dovecot database user: |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
400 |
-- GRANT SELECT |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
401 |
-- ON users, domain_data, domain_name, maillocation, mailboxformat, |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
402 |
-- quotalimit |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
403 |
-- TO dovecot; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
404 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
405 |
CREATE OR REPLACE FUNCTION dovecotquotauser( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
406 |
IN localpart varchar, IN the_domain varchar) RETURNS SETOF dovecotquotauser |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
407 |
AS $$ |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
408 |
DECLARE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
409 |
record dovecotquotauser; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
410 |
userid varchar(320) := localpart || '@' || the_domain; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
411 |
did bigint := (SELECT gid FROM domain_name WHERE domainname=the_domain); |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
412 |
BEGIN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
413 |
FOR record IN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
414 |
SELECT userid, uid, did, domaindir || '/' || uid AS home, |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
415 |
format || ':~/' || directory AS mail, '*:bytes=' || |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
416 |
bytes || ':messages=' || messages AS quota_rule |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
417 |
FROM users, domain_data, mailboxformat, maillocation, quotalimit |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
418 |
WHERE users.gid = did |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
419 |
AND users.local_part = localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
420 |
AND maillocation.mid = users.mid |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
421 |
AND mailboxformat.fid = maillocation.fid |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
422 |
AND domain_data.gid = did |
530
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
423 |
AND CASE WHEN |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
424 |
users.qid IS NOT NULL |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
425 |
THEN |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
426 |
quotalimit.qid = users.qid |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
427 |
ELSE |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
428 |
quotalimit.qid = domain_data.qid |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
429 |
END |
502
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
430 |
LOOP |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
431 |
RETURN NEXT record; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
432 |
END LOOP; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
433 |
RETURN; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
434 |
END; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
435 |
$$ LANGUAGE plpgsql STABLE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
436 |
RETURNS NULL ON NULL INPUT |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
437 |
EXTERNAL SECURITY INVOKER; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
438 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
439 |
-- Parameters (from login name [localpart@the_domain]): |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
440 |
-- varchar localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
441 |
-- varchar the_domain |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
442 |
-- Returns: dovecotuser records |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
443 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
444 |
-- Required access privileges for your dovecot database user: |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
445 |
-- GRANT SELECT |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
446 |
-- ON users, domain_data, domain_name, maillocation, mailboxformat |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
447 |
-- TO dovecot; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
448 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
449 |
-- For more details see http://wiki.dovecot.org/UserDatabase |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
450 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
451 |
CREATE OR REPLACE FUNCTION dovecotuser( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
452 |
IN localpart varchar, IN the_domain varchar) RETURNS SETOF dovecotuser |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
453 |
AS $$ |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
454 |
DECLARE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
455 |
record dovecotuser; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
456 |
userid varchar(320) := localpart || '@' || the_domain; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
457 |
did bigint := (SELECT gid FROM domain_name WHERE domainname=the_domain); |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
458 |
BEGIN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
459 |
FOR record IN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
460 |
SELECT userid, uid, did, domaindir || '/' || uid AS home, |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
461 |
format || ':~/' || directory AS mail |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
462 |
FROM users, domain_data, mailboxformat, maillocation |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
463 |
WHERE users.gid = did |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
464 |
AND users.local_part = localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
465 |
AND maillocation.mid = users.mid |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
466 |
AND mailboxformat.fid = maillocation.fid |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
467 |
AND domain_data.gid = did |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
468 |
LOOP |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
469 |
RETURN NEXT record; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
470 |
END LOOP; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
471 |
RETURN; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
472 |
END; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
473 |
$$ LANGUAGE plpgsql STABLE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
474 |
RETURNS NULL ON NULL INPUT |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
475 |
EXTERNAL SECURITY INVOKER; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
476 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
477 |
-- Parameters (from recipients address (MAIL TO) [localpart@the_domain]): |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
478 |
-- varchar localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
479 |
-- varchar the_domain |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
480 |
-- Returns: recipient_destination records |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
481 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
482 |
-- Required access privileges for your postfix database user: |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
483 |
-- GRANT SELECT ON domain_name, relocated TO postfix; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
484 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
485 |
-- For more details see postconf(5) section relocated_maps and relocated(5) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
486 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
487 |
CREATE OR REPLACE FUNCTION postfix_relocated_map( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
488 |
IN localpart varchar, IN the_domain varchar) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
489 |
RETURNS SETOF recipient_destination |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
490 |
AS $$ |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
491 |
DECLARE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
492 |
record recipient_destination; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
493 |
recipient varchar(320) := localpart || '@' || the_domain; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
494 |
did bigint := (SELECT gid FROM domain_name WHERE domainname=the_domain); |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
495 |
BEGIN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
496 |
FOR record IN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
497 |
SELECT recipient, destination |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
498 |
FROM relocated |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
499 |
WHERE gid = did |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
500 |
AND address = localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
501 |
LOOP |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
502 |
RETURN NEXT record; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
503 |
END LOOP; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
504 |
RETURN; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
505 |
END; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
506 |
$$ LANGUAGE plpgsql STABLE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
507 |
RETURNS NULL ON NULL INPUT |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
508 |
EXTERNAL SECURITY INVOKER; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
509 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
510 |
-- Parameters (from _sender_ address (MAIL FROM) [localpart@the_domain]): |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
511 |
-- varchar localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
512 |
-- varchar the_domain |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
513 |
-- Returns: SASL _login_ names that own _sender_ addresses (MAIL FROM): |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
514 |
-- set of sender_login records. |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
515 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
516 |
-- Required access privileges for your postfix database user: |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
517 |
-- GRANT SELECT ON domain_name, users, alias TO postfix; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
518 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
519 |
-- For more details see postconf(5) section smtpd_sender_login_maps |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
520 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
521 |
CREATE OR REPLACE FUNCTION postfix_smtpd_sender_login_map( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
522 |
IN localpart varchar, IN the_domain varchar) RETURNS SETOF sender_login |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
523 |
AS $$ |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
524 |
DECLARE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
525 |
rec sender_login; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
526 |
did bigint := (SELECT gid FROM domain_name WHERE domainname=the_domain); |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
527 |
sender varchar(320) := localpart || '@' || the_domain; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
528 |
BEGIN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
529 |
-- Get all addresses for 'localpart' in the primary and aliased domains |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
530 |
FOR rec IN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
531 |
SELECT sender, local_part || '@' || domainname |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
532 |
FROM domain_name, users |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
533 |
WHERE domain_name.gid = did |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
534 |
AND users.gid = did |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
535 |
AND users.local_part = localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
536 |
LOOP |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
537 |
RETURN NEXT rec; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
538 |
END LOOP; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
539 |
IF NOT FOUND THEN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
540 |
-- Loop over the alias addresses for localpart@the_domain |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
541 |
FOR rec IN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
542 |
SELECT DISTINCT sender, destination |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
543 |
FROM alias |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
544 |
WHERE alias.gid = did |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
545 |
AND alias.address = localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
546 |
LOOP |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
547 |
RETURN NEXT rec; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
548 |
END LOOP; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
549 |
END IF; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
550 |
RETURN; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
551 |
END; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
552 |
$$ LANGUAGE plpgsql STABLE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
553 |
RETURNS NULL ON NULL INPUT |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
554 |
EXTERNAL SECURITY INVOKER; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
555 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
556 |
-- Parameters (from recipients address (MAIL TO) [localpart@the_domain]): |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
557 |
-- varchar localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
558 |
-- varchar the_domain |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
559 |
-- Returns: recipient_transport records |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
560 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
561 |
-- Required access privileges for your postfix database user: |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
562 |
-- GRANT SELECT ON users, transport, domain_name TO postfix; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
563 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
564 |
-- For more details see postconf(5) section transport_maps and transport(5) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
565 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
566 |
CREATE OR REPLACE FUNCTION postfix_transport_map( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
567 |
IN localpart varchar, IN the_domain varchar) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
568 |
RETURNS SETOF recipient_transport |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
569 |
AS $$ |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
570 |
DECLARE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
571 |
record recipient_transport; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
572 |
recipient varchar(320) := localpart || '@' || the_domain; |
530
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
573 |
did bigint := (SELECT gid FROM domain_name WHERE domainname = the_domain); |
550
867d950ce7b7
Fix transport_maps function for non-existent domains
martin f. krafft <madduck@madduck.net>
parents:
549
diff
changeset
|
574 |
transport_id bigint; |
502
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
575 |
BEGIN |
550
867d950ce7b7
Fix transport_maps function for non-existent domains
martin f. krafft <madduck@madduck.net>
parents:
549
diff
changeset
|
576 |
IF did IS NULL THEN |
867d950ce7b7
Fix transport_maps function for non-existent domains
martin f. krafft <madduck@madduck.net>
parents:
549
diff
changeset
|
577 |
RETURN; |
867d950ce7b7
Fix transport_maps function for non-existent domains
martin f. krafft <madduck@madduck.net>
parents:
549
diff
changeset
|
578 |
END IF; |
867d950ce7b7
Fix transport_maps function for non-existent domains
martin f. krafft <madduck@madduck.net>
parents:
549
diff
changeset
|
579 |
|
867d950ce7b7
Fix transport_maps function for non-existent domains
martin f. krafft <madduck@madduck.net>
parents:
549
diff
changeset
|
580 |
SELECT tid INTO transport_id |
867d950ce7b7
Fix transport_maps function for non-existent domains
martin f. krafft <madduck@madduck.net>
parents:
549
diff
changeset
|
581 |
FROM users |
867d950ce7b7
Fix transport_maps function for non-existent domains
martin f. krafft <madduck@madduck.net>
parents:
549
diff
changeset
|
582 |
WHERE gid = did AND local_part = localpart; |
867d950ce7b7
Fix transport_maps function for non-existent domains
martin f. krafft <madduck@madduck.net>
parents:
549
diff
changeset
|
583 |
|
530
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
584 |
IF transport_id IS NULL THEN |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
585 |
SELECT tid INTO STRICT transport_id |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
586 |
FROM domain_data |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
587 |
WHERE gid = did; |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
588 |
END IF; |
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
589 |
|
502
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
590 |
FOR record IN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
591 |
SELECT recipient, transport |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
592 |
FROM transport |
530
95dd123b552e
Modify SQL update script to accept NULL fields for users
martin f. krafft <madduck@madduck.net>
parents:
528
diff
changeset
|
593 |
WHERE tid = transport_id |
502
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
594 |
LOOP |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
595 |
RETURN NEXT record; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
596 |
END LOOP; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
597 |
RETURN; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
598 |
END; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
599 |
$$ LANGUAGE plpgsql STABLE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
600 |
RETURNS NULL ON NULL INPUT |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
601 |
EXTERNAL SECURITY INVOKER; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
602 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
603 |
-- Parameters (from recipients address (MAIL TO) [localpart@the_domain]): |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
604 |
-- varchar localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
605 |
-- varchar the_domain |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
606 |
-- Returns: recipient_destination records |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
607 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
608 |
-- Required access privileges for your postfix database user: |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
609 |
-- GRANT SELECT ON alias, domain_name TO postfix; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
610 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
611 |
-- For more details see postconf(5) section virtual_alias_maps and virtual(5) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
612 |
-- --- |
518
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
613 |
CREATE OR REPLACE FUNCTION _interpolate_destination( |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
614 |
IN destination varchar, localpart varchar, IN the_domain varchar) |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
615 |
RETURNS varchar |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
616 |
AS $$ |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
617 |
DECLARE |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
618 |
result varchar(320); |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
619 |
BEGIN |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
620 |
IF position('%' in destination) = 0 THEN |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
621 |
RETURN destination; |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
622 |
END IF; |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
623 |
result := replace(destination, '%n', localpart); |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
624 |
result := replace(result, '%d', the_domain); |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
625 |
result := replace(result, '%=', localpart || '=' || the_domain); |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
626 |
RETURN result; |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
627 |
END; |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
628 |
$$ LANGUAGE plpgsql STABLE |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
629 |
RETURNS NULL ON NULL INPUT |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
630 |
EXTERNAL SECURITY INVOKER; |
5ec2068d02af
Enable interpolation of alias destinations
martin f. krafft <madduck@madduck.net>
parents:
515
diff
changeset
|
631 |
|
502
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
632 |
CREATE OR REPLACE FUNCTION postfix_virtual_alias_map( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
633 |
IN localpart varchar, IN the_domain varchar) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
634 |
RETURNS SETOF recipient_destination |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
635 |
AS $$ |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
636 |
DECLARE |
514
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
637 |
recordc recipient_destination; |
502
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
638 |
record recipient_destination; |
514
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
639 |
catchall_cursor refcursor; |
502
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
640 |
recipient varchar(320) := localpart || '@' || the_domain; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
641 |
did bigint := (SELECT gid FROM domain_name WHERE domainname=the_domain); |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
642 |
BEGIN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
643 |
FOR record IN |
549
44a808af6cf4
Revert caching of destination interpolation
martin f. krafft <madduck@madduck.net>
parents:
547
diff
changeset
|
644 |
SELECT recipient, |
44a808af6cf4
Revert caching of destination interpolation
martin f. krafft <madduck@madduck.net>
parents:
547
diff
changeset
|
645 |
_interpolate_destination(destination, localpart, the_domain) |
502
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
646 |
FROM alias |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
647 |
WHERE gid = did |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
648 |
AND address = localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
649 |
LOOP |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
650 |
RETURN NEXT record; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
651 |
END LOOP; |
514
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
652 |
|
511
0244f1344b04
Make virtual_alias_maps function search catchall when no aliases are found
martin f. krafft <madduck@madduck.net>
parents:
503
diff
changeset
|
653 |
IF NOT FOUND THEN |
514
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
654 |
-- There is no matching virtual_alias. If there are no catchall |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
655 |
-- records for this domain, we can just return NULL since Postfix |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
656 |
-- will then later consult mailboxes/relocated itself. But if |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
657 |
-- there is a catchall destination, then it would take precedence |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
658 |
-- over mailboxes/relocated, which is not what we want. Therefore, |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
659 |
-- we must first find out if the query is for an existing mailbox |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
660 |
-- or relocated entry and return the identity mapping if that is |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
661 |
-- the case |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
662 |
OPEN catchall_cursor FOR |
549
44a808af6cf4
Revert caching of destination interpolation
martin f. krafft <madduck@madduck.net>
parents:
547
diff
changeset
|
663 |
SELECT recipient, |
44a808af6cf4
Revert caching of destination interpolation
martin f. krafft <madduck@madduck.net>
parents:
547
diff
changeset
|
664 |
_interpolate_destination(destination, localpart, the_domain) |
514
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
665 |
FROM catchall |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
666 |
WHERE gid = did; |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
667 |
FETCH NEXT FROM catchall_cursor INTO recordc; |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
668 |
|
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
669 |
IF recordc IS NOT NULL THEN |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
670 |
-- Since there are catchall records for this domain |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
671 |
-- check the mailbox and relocated records and return identity |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
672 |
-- if a matching record exists. |
512
821d3ffaaaca
Modify virtual_alias_maps function to check mailboxes/relocated first
martin f. krafft <madduck@madduck.net>
parents:
511
diff
changeset
|
673 |
FOR record IN |
514
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
674 |
SELECT recipient, recipient as destination |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
675 |
FROM users |
512
821d3ffaaaca
Modify virtual_alias_maps function to check mailboxes/relocated first
martin f. krafft <madduck@madduck.net>
parents:
511
diff
changeset
|
676 |
WHERE gid = did |
514
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
677 |
AND local_part = localpart |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
678 |
UNION SELECT recipient, recipient as destination |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
679 |
FROM relocated |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
680 |
WHERE gid = did |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
681 |
AND address = localpart |
512
821d3ffaaaca
Modify virtual_alias_maps function to check mailboxes/relocated first
martin f. krafft <madduck@madduck.net>
parents:
511
diff
changeset
|
682 |
LOOP |
821d3ffaaaca
Modify virtual_alias_maps function to check mailboxes/relocated first
martin f. krafft <madduck@madduck.net>
parents:
511
diff
changeset
|
683 |
RETURN NEXT record; |
821d3ffaaaca
Modify virtual_alias_maps function to check mailboxes/relocated first
martin f. krafft <madduck@madduck.net>
parents:
511
diff
changeset
|
684 |
END LOOP; |
514
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
685 |
|
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
686 |
IF NOT FOUND THEN |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
687 |
-- There were no records found for mailboxes/relocated, |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
688 |
-- so now we can actually iterate the cursor and populate |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
689 |
-- the return set |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
690 |
LOOP |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
691 |
RETURN NEXT recordc; |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
692 |
FETCH NEXT FROM catchall_cursor INTO recordc; |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
693 |
EXIT WHEN recordc IS NULL; |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
694 |
END LOOP; |
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
695 |
END IF; |
512
821d3ffaaaca
Modify virtual_alias_maps function to check mailboxes/relocated first
martin f. krafft <madduck@madduck.net>
parents:
511
diff
changeset
|
696 |
END IF; |
514
d863a44a6353
Make PL/pgSQL function feed back identity for mailboxes/relocated when there
martin f. krafft <madduck@madduck.net>
parents:
512
diff
changeset
|
697 |
CLOSE catchall_cursor; |
511
0244f1344b04
Make virtual_alias_maps function search catchall when no aliases are found
martin f. krafft <madduck@madduck.net>
parents:
503
diff
changeset
|
698 |
END IF; |
502
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
699 |
RETURN; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
700 |
END; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
701 |
$$ LANGUAGE plpgsql STABLE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
702 |
RETURNS NULL ON NULL INPUT |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
703 |
EXTERNAL SECURITY INVOKER; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
704 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
705 |
-- Parameters (from recipients address (MAIL TO) [localpart@the_domain]): |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
706 |
-- varchar localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
707 |
-- varchar the_domain |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
708 |
-- Returns: address_maildir records |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
709 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
710 |
-- Required access privileges for your postfix database user: |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
711 |
-- GRANT SELECT ON domain_data,domain_name,maillocation,users TO postfix; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
712 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
713 |
-- For more details see postconf(5) section virtual_mailbox_maps |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
714 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
715 |
CREATE OR REPLACE FUNCTION postfix_virtual_mailbox_map( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
716 |
IN localpart varchar, IN the_domain varchar) RETURNS SETOF address_maildir |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
717 |
AS $$ |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
718 |
DECLARE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
719 |
rec address_maildir; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
720 |
did bigint := (SELECT gid FROM domain_name WHERE domainname=the_domain); |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
721 |
address varchar(320) := localpart || '@' || the_domain; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
722 |
BEGIN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
723 |
FOR rec IN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
724 |
SELECT address, domaindir||'/'||users.uid||'/'||directory||'/' |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
725 |
FROM domain_data, users, maillocation |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
726 |
WHERE domain_data.gid = did |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
727 |
AND users.gid = did |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
728 |
AND users.local_part = localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
729 |
AND maillocation.mid = users.mid |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
730 |
LOOP |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
731 |
RETURN NEXT rec; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
732 |
END LOOP; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
733 |
RETURN; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
734 |
END; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
735 |
$$ LANGUAGE plpgsql STABLE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
736 |
RETURNS NULL ON NULL INPUT |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
737 |
EXTERNAL SECURITY INVOKER; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
738 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
739 |
-- Parameters (from recipients address (MAIL TO) [localpart@the_domain]): |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
740 |
-- varchar localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
741 |
-- varchar the_domain |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
742 |
-- Returns: recipient_uid records |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
743 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
744 |
-- Required access privileges for your postfix database user: |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
745 |
-- GRANT SELECT ON users, domain_name TO postfix; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
746 |
-- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
747 |
-- For more details see postconf(5) section virtual_uid_maps |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
748 |
-- --- |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
749 |
CREATE OR REPLACE FUNCTION postfix_virtual_uid_map( |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
750 |
IN localpart varchar, IN the_domain varchar) RETURNS SETOF recipient_uid |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
751 |
AS $$ |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
752 |
DECLARE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
753 |
record recipient_uid; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
754 |
recipient varchar(320) := localpart || '@' || the_domain; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
755 |
BEGIN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
756 |
FOR record IN |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
757 |
SELECT recipient, uid |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
758 |
FROM users |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
759 |
WHERE gid = (SELECT gid |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
760 |
FROM domain_name |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
761 |
WHERE domainname = the_domain) |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
762 |
AND local_part = localpart |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
763 |
LOOP |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
764 |
RETURN NEXT record; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
765 |
END LOOP; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
766 |
RETURN; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
767 |
END; |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
768 |
$$ LANGUAGE plpgsql STABLE |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
769 |
RETURNS NULL ON NULL INPUT |
e1b32377032f
pgsql: Merged types and functions into the create_tables… files.
Pascal Volk <user@localhost.localdomain.org>
parents:
500
diff
changeset
|
770 |
EXTERNAL SECURITY INVOKER; |