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 @@ -12,25 +12,31 @@ register: r notify: - Restart Postfix - name: Create directory /etc/postfix-.../virtual file: path=/etc/postfix-{{ postfix_instance[inst].name }}/virtual state=directory owner=root group=root mode=0755 - name: Copy lookup tables copy: src=etc/postfix/virtual/{{ item }} dest=/etc/postfix-{{ postfix_instance[inst].name }}/virtual/{{ item }} owner=root group=root mode=0644 with_items: - mailbox_domains.cf - 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 - meta: flush_handlers 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 @@ -38,24 +38,29 @@ inet_protocols = ipv4 mydestination = local_transport = error:5.1.1 Mailbox unavailable alias_maps = alias_database = local_recipient_maps = message_size_limit = 67108864 recipient_delimiter = + # No relay: this server is inbound-only relay_transport = error:5.1.1 Relay unavailable default_transport = error:5.1.1 Transport unavailable # Virtual transport (the alias resolution is already done by the MX:es) virtual_transport = lmtp:unix:private/dovecot-lmtpd lmtp_bind_address = 127.0.0.1 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 smtpd_timeout = 1200s |