diff options
Diffstat (limited to 'roles/IMAP')
-rw-r--r-- | roles/IMAP/files/etc/postfix/recipient_canonical.pcre | 4 | ||||
-rw-r--r-- | roles/IMAP/tasks/mda.yml | 6 | ||||
-rw-r--r-- | roles/IMAP/templates/etc/postfix/main.cf.j2 | 5 |
3 files changed, 15 insertions, 0 deletions
diff --git a/roles/IMAP/files/etc/postfix/recipient_canonical.pcre b/roles/IMAP/files/etc/postfix/recipient_canonical.pcre new file mode 100644 index 0000000..07c5859 --- /dev/null +++ b/roles/IMAP/files/etc/postfix/recipient_canonical.pcre @@ -0,0 +1,4 @@ +# Restore the original envelope recipient (drop our internal domain). +# Extensions are preserved as they are included in $2. + +/^([^\/]+)\/(.+)@[^@]+$/ $2@$1 diff --git a/roles/IMAP/tasks/mda.yml b/roles/IMAP/tasks/mda.yml index 1aac519..0358f12 100644 --- a/roles/IMAP/tasks/mda.yml +++ b/roles/IMAP/tasks/mda.yml @@ -29,6 +29,12 @@ - mailbox.cf - transport_content_filter.cf +- name: Copy recipient canonical + copy: src=etc/postfix/recipient_canonical.pcre + dest=/etc/postfix-{{ postfix_instance[inst].name }}/recipient_canonical.pcre + owner=root group=root + mode=0644 + - name: Start Postfix service: name=postfix state=started when: not r.changed diff --git a/roles/IMAP/templates/etc/postfix/main.cf.j2 b/roles/IMAP/templates/etc/postfix/main.cf.j2 index e4c01bd..d0421ce 100644 --- a/roles/IMAP/templates/etc/postfix/main.cf.j2 +++ b/roles/IMAP/templates/etc/postfix/main.cf.j2 @@ -55,6 +55,11 @@ virtual_mailbox_domains = ldap:$config_directory/virtual/mailbox_domains.cf virtual_mailbox_maps = ldap:$config_directory/virtual/mailbox.cf transport_maps = ldap:$config_directory/virtual/transport_content_filter.cf +# Restore the original envelope recipient +relay_domains = $myhostname +recipient_canonical_classes = envelope_recipient +recipient_canonical_maps = pcre:$config_directory/recipient_canonical.pcre + # Don't rewrite remote headers local_header_rewrite_clients = # Tolerate occasional high latency |