From 9d40567084d1a4a708c7acb33247fa42fe2a6497 Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sun, 4 Oct 2015 14:04:12 +0200 Subject: [PATCH] Added role ispmail-postfix. Sets up database mappings. --- group_vars/all | 2 ++ ispmail.yml | 1 + roles/ispmail-postfix/tasks/main.yml | 22 ++++++++++++++++++++++ .../templates/mysql-email2email.cf.j2 | 5 +++++ .../templates/mysql-virtual-alias-maps.cf.j2 | 5 +++++ .../templates/mysql-virtual-mailbox-domains.cf.j2 | 5 +++++ .../templates/mysql-virtual-mailbox-maps.cf.j2 | 5 +++++ 7 files changed, 45 insertions(+) create mode 100644 group_vars/all create mode 100644 roles/ispmail-postfix/tasks/main.yml create mode 100644 roles/ispmail-postfix/templates/mysql-email2email.cf.j2 create mode 100644 roles/ispmail-postfix/templates/mysql-virtual-alias-maps.cf.j2 create mode 100644 roles/ispmail-postfix/templates/mysql-virtual-mailbox-domains.cf.j2 create mode 100644 roles/ispmail-postfix/templates/mysql-virtual-mailbox-maps.cf.j2 diff --git a/group_vars/all b/group_vars/all new file mode 100644 index 0000000..5426ba4 --- /dev/null +++ b/group_vars/all @@ -0,0 +1,2 @@ +ispmail_mysql_mailuser_password: fLxsWdf5ABLqwhZr + diff --git a/ispmail.yml b/ispmail.yml index 855dc9c..1ed295e 100644 --- a/ispmail.yml +++ b/ispmail.yml @@ -6,4 +6,5 @@ - dumpvars - ispmail-certificate - ispmail-database + - ispmail-postfix diff --git a/roles/ispmail-postfix/tasks/main.yml b/roles/ispmail-postfix/tasks/main.yml new file mode 100644 index 0000000..7e533be --- /dev/null +++ b/roles/ispmail-postfix/tasks/main.yml @@ -0,0 +1,22 @@ +--- +- name: define Postfix virtual mailbox domain mapping + template: src=mysql-virtual-mailbox-domains.cf.j2 dest=/etc/postfix/mysql-virtual-mailbox-domains.cf +- name: tell Postfix to use the virtual mailbox domain mapping + shell: postconf virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf + +- name: define Postfix virtual mailbox mapping + template: src=mysql-virtual-mailbox-maps.cf.j2 dest=/etc/postfix/mysql-virtual-mailbox-maps.cf +- name: tell Postfix to use the virtual mailbox mapping + shell: postconf virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf + +- name: define Postfix virtual alias mapping + template: src=mysql-virtual-alias-maps.cf.j2 dest=/etc/postfix/mysql-virtual-alias-maps.cf +- name: tell Postfix to use the virtual alias mapping + shell: postconf virtual_alias_maps=mysql:/etc/postfix/mysql-virtual-alias-maps.cf + +- name: define Postfix email-to-email mapping (required for catchall domains) + template: src=mysql-email2email.cf.j2 dest=/etc/postfix/mysql-email2email.cf +- name: tell Postfix to use the email-to-email mapping + shell: postconf virtual_alias_maps=mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-email2email.cf + + diff --git a/roles/ispmail-postfix/templates/mysql-email2email.cf.j2 b/roles/ispmail-postfix/templates/mysql-email2email.cf.j2 new file mode 100644 index 0000000..0d6ea98 --- /dev/null +++ b/roles/ispmail-postfix/templates/mysql-email2email.cf.j2 @@ -0,0 +1,5 @@ +user = mailuser +password = {{ispmail_mysql_mailuser_password}} +hosts = 127.0.0.1 +dbname = mailserver +query = SELECT email FROM virtual_users WHERE email='%s' diff --git a/roles/ispmail-postfix/templates/mysql-virtual-alias-maps.cf.j2 b/roles/ispmail-postfix/templates/mysql-virtual-alias-maps.cf.j2 new file mode 100644 index 0000000..ba49b2f --- /dev/null +++ b/roles/ispmail-postfix/templates/mysql-virtual-alias-maps.cf.j2 @@ -0,0 +1,5 @@ +user = mailuser +password = {{ispmail_mysql_mailuser_password}} +hosts = 127.0.0.1 +dbname = mailserver +query = SELECT destination FROM virtual_aliases WHERE source='%s' diff --git a/roles/ispmail-postfix/templates/mysql-virtual-mailbox-domains.cf.j2 b/roles/ispmail-postfix/templates/mysql-virtual-mailbox-domains.cf.j2 new file mode 100644 index 0000000..443f77c --- /dev/null +++ b/roles/ispmail-postfix/templates/mysql-virtual-mailbox-domains.cf.j2 @@ -0,0 +1,5 @@ +user = mailuser +password = {{ispmail_mysql_mailuser_password}} +hosts = 127.0.0.1 +dbname = mailserver +query = SELECT 1 FROM virtual_domains WHERE name='%s' diff --git a/roles/ispmail-postfix/templates/mysql-virtual-mailbox-maps.cf.j2 b/roles/ispmail-postfix/templates/mysql-virtual-mailbox-maps.cf.j2 new file mode 100644 index 0000000..0207bbb --- /dev/null +++ b/roles/ispmail-postfix/templates/mysql-virtual-mailbox-maps.cf.j2 @@ -0,0 +1,5 @@ +user = mailuser +password = {{ispmail_mysql_mailuser_password}} +hosts = 127.0.0.1 +dbname = mailserver +query = SELECT 1 FROM virtual_users WHERE email='%s'