On 12/03/2020 08:04, Jean-Daniel wrote:>
>
>> Le 11 mars 2020 ? 19:32, Juri Haberland <juri at 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-bar at example.com", I
get the following
>> log entry from postfix:
>> Mar 9 09:31:43 batleth postfix/lmtp[6196]: 9A7BA33E005B:
>> to=<foo-bar at 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-bar at example.com> User doesn't exist: foo at
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-bar at sapienti-sat.org>" and
with "-" included in Dovecot's recipient_delimiter option Dovecot
replies with:
550 5.1.1 <foo-bar at sapienti-sat.org> User doesn't exist: foo at
sapienti-sat.org
On the Dovecot side I see a single database lookup for "foo at
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:<root at
batleth.sapienti-sat.org>
Mar 15 17:57:06 batleth postfix/lmtp[5077]: >
batleth.sapienti-sat.org[private/dovecot-lmtp]: RCPT TO:<foo-bar at
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-bar at
sapienti-sat.org> User doesn't exist:
foo at 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-bar at sapienti-sat.org
Mar 15 17:57:06 batleth postfix/lmtp[5077]: send attr recipient = foo-bar at
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-bar at 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-bar at sapienti-sat.org> User doesn't exist: foo at
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-bar at sapienti-sat.org> User doesn't exist: foo at
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-bar at
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-bar at sapienti-sat.org> User doesn't exist: foo at
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(foo at
sapienti-sat.org)<32357></O/wBxNXbl5lfgAAOCqtvw>: Debug:
auth-master: userdb lookup(foo at sapienti-sat.org):
Started userdb lookup
Mar 15 17:25:55 batleth dovecot: lmtp(foo at
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(foo at
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(foo at
sapienti-sat.org)<32357></O/wBxNXbl5lfgAAOCqtvw>: Debug:
auth-master: userdb lookup(foo at sapienti-sat.org):
auth USER input:
Mar 15 17:25:55 batleth dovecot: lmtp(foo at
sapienti-sat.org)<32357></O/wBxNXbl5lfgAAOCqtvw>: Debug:
auth-master: userdb lookup(foo at sapienti-sat.org):
Userdb lookup failed
Mar 15 17:25:55 batleth postfix/lmtp[31931]: 055C233E13EE: to=<foo-bar at
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-bar at sapienti-sat.org> User doesn't exist: foo at
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)