diff --git a/roles/postfix/defaults/main.yml b/roles/postfix/defaults/main.yml index 056821c..4468495 100644 --- a/roles/postfix/defaults/main.yml +++ b/roles/postfix/defaults/main.yml @@ -31,4 +31,10 @@ # List of IP addresses which will have access to port 25 postfix_src_ip: [] +# A list of domain to relay, with an optional transport +# postfix_relay_domains: +# - domain: my.domain.org +# transport: smtp:[mx.example.org]:25 +# - domain: another.domain.fr +postfix_relay_domains: [] ... diff --git a/roles/postfix/handlers/main.yml b/roles/postfix/handlers/main.yml index 5c65f90..d39256c 100644 --- a/roles/postfix/handlers/main.yml +++ b/roles/postfix/handlers/main.yml @@ -1,5 +1,21 @@ --- + - name: restart postfix service: name=postfix state=restarted +- name: reload postfix + service: name=postfix state=reloaded + +- name: rehash relay_auth + command: postmap /etc/postfix/relay_auth + notify: reload postfix + +- name: rehash relay_domains + command: postmap /etc/postfix/relay_domains + notify: reload postfix + +- name: rehash transport_maps + command: postmap /etc/postfix/transport_maps + notify: reload postfix + ... diff --git a/roles/postfix/tasks/main.yml b/roles/postfix/tasks/main.yml index 4ff71ff..09b509f 100644 --- a/roles/postfix/tasks/main.yml +++ b/roles/postfix/tasks/main.yml @@ -26,19 +26,19 @@ notify: restart postfix tags: postfix -- name: Deploy Relay authentication map +- name: Deploy relay_auth template: src=relay_auth.j2 dest=/etc/postfix/relay_auth mode=600 owner=root group=root - register: relay_auth_file + notify: rehash relay_auth tags: postfix -- name: Check if relay_auth has been hashed - stat: path=/etc/postfix/relay_auth.db - register: relay_auth_hashed +- name: Deploy relay_domains + template: src=relay_domains.j2 dest=/etc/postfix/relay_domains mode=644 owner=root group=root + notify: rehash relay_domains tags: postfix -- name: Rehash postfix relay auth - command: postmap /etc/postfix/relay_auth - when: relay_auth_file.changed or not relay_auth_hashed.stat.exists +- name: Deploy transport_maps + template: src=transport_maps.j2 dest=/etc/postfix/transport_maps mode=644 owner=root group=root + notify: rehash transport_maps tags: postfix - name: Handle postfix port diff --git a/roles/postfix/templates/main.cf.j2 b/roles/postfix/templates/main.cf.j2 index 5ed1fa3..9667270 100644 --- a/roles/postfix/templates/main.cf.j2 +++ b/roles/postfix/templates/main.cf.j2 @@ -50,4 +50,7 @@ owner_request_special = no transport_maps = hash:{{ mailman_root_dir | default('/opt/mailman') }}/data/data/postfix_lmtp local_recipient_maps = hash:{{ mailman_root_dir | default('/opt/mailman') }}/data/data/postfix_lmtp relay_domains = hash:{{ mailman_root_dir | default('/opt/mailman') }}/data/data/postfix_domains +{% else %} +relay_domains = hash:/etc/postfix/relay_domains +transport_maps = hash:/etc/postfix/transport_maps {% endif %} diff --git a/roles/postfix/templates/relay_domains.j2 b/roles/postfix/templates/relay_domains.j2 new file mode 100644 index 0000000..b133fd1 --- /dev/null +++ b/roles/postfix/templates/relay_domains.j2 @@ -0,0 +1,3 @@ +{% for domain in postfix_relay_domains %} +{{ domain.domain }} 1 +{% endfor %} diff --git a/roles/postfix/templates/transport_maps.j2 b/roles/postfix/templates/transport_maps.j2 new file mode 100644 index 0000000..db7ce01 --- /dev/null +++ b/roles/postfix/templates/transport_maps.j2 @@ -0,0 +1,5 @@ +{% for domain in postfix_relay_domains %} +{% if domain.transport is defined %} +{{ domain.domain }} {{ domain.transport }} +{% endif %} +{% endfor %}