From f42dda5961457d19d5d87dd68ef1a771bc400c71 Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Sat, 7 Nov 2020 22:31:29 +0100 Subject: [PATCH] bundles/postfixadmin: introduce --- bundles/postfixadmin/files/config.local.php | 32 ++++++++++ bundles/postfixadmin/files/relay_domains.cf | 5 ++ .../postfixadmin/files/virtual_alias_maps.cf | 5 ++ .../files/virtual_domains_maps.cf | 5 ++ .../files/virtual_mailbox_maps.cf | 5 ++ bundles/postfixadmin/items.py | 62 +++++++++++++++++++ bundles/postfixadmin/metadata.py | 22 +++++++ 7 files changed, 136 insertions(+) create mode 100644 bundles/postfixadmin/files/config.local.php create mode 100644 bundles/postfixadmin/files/relay_domains.cf create mode 100644 bundles/postfixadmin/files/virtual_alias_maps.cf create mode 100644 bundles/postfixadmin/files/virtual_domains_maps.cf create mode 100644 bundles/postfixadmin/files/virtual_mailbox_maps.cf create mode 100644 bundles/postfixadmin/items.py create mode 100644 bundles/postfixadmin/metadata.py diff --git a/bundles/postfixadmin/files/config.local.php b/bundles/postfixadmin/files/config.local.php new file mode 100644 index 0000000..24d4a88 --- /dev/null +++ b/bundles/postfixadmin/files/config.local.php @@ -0,0 +1,32 @@ + '${admin_email}', + 'hostmaster' => '${admin_email}', + 'postmaster' => '${admin_email}', + ); + + $CONF['domain_quota'] = 'NO'; + $CONF['aliases'] = '0'; + $CONF['mailboxes'] = '0'; + $CONF['maxquota'] = '0'; + $CONF['domain_quota_default'] = '0'; + $CONF['special_alias_control'] = 'YES'; + + + $CONF['fetchmail'] = 'NO'; + $CONF['show_footer_text'] = 'NO'; diff --git a/bundles/postfixadmin/files/relay_domains.cf b/bundles/postfixadmin/files/relay_domains.cf new file mode 100644 index 0000000..2baa67d --- /dev/null +++ b/bundles/postfixadmin/files/relay_domains.cf @@ -0,0 +1,5 @@ +user = postfixadmin +password = ${node.metadata['postgresql']['users']['postfixadmin']['password']} +hosts = localhost +dbname = postfixadmin +query = SELECT domain FROM domain WHERE domain='%s' and backupmx = true diff --git a/bundles/postfixadmin/files/virtual_alias_maps.cf b/bundles/postfixadmin/files/virtual_alias_maps.cf new file mode 100644 index 0000000..587d5c2 --- /dev/null +++ b/bundles/postfixadmin/files/virtual_alias_maps.cf @@ -0,0 +1,5 @@ +user = postfixadmin +password = ${node.metadata['postgresql']['users']['postfixadmin']['password']} +hosts = localhost +dbname = postfixadmin +query = SELECT goto FROM alias WHERE address='%s' AND active = true diff --git a/bundles/postfixadmin/files/virtual_domains_maps.cf b/bundles/postfixadmin/files/virtual_domains_maps.cf new file mode 100644 index 0000000..46d6f6b --- /dev/null +++ b/bundles/postfixadmin/files/virtual_domains_maps.cf @@ -0,0 +1,5 @@ +user = postfixadmin +password = ${node.metadata['postgresql']['users']['postfixadmin']['password']} +hosts = localhost +dbname = postfixadmin +query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = false AND active = true diff --git a/bundles/postfixadmin/files/virtual_mailbox_maps.cf b/bundles/postfixadmin/files/virtual_mailbox_maps.cf new file mode 100644 index 0000000..3070b74 --- /dev/null +++ b/bundles/postfixadmin/files/virtual_mailbox_maps.cf @@ -0,0 +1,5 @@ +user = postfixadmin +password = ${node.metadata['postgresql']['users']['postfixadmin']['password']} +hosts = localhost +dbname = postfixadmin +query = SELECT maildir FROM mailbox WHERE username='%s' AND active = true diff --git a/bundles/postfixadmin/items.py b/bundles/postfixadmin/items.py new file mode 100644 index 0000000..f475f8a --- /dev/null +++ b/bundles/postfixadmin/items.py @@ -0,0 +1,62 @@ +assert node.has_bundle('php') +assert node.has_bundle('postfix') + +directories = { + '/opt/postfixadmin': {}, + '/opt/postfixadmin/templates_c': { + 'owner': 'www-data', + 'group': 'www-data', + 'needs': { + 'git_deploy:/opt/postfixadmin', + }, + }, + '/var/mail/vmail': { + 'owner': 'nobody', + 'group': 'nogroup', + }, +} + +git_deploy = { + '/opt/postfixadmin': { + 'repo': 'https://github.com/postfixadmin/postfixadmin.git', + 'rev': 'master', + }, +} + +files = { + '/opt/postfixadmin/config.local.php': { + 'content_type': 'mako', + 'context': { + 'setup_password': node.metadata['postfixadmin']['setup_password'], + 'admin_email': node.metadata['postfixadmin']['admin_email'], + 'database_password': node.metadata['postgresql']['users']['postfixadmin']['password'], + }, + 'needs': { + 'git_deploy:/opt/postfixadmin', + }, + }, + '/etc/postfix/pgsql/relay_domains.cf': { + 'content_type': 'mako', + 'triggers': { + 'svc_systemd:postfix:restart', + }, + }, + '/etc/postfix/pgsql/virtual_alias_maps.cf': { + 'content_type': 'mako', + 'triggers': { + 'svc_systemd:postfix:restart', + }, + }, + '/etc/postfix/pgsql/virtual_domains_maps.cf': { + 'content_type': 'mako', + 'triggers': { + 'svc_systemd:postfix:restart', + }, + }, + '/etc/postfix/pgsql/virtual_mailbox_maps.cf': { + 'content_type': 'mako', + 'triggers': { + 'svc_systemd:postfix:restart', + }, + }, +} diff --git a/bundles/postfixadmin/metadata.py b/bundles/postfixadmin/metadata.py new file mode 100644 index 0000000..6270a44 --- /dev/null +++ b/bundles/postfixadmin/metadata.py @@ -0,0 +1,22 @@ +defaults = { + 'apt': { + 'packages': { + 'postfix-pgsql', + }, + }, + 'postfixadmin': { + 'admin_email': 'hostmaster@kunbox.net', + }, + 'postgresql': { + 'databases': { + 'postfixadmin': { + 'owner': 'postfixadmin', + }, + }, + 'users': { + 'postfixadmin': { + 'password': repo.vault.password_for(node.name + ' postgresql postfixadmin'), + }, + }, + }, +}