diff --git a/postfix/defaults/main.yml b/postfix/defaults/main.yml index 4c309d75be761463dfc5b30c24a9e3fecd6f74ab..75039eaf70ffa628435b735033f40898b49f0ff9 100644 --- a/postfix/defaults/main.yml +++ b/postfix/defaults/main.yml @@ -33,3 +33,11 @@ postfix_aliases_rt: [] # - queue: IT # url: https://rt.example.com # address: it + +postfix_relay_host: "" +postfix_transport_maps: [] +# - domain: foo.example.com +# server: mail.bar.example.com +# port: 2025 +# protocol: smtp +# use_mx: true diff --git a/postfix/handlers/main.yml b/postfix/handlers/main.yml index 5c07705da52914e739b688edfe443efd307f45b9..5421edf3c84b367b23a0a1262ee7765fe058a7bb 100644 --- a/postfix/handlers/main.yml +++ b/postfix/handlers/main.yml @@ -11,3 +11,6 @@ - name: postmap virtual command: postmap cdb:/etc/postfix/virtual + +- name: postmap transport + command: postmap cdb:/etc/postfix/transport diff --git a/postfix/tasks/main.yml b/postfix/tasks/main.yml index 033b95734a76de117b896065c4bf058dc0e6b74f..e9a0386c171c27433e068fda509371258fcd1d43 100644 --- a/postfix/tasks/main.yml +++ b/postfix/tasks/main.yml @@ -116,3 +116,14 @@ tags: - postfix - mail + +- name: ensure transport_maps are configured + template: + src: transport.j2 + dest: /etc/postfix/transport + notify: + - postmap transport + when: postfix_transport_maps|bool + tags: + - postfix + - mail diff --git a/postfix/templates/main.cf.j2 b/postfix/templates/main.cf.j2 index f78d4c7cb573f5e199432952cf3833655e561105..1ff0c4e86c46a08492c3712441e03637821fe9b5 100644 --- a/postfix/templates/main.cf.j2 +++ b/postfix/templates/main.cf.j2 @@ -6,7 +6,10 @@ myhostname = {{ ansible_fqdn }} myorigin = /etc/mailname mydestination = $myhostname localhost {{ postfix_domains | join(" ") }} mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 -relayhost = +relayhost = {{ postfix_relay_host }} +{% if postfix_transport_maps|bool %} +transport_maps = cdb:/etc/postfix/transport +{% endif %} {% if postfix_domains|count > 0 %} {% if postfix_prefer_lmtp %} mailbox_transport = lmtp:unix:private/dovecot-lmtp diff --git a/postfix/templates/transport.j2 b/postfix/templates/transport.j2 new file mode 100644 index 0000000000000000000000000000000000000000..aeacedc3d7f5604e160b2411503ce51eeb6a6ca9 --- /dev/null +++ b/postfix/templates/transport.j2 @@ -0,0 +1,7 @@ +{% for transport in postfix_transport_maps %} +{% if transport.use_mx|default(true) %} +{{ transport.domain }} {{ transport.protocol|default("") }}:{{ transport.server }}{{ ":"~transport.port if transport.port|default(false)|bool else "" }} +{% else %} +{{ transport.domain }} {{ transport.protocol|default("") }}:[{{ transport.server }}]{{ ":"~transport.port if transport.port|default(false)|bool else "" }} +{% endif %} +{% endfor %}