On 12/03/2020 08:04, Jean-Daniel wrote:
> 
> 
>> Le 11 mars 2020 à 19:32, Juri Haberland <j...@koschikode.com> a écrit :
>> 
>> Hi list,
>> 
>> I have a small problem with recipient_delimiters contained in usernames.
>> Recently I have extended recipient_delimiter from "+" to "+-" in both
>> Postfix and Dovecot (using lmtp) and now any user that have a '-' in it's
>> username can't receive mail anymore, because lmtp truncates the localpart
>> after the '-' and of course can't find the first half in the user database.
>> 
>> To illustrate: given an account "foo-...@example.com", I get the following
>> log entry from postfix:
>> Mar  9 09:31:43 batleth postfix/lmtp[6196]: 9A7BA33E005B:
>> to=<foo-...@example.com>,
>> relay=batleth.sapienti-sat.org[private/dovecot-lmtp], delay=20,
>> delays=20/0.01/0.01/0.08, dsn=5.1.1, status=bounced (host
>> batleth.sapienti-sat.org[private/dovecot-lmtp] said: 550 5.1.1
>> <foo-...@example.com> User doesn't exist: f...@example.com (in reply to RCPT
>> TO command))
>> Is there any way to tell lmtp to first look for
>> <user><delimiter><extension> and if that fails look for <user> only (the
>> reverse order would be ok, too)?
>> 
> 
> This is already what they do AFAIK. I’m using ‘-‘ as delimiter for a long 
> time and didn’t have any issue with my mails.
> I think this postfix error only reflects the last attempt, and not all the 
> resolution attempts. Try increasing the log (either in postfix or LMTP) to 
> see what append exactly.

I turned debugging on in both programs and could see the conversation between 
Postfix and Dovecot via LMTP. Setting recipient_delimiter to +- in
Postfix doesn't make the delivery break so I left it at this. Only 
recipient_delimiter=+- in Dovecot makes the difference. In both cases Postfix 
ask
Dovecot for a user named "<foo-...@sapienti-sat.org>" and with "-" included in 
Dovecot's recipient_delimiter option Dovecot replies with:

550 5.1.1 <foo-...@sapienti-sat.org> User doesn't exist: f...@sapienti-sat.org

On the Dovecot side I see a single database lookup for "f...@sapienti-sat.org". 
So Postfix doesn't care and hands the complete mail address off to
Dovecot, which in turn either looks up the full email address (in case of "-" 
excluded) or looks up the truncated mail address only in case of "-"
included.

My question would be:
Is this due to a misconfiguration somewhere?
Is this the intended behavior?
Or is this a bug?


Cheers,
  Juri


PS: here are the logs (from two different but identical tests) for the case 
where both Dovecot and Postfix have recipient_delimiter = +-

