From 6959ac1eba2fbf18a72ff6d030679803aaa2583e Mon Sep 17 00:00:00 2001 From: Adrian Date: Sat, 2 Jul 2022 15:34:01 +0200 Subject: [PATCH 1/2] Rename postfix db files --- mail/postfix/{access.cf => db-access.cf} | 0 mail/postfix/{alias.cf => db-alias.cf} | 0 mail/postfix/{domains.cf => db-domains.cf} | 0 mail/postfix/{login.cf => db-login.cf} | 0 mail/postfix/{relay.cf => db-relay.cf} | 0 mail/postfix/{transport.cf => db-transport.cf} | 0 mail/postfix/{virtual.cf => db-virtual.cf} | 0 mail/postfix/main.cf | 14 +++++++------- 8 files changed, 7 insertions(+), 7 deletions(-) rename mail/postfix/{access.cf => db-access.cf} (100%) rename mail/postfix/{alias.cf => db-alias.cf} (100%) rename mail/postfix/{domains.cf => db-domains.cf} (100%) rename mail/postfix/{login.cf => db-login.cf} (100%) rename mail/postfix/{relay.cf => db-relay.cf} (100%) rename mail/postfix/{transport.cf => db-transport.cf} (100%) rename mail/postfix/{virtual.cf => db-virtual.cf} (100%) diff --git a/mail/postfix/access.cf b/mail/postfix/db-access.cf similarity index 100% rename from mail/postfix/access.cf rename to mail/postfix/db-access.cf diff --git a/mail/postfix/alias.cf b/mail/postfix/db-alias.cf similarity index 100% rename from mail/postfix/alias.cf rename to mail/postfix/db-alias.cf diff --git a/mail/postfix/domains.cf b/mail/postfix/db-domains.cf similarity index 100% rename from mail/postfix/domains.cf rename to mail/postfix/db-domains.cf diff --git a/mail/postfix/login.cf b/mail/postfix/db-login.cf similarity index 100% rename from mail/postfix/login.cf rename to mail/postfix/db-login.cf diff --git a/mail/postfix/relay.cf b/mail/postfix/db-relay.cf similarity index 100% rename from mail/postfix/relay.cf rename to mail/postfix/db-relay.cf diff --git a/mail/postfix/transport.cf b/mail/postfix/db-transport.cf similarity index 100% rename from mail/postfix/transport.cf rename to mail/postfix/db-transport.cf diff --git a/mail/postfix/virtual.cf b/mail/postfix/db-virtual.cf similarity index 100% rename from mail/postfix/virtual.cf rename to mail/postfix/db-virtual.cf diff --git a/mail/postfix/main.cf b/mail/postfix/main.cf index 2ec11c3..cdca591 100644 --- a/mail/postfix/main.cf +++ b/mail/postfix/main.cf @@ -25,27 +25,27 @@ tls_server_sni_maps = hash:/etc/postfix/sni.cf smtpd_tls_received_header = yes -relay_domains = sqlite:/etc/postfix/relay.cf -transport_maps = sqlite:/etc/postfix/transport.cf +relay_domains = sqlite:/etc/postfix/db-relay.cf +transport_maps = sqlite:/etc/postfix/db-transport.cf virtual_mailbox_base = /data/mail/mail virtual_uid_maps = static:2000 virtual_gid_maps = static:2000 -virtual_mailbox_domains = sqlite:/etc/postfix/domains.cf -virtual_mailbox_maps = sqlite:/etc/postfix/virtual.cf -virtual_alias_maps = sqlite:/etc/postfix/alias.cf +virtual_mailbox_domains = sqlite:/etc/postfix/db-domains.cf +virtual_mailbox_maps = sqlite:/etc/postfix/db-virtual.cf +virtual_alias_maps = sqlite:/etc/postfix/db-alias.cf virtual_mailbox_limit = 0 smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth -smtpd_sender_login_maps = sqlite:/etc/postfix/login.cf, $virtual_alias_maps +smtpd_sender_login_maps = sqlite:/etc/postfix/db-login.cf, $virtual_alias_maps smtpd_delay_reject = no smtpd_hard_error_limit = 1 smtpd_client_restrictions = reject_unknown_reverse_client_hostname smtpd_sender_restrictions = reject_sender_login_mismatch -smtpd_recipient_restrictions = check_recipient_access sqlite:/etc/postfix/access.cf +smtpd_recipient_restrictions = check_recipient_access sqlite:/etc/postfix/db-access.cf smtpd_milters = unix:private/opendkim non_smtpd_milters = $smtpd_milters From aca84ffe4ed9d9d55cf539db6fa6a44755114b9c Mon Sep 17 00:00:00 2001 From: Adrian Date: Sat, 2 Jul 2022 15:56:06 +0200 Subject: [PATCH 2/2] Add postfix setting table --- mail/postfix/db-access.cf | 2 +- mail/postfix/db-alias.cf | 2 +- mail/postfix/db-domains.cf | 2 +- mail/postfix/db-login.cf | 2 +- mail/postfix/db-relay.cf | 2 +- mail/postfix/db-transport.cf | 2 +- mail/postfix/db-virtual.cf | 2 +- mail/postfix/main.cf | 2 +- mail/schema.sql | 4 ++-- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/mail/postfix/db-access.cf b/mail/postfix/db-access.cf index 025ab71..ff5491b 100644 --- a/mail/postfix/db-access.cf +++ b/mail/postfix/db-access.cf @@ -1,2 +1,2 @@ dbpath = /data/mail/config/vmail.db -query = SELECT action FROM access WHERE address = '%s' +query = SELECT v FROM setting WHERE active = 1 AND k = '%s' AND name = 'recipient_access' diff --git a/mail/postfix/db-alias.cf b/mail/postfix/db-alias.cf index 856c3cc..00acaf4 100644 --- a/mail/postfix/db-alias.cf +++ b/mail/postfix/db-alias.cf @@ -1,2 +1,2 @@ dbpath = /data/mail/config/vmail.db -query = SELECT goto FROM alias WHERE address = '%s' AND active = 1 +query = SELECT v FROM setting WHERE active = 1 AND k = '%s' AND name = 'alias' diff --git a/mail/postfix/db-domains.cf b/mail/postfix/db-domains.cf index 619b14a..6c1d1e4 100644 --- a/mail/postfix/db-domains.cf +++ b/mail/postfix/db-domains.cf @@ -1,2 +1,2 @@ dbpath = /data/mail/config/vmail.db -query = SELECT domain FROM domain WHERE domain = '%s' AND active = 1 AND NOT (transport LIKE 'smtp%%' OR transport LIKE 'relay%%') +query = SELECT domain FROM domain WHERE active = 1 AND domain = '%s' AND NOT (transport LIKE 'smtp%%' OR transport LIKE 'relay%%') diff --git a/mail/postfix/db-login.cf b/mail/postfix/db-login.cf index 30acf06..f0b7654 100644 --- a/mail/postfix/db-login.cf +++ b/mail/postfix/db-login.cf @@ -1,2 +1,2 @@ dbpath = /data/mail/config/vmail.db -query = SELECT username FROM mailbox WHERE username = '%s' AND active = 1 +query = SELECT username FROM mailbox WHERE active = 1 AND username = '%s' diff --git a/mail/postfix/db-relay.cf b/mail/postfix/db-relay.cf index 7fe86eb..48272f9 100644 --- a/mail/postfix/db-relay.cf +++ b/mail/postfix/db-relay.cf @@ -1,2 +1,2 @@ dbpath = /data/mail/config/vmail.db -query = SELECT domain FROM domain WHERE domain = '%s' AND active = 1 AND (transport LIKE 'smtp%%' OR transport LIKE 'relay%%') +query = SELECT domain FROM domain WHERE active = 1 AND domain = '%s' AND (transport LIKE 'smtp%%' OR transport LIKE 'relay%%') diff --git a/mail/postfix/db-transport.cf b/mail/postfix/db-transport.cf index 0e8deac..9fa28bc 100644 --- a/mail/postfix/db-transport.cf +++ b/mail/postfix/db-transport.cf @@ -1,2 +1,2 @@ dbpath = /data/mail/config/vmail.db -query = SELECT transport FROM domain WHERE domain = '%s' AND active = 1 +query = SELECT transport FROM domain WHERE active = 1 AND domain = '%s' diff --git a/mail/postfix/db-virtual.cf b/mail/postfix/db-virtual.cf index dd3705d..742da6d 100644 --- a/mail/postfix/db-virtual.cf +++ b/mail/postfix/db-virtual.cf @@ -1,2 +1,2 @@ dbpath = /data/mail/config/vmail.db -query = SELECT maildir FROM mailbox WHERE username = '%s' AND active = 1 +query = SELECT maildir FROM mailbox WHERE active = 1 AND username = '%s' diff --git a/mail/postfix/main.cf b/mail/postfix/main.cf index cdca591..8e5106c 100644 --- a/mail/postfix/main.cf +++ b/mail/postfix/main.cf @@ -6,6 +6,7 @@ disable_vrfy_command = yes mailbox_size_limit = 0 message_size_limit = 0 mynetworks_style = subnet +alias_maps = hash:/etc/aliases # Custom @@ -41,7 +42,6 @@ smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sender_login_maps = sqlite:/etc/postfix/db-login.cf, $virtual_alias_maps -smtpd_delay_reject = no smtpd_hard_error_limit = 1 smtpd_client_restrictions = reject_unknown_reverse_client_hostname smtpd_sender_restrictions = reject_sender_login_mismatch diff --git a/mail/schema.sql b/mail/schema.sql index 007c022..b2f238e 100644 --- a/mail/schema.sql +++ b/mail/schema.sql @@ -1,7 +1,7 @@ -create table alias (address varchar(255) not null primary key, goto varchar(255) not null, active int not null default 1); create table domain (domain varchar(255) not null primary key, transport varchar(255) not null default 'virtual', active int not null default 1); create table mailbox (username varchar(255) not null primary key, password varchar(255) not null default '', name varchar(255) not null default '', maildir varchar(255) not null, active int not null default 1); +create table setting (name varchar(255) not null, k varchar(255) not null, v varchar(255) not null, active int not null default 1, primary key (name, k)); + create table dkim (match varchar(255) not null primary key, key varchar(255) not null); create table dkim_key (key varchar(255) not null primary key, domain varchar(255) not null, selector varchar(255) not null, private_key varchar(65535) not null); -create table access (address varchar(255) not null primary key, action varchar(255) not null);