I just moved my mail server. With the move, an update from Postfix 3.1 to 3.4 happened (Ubuntu 16.04 to 20.04).
On the Postfix 3.1 install, I was able to send and receive emails with the delimiter +
in the local part. The same config with Postfix 3.4 lets me receive emails with +
in the local part but when I try sending an email with +
(say, e.g. me+test@mydomain.tld) the server returns
5.7.1 <holger+testmail@(redacted)>: Sender address rejected: not owned by user
In my main.cf, the virtual maps are mapped as follows:
virtual_alias_maps =
hash:/etc/aliases,
proxy:ldap:/etc/postfix/ldap-forwarding.cf,
proxy:ldap:/etc/postfix/ldap-aliases.cf
virtual_mailbox_domains = proxy:ldap:/etc/postfix/ldap-domains.cf
virtual_mailbox_maps = ldap:/etc/postfix/ldap-virtual-maps.cf
The sender restrictions are:
smtpd_sender_login_maps = unionmap:{proxy:ldap:/etc/postfix/ldap-aliases.cf,pcre:/etc/postfix/sender_login_override.pcre}
smtpd_sender_restrictions = permit_mynetworks,
reject_authenticated_sender_login_mismatch,
permit_sasl_authenticated,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unlisted_sender,
reject_unauth_pipelining,
reject_unknown_reverse_client_hostname,
reject_unknown_client_hostname,
And, of course, the delimiter is set:
recipient_delimiter = +
ldap-forwarding.cf:
version = 3
server_host = localhost
server_port = 389
bind_dn = (redacted)
bind_pw = (redacted)
search_base = ou=Users,dc=(redacted)
query_filter = (&(|(uid=%u)(mail=%s)(mailAlternateAddress=%s))(objectClass=qmailUser)(accountStatus=forward))
result_attribute = mailForwardingAddress
ldap_aliases.cf:
version = 3
server_host = localhost
server_port = 389
bind_dn = (redacted)
bind_pw = (redacted)
search_base = ou=Users,dc=(redacted)
query_filter = (&(|(uid=%u)(mailAlternateAddress=%s)(mail=%s))(objectClass=qmailUser)(|(accountStatus=active)(accountStatus=shared)(accountStatus=forward)))
result_attribute = uid
result_format = %u
ldap-domains.cf:
version = 3
server_host = localhost
server_port = 389
bind_dn = (redacted)
bind_pw = (redacted)
search_base = ou=DNS,ou=System,dc=(redacted)
query_filter = (associatedDomain=%s)
result_attribute = associatedDomain
ldap-virtual-maps.cf:
version = 3
server_host = localhost
server_port = 389
bind_dn = (redacted)
bind_pw = (redacted)
search_base = ou=Users,dc=(redacted)
query_filter = (&(|(mail=%s)(mailAlternateAddress=%s))(|(accountStatus=active)(accountStatus=shared)))
result_attribute = mailMessageStore
I can’t seem to find the issue. Any hints are highly appreciated. Also, if any further information is needed, I am happy to add it.