Mar 15 17:57:06 batleth postfix/lmtp[5077]: smtp_connect_unix: trying: 
private/dovecot-lmtp...
Mar 15 17:57:06 batleth postfix/lmtp[5077]: smtp_stream_setup: maxtime=300 
enable_deadline=0
Mar 15 17:57:06 batleth postfix/lmtp[5077]: < 
batleth.sapienti-sat.org[private/dovecot-lmtp]: 220 batleth.sapienti-sat.org 
Dovecot ready.
Mar 15 17:57:06 batleth dovecot: lmtp(5154): Connect from local
Mar 15 17:57:06 batleth postfix/lmtp[5077]: > 
batleth.sapienti-sat.org[private/dovecot-lmtp]: LHLO batleth.sapienti-sat.org
Mar 15 17:57:06 batleth postfix/lmtp[5077]: < 
batleth.sapienti-sat.org[private/dovecot-lmtp]: 250-batleth.sapienti-sat.org
Mar 15 17:57:06 batleth postfix/lmtp[5077]: < 
batleth.sapienti-sat.org[private/dovecot-lmtp]: 250-8BITMIME
Mar 15 17:57:06 batleth postfix/lmtp[5077]: < 
batleth.sapienti-sat.org[private/dovecot-lmtp]: 250-CHUNKING
Mar 15 17:57:06 batleth postfix/lmtp[5077]: < 
batleth.sapienti-sat.org[private/dovecot-lmtp]: 250-ENHANCEDSTATUSCODES
Mar 15 17:57:06 batleth postfix/lmtp[5077]: < 
batleth.sapienti-sat.org[private/dovecot-lmtp]: 250-PIPELINING
Mar 15 17:57:06 batleth postfix/lmtp[5077]: < 
batleth.sapienti-sat.org[private/dovecot-lmtp]: 250 STARTTLS
Mar 15 17:57:06 batleth postfix/lmtp[5077]: server features: 0x17 size 0
Mar 15 17:57:06 batleth postfix/lmtp[5077]: Using LMTP PIPELINING, TCP send 
buffer size is 212992, PIPELINING buffer size is 4096
Mar 15 17:57:06 batleth postfix/lmtp[5077]: smtp_stream_setup: maxtime=300 
enable_deadline=0
Mar 15 17:57:06 batleth postfix/lmtp[5077]: > 
batleth.sapienti-sat.org[private/dovecot-lmtp]: MAIL 
FROM:<r...@batleth.sapienti-sat.org>
Mar 15 17:57:06 batleth postfix/lmtp[5077]: > 
batleth.sapienti-sat.org[private/dovecot-lmtp]: RCPT 
TO:<foo-...@sapienti-sat.org>
Mar 15 17:57:06 batleth postfix/lmtp[5077]: > 
batleth.sapienti-sat.org[private/dovecot-lmtp]: DATA
Mar 15 17:57:06 batleth postfix/lmtp[5077]: smtp_stream_setup: maxtime=300 
enable_deadline=0
Mar 15 17:57:06 batleth postfix/lmtp[5077]: < 
batleth.sapienti-sat.org[private/dovecot-lmtp]: 250 2.1.0 OK
Mar 15 17:57:06 batleth postfix/lmtp[5077]: smtp_stream_setup: maxtime=300 
enable_deadline=0
Mar 15 17:57:06 batleth postfix/lmtp[5077]: < 
batleth.sapienti-sat.org[private/dovecot-lmtp]: 550 5.1.1 
<foo-...@sapienti-sat.org> User doesn't exist:
f...@sapienti-sat.org
Mar 15 17:57:06 batleth postfix/lmtp[5077]: connect to subsystem private/bounce
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr nrequest = 0
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr flags = 0
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr queue_id = B75A333E0D77
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr original_recipient = 
foo-...@sapienti-sat.org
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr recipient = 
foo-...@sapienti-sat.org
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr offset = 700
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr dsn_orig_rcpt = 
rfc822;foo-...@sapienti-sat.org
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr notify_flags = 0
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr status = 5.1.1
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr diag_type = smtp
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr diag_text = 550 5.1.1 
<foo-...@sapienti-sat.org> User doesn't exist: f...@sapienti-sat.org
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr mta_type = dns
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr mta_mname = 
batleth.sapienti-sat.org
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr action = failed
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr reason = host 
batleth.sapienti-sat.org[private/dovecot-lmtp] said: 550 5.1.1
<foo-...@sapienti-sat.org> User doesn't exist: f...@sapienti-sat.org (in reply 
to RCPT TO command)
Mar 15 17:57:06 batleth postfix/lmtp[5077]: private/bounce socket: wanted 
attribute: status
Mar 15 17:57:06 batleth postfix/lmtp[5077]: input attribute name: status
Mar 15 17:57:06 batleth postfix/lmtp[5077]: input attribute value: 0
Mar 15 17:57:06 batleth postfix/lmtp[5077]: private/bounce socket: wanted 
attribute: (list terminator)
Mar 15 17:57:06 batleth postfix/lmtp[5077]: input attribute name: (end)
Mar 15 17:57:06 batleth postfix/lmtp[5077]: B75A333E0D77: 
to=<foo-...@sapienti-sat.org>, 
relay=batleth.sapienti-sat.org[private/dovecot-lmtp],
delay=0.31, delays=0.21/0/0.01/0.08, dsn=5.1.1, status=bounced (host 
batleth.sapienti-sat.org[private/dovecot-lmtp] said: 550 5.1.1
<foo-...@sapienti-sat.org> User doesn't exist: f...@sapienti-sat.org (in reply 
to RCPT TO command))
Mar 15 17:57:06 batleth postfix/lmtp[5077]: smtp_stream_setup: maxtime=120 
enable_deadline=0
Mar 15 17:57:06 batleth postfix/lmtp[5077]: < 
batleth.sapienti-sat.org[private/dovecot-lmtp]: 503 5.5.0 No valid recipients
Mar 15 17:57:07 batleth postfix/lmtp[5077]: > 
batleth.sapienti-sat.org[private/dovecot-lmtp]: RSET
Mar 15 17:57:07 batleth postfix/lmtp[5077]: > 
batleth.sapienti-sat.org[private/dovecot-lmtp]: QUIT
Mar 15 17:57:07 batleth postfix/lmtp[5077]: smtp_stream_setup: maxtime=20 
enable_deadline=0
Mar 15 17:57:07 batleth postfix/lmtp[5077]: < 
batleth.sapienti-sat.org[private/dovecot-lmtp]: 250 2.0.0 OK
Mar 15 17:57:07 batleth postfix/lmtp[5077]: smtp_stream_setup: maxtime=300 
enable_deadline=0
Mar 15 17:57:07 batleth postfix/lmtp[5077]: < 
batleth.sapienti-sat.org[private/dovecot-lmtp]: 221 2.0.0 Bye
Mar 15 17:57:07 batleth postfix/lmtp[5077]: name_mask: resource
Mar 15 17:57:07 batleth postfix/lmtp[5077]: name_mask: software
Mar 15 17:57:07 batleth dovecot: lmtp(5154): Disconnect from local: Client has 
quit the connection (state=READY)




