diff options
Diffstat (limited to 'roles/mail/postfix/relay')
-rw-r--r-- | roles/mail/postfix/relay/defaults/main.yml | 14 | ||||
-rw-r--r-- | roles/mail/postfix/relay/filter_plugins/postfix.py | 25 | ||||
-rw-r--r-- | roles/mail/postfix/relay/handlers/main.yml | 5 | ||||
-rw-r--r-- | roles/mail/postfix/relay/tasks/main.yml | 64 |
4 files changed, 108 insertions, 0 deletions
diff --git a/roles/mail/postfix/relay/defaults/main.yml b/roles/mail/postfix/relay/defaults/main.yml new file mode 100644 index 00000000..806e019f --- /dev/null +++ b/roles/mail/postfix/relay/defaults/main.yml @@ -0,0 +1,14 @@ +--- +# postfix_relay_local_header_rewrite_clients: +# - "permit_inet_interfaces" +# - "permit_mynetworks" +# - "permit_sasl_authenticated" + +# postfix_relay_sender_canonical_maps: +# rewrite_example_subdomains: +# type: regexp +# content: | +# /^(.+)@(.+)\.example\.com$/i ${1}%${2}@example.com + +postfix_relay_dkim_signer: "none" +# postfix_relay_dkim_signer: "opendkim" diff --git a/roles/mail/postfix/relay/filter_plugins/postfix.py b/roles/mail/postfix/relay/filter_plugins/postfix.py new file mode 100644 index 00000000..673cba0b --- /dev/null +++ b/roles/mail/postfix/relay/filter_plugins/postfix.py @@ -0,0 +1,25 @@ +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +from ansible import errors + + +def postfix_maps(maps, prefix=''): + try: + tmp = [] + for name, map in maps.items(): + tmp.append('%s:%s%s' % (map['type'], prefix, name)) + return ', '.join(tmp) + except Exception as e: + raise errors.AnsibleFilterError("postfix_maps(): %s" % str(e)) + + +class FilterModule(object): + + ''' postfix helpers ''' + filter_map = { + 'postfix_maps': postfix_maps, + } + + def filters(self): + return self.filter_map diff --git a/roles/mail/postfix/relay/handlers/main.yml b/roles/mail/postfix/relay/handlers/main.yml new file mode 100644 index 00000000..bea754c9 --- /dev/null +++ b/roles/mail/postfix/relay/handlers/main.yml @@ -0,0 +1,5 @@ +--- +- name: restart postfix + service: + name: postfix + state: restarted diff --git a/roles/mail/postfix/relay/tasks/main.yml b/roles/mail/postfix/relay/tasks/main.yml new file mode 100644 index 00000000..b622bf7f --- /dev/null +++ b/roles/mail/postfix/relay/tasks/main.yml @@ -0,0 +1,64 @@ +--- +- name: install canonical maps + when: postfix_relay_sender_canonical_maps is defined + block: + - name: create subdirectory for canonical maps + file: + path: /etc/postfix/canonical + state: directory + + - name: install canoncial maps + loop: "{{ postfix_relay_sender_canonical_maps | dict2items }}" + loop_control: + label: "{{ item.key }} ({{ item.value.type }})" + copy: + content: "{{ item.value.content }}" + dest: "/etc/postfix/canonical/{{ item.key }}" + register: sender_canonical_maps_status + + - name: generate canoncial maps + loop: "{{ sender_canonical_maps_status.results | select('changed') }}" + loop_control: + label: "{{ item.item.key }} ({{ item.item.value.type }})" + command: postmap "/etc/postfix/canonical/{{ item.item.key }}" + + - name: configure sender canonical maps + lineinfile: + regexp: "^#?\\s*sender_canonical_maps\\s*=" + line: "sender_canonical_maps = {{ postfix_relay_sender_canonical_maps | postfix_maps('/etc/postfix/canonical/') }}" + dest: /etc/postfix/main.cf + notify: restart postfix + +- name: configure local_header_rewrite_clients + when: postfix_relay_local_header_rewrite_clients is defined + lineinfile: + regexp: "^#?\\s*local_header_rewrite_clients\\s*=" + line: "local_header_rewrite_clients = {{ postfix_relay_local_header_rewrite_clients | join(', ') }}" + dest: /etc/postfix/main.cf + notify: restart postfix + +- name: configure dkim signing using opendkim + when: postfix_relay_dkim_signer == "opendkim" + block: + - name: add postfix user to opendkim group + user: + name: postfix + groups: opendkim + append: yes + notify: restart postfix + + - name: configure postfix milter config for opendkim + vars: + postfix_options: + milter_protocol: "6" + milter_default_action: "accept" + smtpd_milters: "unix:opendkim/opendkim.sock" + non_smtpd_milters: "unix:opendkim/opendkim.sock" + loop: "{{ postfix_options | dict2items }}" + loop_control: + label: "{{ item.key }} = {{ item.value }}" + lineinfile: + regexp: "^#?\\s*{{ item.key }}\\s*=" + line: "{{ item.key }} = {{ item.value }}" + dest: /etc/postfix/main.cf + notify: restart postfix |