Is it possible to disable pipelining in imapc?
Hi,
I've a broken IMAP server, which doesn't support pipelining and fails on dovecot's attempt to do this ([C] is dovecot's imapc, [S] is the IMAP server):
[C] 24 LOGIN "user" "pass" [S] 23 OK [C] 25 SELECT "INBOX" [C] 23 UID FETCH 2 (INTERNALDATE) [S] 25 OK [S] 23 BAD No mailbox selected
Sadly, fixing the server would be a hard task, turning off pipelining in dovecot's imapc (which already supports many workarounds for different servers) could be easy...
... except I can see no place to do this in imapc (only in pop3c and imap proxy, which I guess doesn't apply here).
If I'm right, may I ask for a knob for such dumb servers?
Thanks,
On 08.09.2017 14:50, Nagy, Attila wrote:
Hi,
I've a broken IMAP server, which doesn't support pipelining and fails on dovecot's attempt to do this ([C] is dovecot's imapc, [S] is the IMAP server):
[C] 24 LOGIN "user" "pass" [S] 23 OK [C] 25 SELECT "INBOX" [C] 23 UID FETCH 2 (INTERNALDATE) [S] 25 OK [S] 23 BAD No mailbox selected
Sadly, fixing the server would be a hard task, turning off pipelining in dovecot's imapc (which already supports many workarounds for different servers) could be easy...
... except I can see no place to do this in imapc (only in pop3c and imap proxy, which I guess doesn't apply here).
If I'm right, may I ask for a knob for such dumb servers?
Thanks,
For proxy, use proxy_nopipelining
Aki
On 09/08/2017 01:53 PM, Aki Tuomi wrote:
On 08.09.2017 14:50, Nagy, Attila wrote:
Hi,
I've a broken IMAP server, which doesn't support pipelining and fails on dovecot's attempt to do this ([C] is dovecot's imapc, [S] is the IMAP server):
[C] 24 LOGIN "user" "pass" [S] 23 OK [C] 25 SELECT "INBOX" [C] 23 UID FETCH 2 (INTERNALDATE) [S] 25 OK [S] 23 BAD No mailbox selected
Sadly, fixing the server would be a hard task, turning off pipelining in dovecot's imapc (which already supports many workarounds for different servers) could be easy...
... except I can see no place to do this in imapc (only in pop3c and imap proxy, which I guess doesn't apply here).
If I'm right, may I ask for a knob for such dumb servers?
Thanks, For proxy, use proxy_nopipelining
Are you sure it works with imapc? I've tried it, and dovecot still does the above.
On 08.09.2017 15:29, Nagy, Attila wrote:
On 09/08/2017 01:53 PM, Aki Tuomi wrote:
On 08.09.2017 14:50, Nagy, Attila wrote:
Hi,
I've a broken IMAP server, which doesn't support pipelining and fails on dovecot's attempt to do this ([C] is dovecot's imapc, [S] is the IMAP server):
[C] 24 LOGIN "user" "pass" [S] 23 OK [C] 25 SELECT "INBOX" [C] 23 UID FETCH 2 (INTERNALDATE) [S] 25 OK [S] 23 BAD No mailbox selected
Sadly, fixing the server would be a hard task, turning off pipelining in dovecot's imapc (which already supports many workarounds for different servers) could be easy...
... except I can see no place to do this in imapc (only in pop3c and imap proxy, which I guess doesn't apply here).
If I'm right, may I ask for a knob for such dumb servers?
Thanks, For proxy, use proxy_nopipelining
Are you sure it works with imapc? I've tried it, and dovecot still does the above.
So what are you exactly doing?
Aki
On 09/11/2017 09:17 AM, Aki Tuomi wrote:
On 08.09.2017 15:29, Nagy, Attila wrote:
On 09/08/2017 01:53 PM, Aki Tuomi wrote:
On 08.09.2017 14:50, Nagy, Attila wrote:
Hi,
I've a broken IMAP server, which doesn't support pipelining and fails on dovecot's attempt to do this ([C] is dovecot's imapc, [S] is the IMAP server):
[C] 24 LOGIN "user" "pass" [S] 23 OK [C] 25 SELECT "INBOX" [C] 23 UID FETCH 2 (INTERNALDATE) [S] 25 OK [S] 23 BAD No mailbox selected
Sadly, fixing the server would be a hard task, turning off pipelining in dovecot's imapc (which already supports many workarounds for different servers) could be easy...
... except I can see no place to do this in imapc (only in pop3c and imap proxy, which I guess doesn't apply here).
If I'm right, may I ask for a knob for such dumb servers?
Thanks, For proxy, use proxy_nopipelining
Are you sure it works with imapc? I've tried it, and dovecot still does the above. So what are you exactly doing?
I use dovecot with a broken IMAP server (which doesn't properly implement command pipelining amongst others) as an imapc backend. Dovecot issues the above command sequence (SELECT and UID FETCH pipelined), which doesn't work with this server.
Therefore I'm requesting an imapc_features setting, IMAPC_FEATURE_NO_PIPELINING, which disables PIPELINING in dovecot imapc. Similarly to other workarounds, like IMAPC_FEATURE_FETCH_MSN_WORKAROUNDS, IMAPC_FEATURE_FETCH_FIX_BROKEN_MAILS et al.
On 11 Sep 2017, at 11.24, Nagy, Attila bra@fsn.hu wrote: I use dovecot with a broken IMAP server (which doesn't properly implement command pipelining amongst others) as an imapc backend. Dovecot issues the above command sequence (SELECT and UID FETCH pipelined), which doesn't work with this server.
Therefore I'm requesting an imapc_features setting, IMAPC_FEATURE_NO_PIPELINING, which disables PIPELINING in dovecot imapc. Similarly to other workarounds, like IMAPC_FEATURE_FETCH_MSN_WORKAROUNDS, IMAPC_FEATURE_FETCH_FIX_BROKEN_MAILS et al.
Dovecot IMAPC should not pipeline unless remote advertises pipelining support in CAPABILITY response. Are you saying that you have imap server which advertses support for it but then does not support it after all?
Sami
On 09/11/2017 10:42 AM, Sami Ketola wrote:
On 11 Sep 2017, at 11.24, Nagy, Attila bra@fsn.hu wrote: I use dovecot with a broken IMAP server (which doesn't properly implement command pipelining amongst others) as an imapc backend. Dovecot issues the above command sequence (SELECT and UID FETCH pipelined), which doesn't work with this server.
Therefore I'm requesting an imapc_features setting, IMAPC_FEATURE_NO_PIPELINING, which disables PIPELINING in dovecot imapc. Similarly to other workarounds, like IMAPC_FEATURE_FETCH_MSN_WORKAROUNDS, IMAPC_FEATURE_FETCH_FIX_BROKEN_MAILS et al.
Dovecot IMAPC should not pipeline unless remote advertises pipelining support in CAPABILITY response. Are you saying that you have imap server which advertses support for it but then does not support it after all?
It's a capability in POP3 and an extension in (E)SMTP. I don't know about pipelining capability in IMAP (BTW, the server doesn't advertise such capability, in fact, it doesn't support any capabilities), it's standard, plain old IMAP RFC: https://tools.ietf.org/html/rfc3501#section-5.5
The whole topic is about a bad IMAP server, which doesn't properly implement pipelining (hence IMAP RFC), like others, for which dovecot implements a workaround in imapc.
On 11.09.2017 11:59, Nagy, Attila wrote:
On 09/11/2017 10:42 AM, Sami Ketola wrote:
On 11 Sep 2017, at 11.24, Nagy, Attila bra@fsn.hu wrote: I use dovecot with a broken IMAP server (which doesn't properly implement command pipelining amongst others) as an imapc backend. Dovecot issues the above command sequence (SELECT and UID FETCH pipelined), which doesn't work with this server.
Therefore I'm requesting an imapc_features setting, IMAPC_FEATURE_NO_PIPELINING, which disables PIPELINING in dovecot imapc. Similarly to other workarounds, like IMAPC_FEATURE_FETCH_MSN_WORKAROUNDS, IMAPC_FEATURE_FETCH_FIX_BROKEN_MAILS et al.
Dovecot IMAPC should not pipeline unless remote advertises pipelining support in CAPABILITY response. Are you saying that you have imap server which advertses support for it but then does not support it after all?
It's a capability in POP3 and an extension in (E)SMTP. I don't know about pipelining capability in IMAP (BTW, the server doesn't advertise such capability, in fact, it doesn't support any capabilities), it's standard, plain old IMAP RFC: https://tools.ietf.org/html/rfc3501#section-5.5
The whole topic is about a bad IMAP server, which doesn't properly implement pipelining (hence IMAP RFC), like others, for which dovecot implements a workaround in imapc.
But are you using it like with doveadm? or proxying connection to? How are you invoking imapc?
Aki
On 09/11/2017 11:14 AM, Aki Tuomi wrote:
On 11.09.2017 11:59, Nagy, Attila wrote:
On 09/11/2017 10:42 AM, Sami Ketola wrote:
On 11 Sep 2017, at 11.24, Nagy, Attila bra@fsn.hu wrote: I use dovecot with a broken IMAP server (which doesn't properly implement command pipelining amongst others) as an imapc backend. Dovecot issues the above command sequence (SELECT and UID FETCH pipelined), which doesn't work with this server.
Therefore I'm requesting an imapc_features setting, IMAPC_FEATURE_NO_PIPELINING, which disables PIPELINING in dovecot imapc. Similarly to other workarounds, like IMAPC_FEATURE_FETCH_MSN_WORKAROUNDS, IMAPC_FEATURE_FETCH_FIX_BROKEN_MAILS et al. Dovecot IMAPC should not pipeline unless remote advertises pipelining support in CAPABILITY response. Are you saying that you have imap server which advertses support for it but then does not support it after all?
It's a capability in POP3 and an extension in (E)SMTP. I don't know about pipelining capability in IMAP (BTW, the server doesn't advertise such capability, in fact, it doesn't support any capabilities), it's standard, plain old IMAP RFC: https://tools.ietf.org/html/rfc3501#section-5.5
The whole topic is about a bad IMAP server, which doesn't properly implement pipelining (hence IMAP RFC), like others, for which dovecot implements a workaround in imapc. But are you using it like with doveadm? or proxying connection to? How are you invoking imapc?
Dovecot acts as a frontend to this broken server and I redirect users with passdb/userdb via dict protocol, returning entries like: js = { 'password': '', 'nopassword': '', 'host':'imap_backend', 'port':1430, 'driver':'imap', 'proxy_nopipelining':'y', 'userdb_user':qdata['Auth-User'], 'userdb_imapc_user':qdata['Auth-User'], 'userdb_imapc_password':qdata['Auth-Pass'], 'destuser':qdata['Auth-User'], }
(and this is where I tried proxy_nopipelining as you can see, but of course it's irrelevant)
On 11.09.2017 13:09, Nagy, Attila wrote:
On 09/11/2017 11:14 AM, Aki Tuomi wrote:
On 11.09.2017 11:59, Nagy, Attila wrote:
On 09/11/2017 10:42 AM, Sami Ketola wrote:
On 11 Sep 2017, at 11.24, Nagy, Attila bra@fsn.hu wrote: I use dovecot with a broken IMAP server (which doesn't properly implement command pipelining amongst others) as an imapc backend. Dovecot issues the above command sequence (SELECT and UID FETCH pipelined), which doesn't work with this server.
Therefore I'm requesting an imapc_features setting, IMAPC_FEATURE_NO_PIPELINING, which disables PIPELINING in dovecot imapc. Similarly to other workarounds, like IMAPC_FEATURE_FETCH_MSN_WORKAROUNDS, IMAPC_FEATURE_FETCH_FIX_BROKEN_MAILS et al. Dovecot IMAPC should not pipeline unless remote advertises pipelining support in CAPABILITY response. Are you saying that you have imap server which advertses support for it but then does not support it after all?
It's a capability in POP3 and an extension in (E)SMTP. I don't know about pipelining capability in IMAP (BTW, the server doesn't advertise such capability, in fact, it doesn't support any capabilities), it's standard, plain old IMAP RFC: https://tools.ietf.org/html/rfc3501#section-5.5
The whole topic is about a bad IMAP server, which doesn't properly implement pipelining (hence IMAP RFC), like others, for which dovecot implements a workaround in imapc. But are you using it like with doveadm? or proxying connection to? How are you invoking imapc?
Dovecot acts as a frontend to this broken server and I redirect users with passdb/userdb via dict protocol, returning entries like: js = { 'password': '', 'nopassword': '', 'host':'imap_backend', 'port':1430, 'driver':'imap', 'proxy_nopipelining':'y', 'userdb_user':qdata['Auth-User'], 'userdb_imapc_user':qdata['Auth-User'], 'userdb_imapc_password':qdata['Auth-Pass'], 'destuser':qdata['Auth-User'], }
(and this is where I tried proxy_nopipelining as you can see, but of course it's irrelevant)
Is there some reason you can't use normal proxy instead of imap backend? That is,return proxy, host=imap_backend, port=1430? There seems to be no pipeline setting currently for imapc in v2.2.
Aki
On 09/11/2017 12:12 PM, Aki Tuomi wrote:
Is there some reason you can't use normal proxy instead of imap backend? That is,return proxy, host=imap_backend, port=1430? There seems to be no pipeline setting currently for imapc in v2.2.
Yes, because it's a dumb IMAP server, which doesn't implement a lot of things, like SEARCH, FETCH BODYSTRUCTURE and similar. Dovecot is used as a smart proxy, which makes it possible to use it as a fully featured IMAP server.
On 11.09.2017 15:56, Nagy, Attila wrote:
On 09/11/2017 12:12 PM, Aki Tuomi wrote:
Is there some reason you can't use normal proxy instead of imap backend? That is,return proxy, host=imap_backend, port=1430? There seems to be no pipeline setting currently for imapc in v2.2.
Yes, because it's a dumb IMAP server, which doesn't implement a lot of things, like SEARCH, FETCH BODYSTRUCTURE and similar. Dovecot is used as a smart proxy, which makes it possible to use it as a fully featured IMAP server.
Does the dumb server advertize pipelining?
Aki
On 09/11/2017 03:01 PM, Aki Tuomi wrote:
On 11.09.2017 15:56, Nagy, Attila wrote:
On 09/11/2017 12:12 PM, Aki Tuomi wrote:
Is there some reason you can't use normal proxy instead of imap backend? That is,return proxy, host=imap_backend, port=1430? There seems to be no pipeline setting currently for imapc in v2.2.
Yes, because it's a dumb IMAP server, which doesn't implement a lot of things, like SEARCH, FETCH BODYSTRUCTURE and similar. Dovecot is used as a smart proxy, which makes it possible to use it as a fully featured IMAP server. Does the dumb server advertize pipelining?
Exactly how does an IMAP server advertise pipelining other than it says it's an IMAP server? :) There is no such capability, extension etc. It's in RFC3501, which defines IMAP v4r1.
Dovecot has a proxy_nopipelining setting for its IMAP proxy, I just want to use that (ie: no pipelining) with imapc too. Whether it's dynamically configurable, even with the existing proxy_nopipelining, or with an imapc_features flag, it doesn't matter for me.
Of course, setting this per user would be nicer.
On 11.09.2017 16:14, Nagy, Attila wrote:
On 09/11/2017 03:01 PM, Aki Tuomi wrote:
On 11.09.2017 15:56, Nagy, Attila wrote:
On 09/11/2017 12:12 PM, Aki Tuomi wrote:
Is there some reason you can't use normal proxy instead of imap backend? That is,return proxy, host=imap_backend, port=1430? There seems to be no pipeline setting currently for imapc in v2.2.
Yes, because it's a dumb IMAP server, which doesn't implement a lot of things, like SEARCH, FETCH BODYSTRUCTURE and similar. Dovecot is used as a smart proxy, which makes it possible to use it as a fully featured IMAP server. Does the dumb server advertize pipelining?
Exactly how does an IMAP server advertise pipelining other than it says it's an IMAP server? :) There is no such capability, extension etc. It's in RFC3501, which defines IMAP v4r1.
Dovecot has a proxy_nopipelining setting for its IMAP proxy, I just want to use that (ie: no pipelining) with imapc too. Whether it's dynamically configurable, even with the existing proxy_nopipelining, or with an imapc_features flag, it doesn't matter for me.
Of course, setting this per user would be nicer.
There currently is no such feature. Guess such feature could be added at some point.
Aki
participants (3)
-
Aki Tuomi
-
Nagy, Attila
-
Sami Ketola