0d98d92642
test / test (push) Waiting to run
Port 25 accepts only configured domains and listed recipients, then forwards to an upstream; the outbound path is unchanged when the flag is off. Co-authored-by: Cursor <cursoragent@cursor.com>
27 lines
1.2 KiB
SQL
27 lines
1.2 KiB
SQL
-- Optional inbound relay (backup-MX / forwarder). Separate from sending
|
|
-- domains: these rows exist even when INBOUND_RELAY_ENABLE is false, but the
|
|
-- listener, Postfix maps and panel UI are generated only when that flag is on.
|
|
|
|
CREATE TABLE inbound_domains (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
name TEXT NOT NULL UNIQUE,
|
|
recipient_mode TEXT NOT NULL CHECK (recipient_mode IN ('list', 'any')),
|
|
created_at TEXT NOT NULL
|
|
);
|
|
|
|
-- One upstream per inbound domain (host:port + TLS policy for the hand-off).
|
|
CREATE TABLE inbound_transports (
|
|
inbound_domain_id INTEGER PRIMARY KEY REFERENCES inbound_domains(id) ON DELETE CASCADE,
|
|
host TEXT NOT NULL,
|
|
port INTEGER NOT NULL CHECK (port >= 1 AND port <= 65535),
|
|
tls_mode TEXT NOT NULL CHECK (tls_mode IN ('may', 'encrypt', 'none'))
|
|
);
|
|
|
|
-- Explicit recipients for recipient_mode = 'list'. Ignored when mode is 'any'.
|
|
CREATE TABLE inbound_recipients (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
inbound_domain_id INTEGER NOT NULL REFERENCES inbound_domains(id) ON DELETE CASCADE,
|
|
address TEXT NOT NULL,
|
|
UNIQUE (inbound_domain_id, address)
|
|
);
|