Mar 15 17:25:55 batleth dovecot: lmtp(32357): Connect from local
Mar 15 17:25:55 batleth dovecot: 
lmtp(f...@sapienti-sat.org)<32357></O/wBxNXbl5lfgAAOCqtvw>: Debug: auth-master: 
userdb lookup(f...@sapienti-sat.org):
Started userdb lookup
Mar 15 17:25:55 batleth dovecot: 
lmtp(f...@sapienti-sat.org)<32357></O/wBxNXbl5lfgAAOCqtvw>: Debug: auth-master: 
conn
unix:/var/run/dovecot/auth-userdb: Connecting
Mar 15 17:25:55 batleth dovecot: 
lmtp(f...@sapienti-sat.org)<32357></O/wBxNXbl5lfgAAOCqtvw>: Debug: auth-master: 
conn unix:/var/run/dovecot/auth-userdb
(pid=32319,uid=0): Client connected (fd=17)
Mar 15 17:25:55 batleth dovecot: 
lmtp(f...@sapienti-sat.org)<32357></O/wBxNXbl5lfgAAOCqtvw>: Debug: auth-master: 
userdb lookup(f...@sapienti-sat.org):
auth USER input:
Mar 15 17:25:55 batleth dovecot: 
lmtp(f...@sapienti-sat.org)<32357></O/wBxNXbl5lfgAAOCqtvw>: Debug: auth-master: 
userdb lookup(f...@sapienti-sat.org):
Userdb lookup failed
Mar 15 17:25:55 batleth postfix/lmtp[31931]: 055C233E13EE: 
to=<foo-...@sapienti-sat.org>, 
relay=batleth.sapienti-sat.org[private/dovecot-lmtp],
delay=0.23, delays=0.15/0/0.01/0.07, dsn=5.1.1, status=bounced (host 
batleth.sapienti-sat.org[private/dovecot-lmtp] said: 550 5.1.1
<foo-...@sapienti-sat.org> User doesn't exist: f...@sapienti-sat.org (in reply 
to RCPT TO command))
Mar 15 17:25:55 batleth dovecot: lmtp(32357): Disconnect from local: Client has 
quit the connection (state=READY)

Reply via email to