[Dovecot] Disconnects with proxies / new facts
Hi,
I just tried the below with the current version 1.0 RC15 and I still got the Problem: telnet gives me the following output: -----8<-----8<-----8<-----SNIP-----8<-----8<-----8<----- +OK dovecot ready.u-ERR invalid command u s-ERR invalid command s e-ERR invalid command e r-ERR invalid command r -ERR invalid command u-ERR invalid command u s-ERR invalid command s e-ERR invalid command e r-ERR invalid command r _-ERR invalid command _ 1-ERR invalid command 1
-ERR invalid command -----8<-----8<-----8<-----SNIP-----8<-----8<-----8<-----
The above output results from the following entry: user user_1[ENTER]
So now I know that this is no version issue. Can you tell me something on how I can find the solution for this problem? I don't think its a firewall issue, I disabled my Desktop Firewall. On the server I use shorewall, but of course, port 110 is open and it works disabling AntiVir on the client side. The error also occurs when I disable the Server Firewall as well. The error is reproducible on several PCs (I tried 3 PCs). Have you got any hint? Without solving the problem, I have to switch the pop3 server to another one, because this problem is really a crucial one.The only problem is: I loke dovecot. :)
Thanks in advance! Regards, Michael
-------- Original-Nachricht -------- Betreff: [Dovecot] Disconnects with proxies Datum: Wed, 06 Dec 2006 22:43:00 +0100 Von: Michael Kress kress@hal.saar.de An: dovecot@dovecot.org
Hi,
I know I shouldn't ask stuff like this when using dovecot-0.99.11-4.EL4 (CentOS-4.4), but why I'm asking this is whether it's worth to switch from rpm based upstream dovecot to a self compiled one or not and thus I think you wouldn't kill me presenting you this question. o:-)
I've got a problem with dovecot regarding a pop3 proxy issue. When I configure my dovecot server to do just plain pop3 I can telnet from a windows box without any flaw, but as soon as the client uses some pop3 proxy (for example outlook uses avira antivir Mail-AntiVirus Protection), queries to that server fail. A log line looks like this:
pop3-login: Dec 05 22:53:24 Info: Disconnected [::ffff:84.165.54.42]
Moreover with the proxy activated, a telnet to port 110 (pop3) is not working properly, the cursor stays right behind "+OK dovecot ready." and as soon as I enter a character, the server rejects this character as an unknown command (Without pressing ENTER). As soon as I turn off the Antivir-Proxy the telnet to port 110 runs flawlessly and I can login.
So I'd like to know is there anything I can do with this version or is it worth trying the newest version? Is this a known issue? Thanks in advance
Michael
-- Michael Kress, kress@hal.saar.de http://www.michael-kress.de / http://kress.net P E N G U I N S A R E C O O L
-- Michael Kress, kress@hal.saar.de http://www.michael-kress.de / http://kress.net P E N G U I N S A R E C O O L
Looks like a problem with the proxy to me - sending carriage returns after each character. You say 'as soon as the client uses some pop3 proxy,' but I wonder - have you actually tried another proxy, and have you tried this one with other pop servers? We know dovecot is working since you've stated as much, and all dovecot does is interpret what's sent to it over the socket...
Michael Kress wrote:
Hi,
I just tried the below with the current version 1.0 RC15 and I still got the Problem: telnet gives me the following output: -----8<-----8<-----8<-----SNIP-----8<-----8<-----8<----- +OK dovecot ready.u-ERR invalid command u s-ERR invalid command s e-ERR invalid command e r-ERR invalid command r -ERR invalid command u-ERR invalid command u s-ERR invalid command s e-ERR invalid command e r-ERR invalid command r _-ERR invalid command _ 1-ERR invalid command 1
-ERR invalid command -----8<-----8<-----8<-----SNIP-----8<-----8<-----8<-----
The above output results from the following entry: user user_1[ENTER]
So now I know that this is no version issue. Can you tell me something on how I can find the solution for this problem? I don't think its a firewall issue, I disabled my Desktop Firewall. On the server I use shorewall, but of course, port 110 is open and it works disabling AntiVir on the client side. The error also occurs when I disable the Server Firewall as well. The error is reproducible on several PCs (I tried 3 PCs). Have you got any hint? Without solving the problem, I have to switch the pop3 server to another one, because this problem is really a crucial one.The only problem is: I loke dovecot. :)
Thanks in advance! Regards, Michael
-------- Original-Nachricht -------- Betreff: [Dovecot] Disconnects with proxies Datum: Wed, 06 Dec 2006 22:43:00 +0100 Von: Michael Kress kress@hal.saar.de An: dovecot@dovecot.org
Hi,
I know I shouldn't ask stuff like this when using dovecot-0.99.11-4.EL4 (CentOS-4.4), but why I'm asking this is whether it's worth to switch from rpm based upstream dovecot to a self compiled one or not and thus I think you wouldn't kill me presenting you this question. o:-)
I've got a problem with dovecot regarding a pop3 proxy issue. When I configure my dovecot server to do just plain pop3 I can telnet from a windows box without any flaw, but as soon as the client uses some pop3 proxy (for example outlook uses avira antivir Mail-AntiVirus Protection), queries to that server fail. A log line looks like this:
pop3-login: Dec 05 22:53:24 Info: Disconnected [::ffff:84.165.54.42]
Moreover with the proxy activated, a telnet to port 110 (pop3) is not working properly, the cursor stays right behind "+OK dovecot ready." and as soon as I enter a character, the server rejects this character as an unknown command (Without pressing ENTER). As soon as I turn off the Antivir-Proxy the telnet to port 110 runs flawlessly and I can login.
So I'd like to know is there anything I can do with this version or is it worth trying the newest version? Is this a known issue? Thanks in advance
Michael
Hmm, I've already tried that proxy together with uw-imapd and I succeeded in getting mails, it seems that there's an issue in the communication between that specific proxy and that specific pop3 server dovecot. I also tried pgp desktop as a pop3 proxy and that worked perfectly.
Maybe the issue is related to the fact that dovecot is located on a xenU domain, the rest is a pretty basic CentOS-4.4 installation.
cu - Michael
Peter Fern wrote:
Looks like a problem with the proxy to me - sending carriage returns after each character. You say 'as soon as the client uses some pop3 proxy,' but I wonder - have you actually tried another proxy, and have you tried this one with other pop servers? We know dovecot is working since you've stated as much, and all dovecot does is interpret what's sent to it over the socket...
-- Michael Kress, kress@hal.saar.de http://www.michael-kress.de / http://kress.net P E N G U I N S A R E C O O L
I think I excluded all other cases now, because I installed cyrus-imapd and succeeded with a proxy between client and server. So there's definitely an issue with dovecot and the Avira AntiVir proxy. How can I succeed in getting dovecot working? May I help you with some debugging? cu - Michael
Michael Kress wrote:
I've already tried that proxy together with uw-imapd and I succeeded in getting mails, it seems that there's an issue in the communication between that specific proxy and that specific pop3 server dovecot. I also tried pgp desktop as a pop3 proxy and that worked perfectly.
Maybe the issue is related to the fact that dovecot is located on a xenU domain, the rest is a pretty basic CentOS-4.4 installation.
cu - Michael
Peter Fern wrote:
Looks like a problem with the proxy to me - sending carriage returns after each character. You say 'as soon as the client uses some pop3 proxy,' but I wonder - have you actually tried another proxy, and have you tried this one with other pop servers? We know dovecot is working since you've stated as much, and all dovecot does is interpret what's sent to it over the socket...
-- Michael Kress, kress@hal.saar.de http://www.michael-kress.de / http://kress.net P E N G U I N S A R E C O O L
On Tue, 2006-12-12 at 19:41 +0100, Michael Kress wrote:
I think I excluded all other cases now, because I installed cyrus-imapd and succeeded with a proxy between client and server. So there's definitely an issue with dovecot and the Avira AntiVir proxy. How can I succeed in getting dovecot working? May I help you with some debugging?
I don't see what Dovecot could do differently to break any proxies. It really looks like the proxy is just sending extra LF characters, and there's nothing Dovecot can do to not give error message in such case.
Could you get some network traffic dumps from the computer running Dovecot and also from the computer running some other POP3 server?
I'm guessing you're doing something differently with Cyrus if it doesn't have this problem (you said cyrus-imapd, but I guess you still tried cyrus-pop3d?)
Hello,
sorry to answer so late with the tcpdump output...
Timo Sirainen wrote:
On Tue, 2006-12-12 at 19:41 +0100, Michael Kress wrote:
I think I excluded all other cases now, because I installed cyrus-imapd and succeeded with a proxy between client and server. So there's definitely an issue with dovecot and the Avira AntiVir proxy. How can I succeed in getting dovecot working? May I help you with some debugging?
I don't see what Dovecot could do differently to break any proxies. It really looks like the proxy is just sending extra LF characters, and there's nothing Dovecot can do to not give error message in such case.
Could you get some network traffic dumps from the computer running Dovecot and also from the computer running some other POP3 server?
I'm guessing you're doing something differently with Cyrus if it doesn't have this problem (you said cyrus-imapd, but I guess you still tried cyrus-pop3d?)
ok, to repeat myself just to close up to the context ... I'm using version 0.99.11, i.e. the binary version that came with centos 4.4, Avira Antivir Mailguard version 7.00.00.54 as of 01/16/2007 Definition of the two sessions Session #1: successful session, Mailguard deactivated, telnet from windows
Session #2: unsuccessful session (the reason for this thread), Mailguard activated, telnet from windows
########################################################
Output from Session #1: Windows: +OK dovecot ready. user testpop +OK pass xxxxxxxxxxxxx +OK Logged in. quit +OK Logging out.
Linux:
22:37:03.169044 IP p54A572BD.dip.t-dialin.net.3296 >
mail.kress-edv.de.pop3: S 3889389846:3889389846(0) win 65535
80 packets captured 80 packets received by filter 0 packets dropped by kernel
########################################################
Output from Session #2: Windows: sometimes nothing on the (telnet) screen, just plain black blank... more often the string "OK dovecot ready." can be seen but as soon as I type a character, a carriage return is being sent afterwards.
Linux:
16:47:25.077236 IP p54A57136.dip.t-dialin.net.3452 >
mail.kress-edv.de.pop3: S 399467164:399467164(0) win 65535
and if I close the connection: 16:53:15.862805 IP p54A57136.dip.t-dialin.net.3673 > mail.kress-edv.de.pop3: R 1:1(0) ack 21 win 0
No further response to "user .... pass ..." except for the carriage returns. There must be something in dovecot that makes mailguard misbehave or vice versa. Can anyone see that from the traffic above? Or what else do you need for input data?
More interesting: I've seen that the version that came with Fedora if dovecot-1.0-1.1.rc15.fc6 works perfectly with that mailguard. Q: Is there any chance to patch the version that came with centos-4.4 with the right "salt"? Centos' dovecot version is 0.99.11. That could be of some interest as centos-4.4 (i.e. rhel4) will still live for quite some time.
Regards, Michael
-- Michael Kress, kress@hal.saar.de http://www.michael-kress.de / http://kress.net P E N G U I N S A R E C O O L
On 2.3.2007, at 18.06, Michael Kress wrote:
Is there any chance to patch the version that came with centos-4.4
with the right "salt"? Centos' dovecot version is 0.99.11.
v0.99.12 2004-12-05 Timo Sirainen tss@iki.fi
- IMAP and POP3 login processes may have sent each line in
two IP
packets, one with the data and another with CR+LF. Some
clients
didn't work because of this.
You could diff 0.99.11 and 0.99.12 sources and find the fix from
that. http://dovecot.org/releases/ has the tarballs.
I wouldn't bother with 0.99.x though.
Hello Timo
Timo Sirainen wrote:
On 2.3.2007, at 18.06, Michael Kress wrote:
Is there any chance to patch the version that came with centos-4.4 with the right "salt"? Centos' dovecot version is 0.99.11.
v0.99.12 2004-12-05 Timo Sirainen tss@iki.fi
- IMAP and POP3 login processes may have sent each line in two IP packets, one with the data and another with CR+LF. Some clients didn't work because of this.
You could diff 0.99.11 and 0.99.12 sources and find the fix from that. http://dovecot.org/releases/ has the tarballs.
I wouldn't bother with 0.99.x though.
I think we're getting closer to the problem ... I've tried this one: http://dl.atrpms.net/all/dovecot-1.0-3_48.rc25.at.src.rpm It runs perfectly if the client is not behind the Mailguard proxy but as soon as I switch it on, it's again:
+OK Dovecot ready. u-ERR invalid command u s-ERR invalid command s e-ERR invalid command e r-ERR invalid command r -ERR invalid command t-ERR invalid command t e-ERR invalid command e s-ERR invalid command s t-ERR invalid command t p-ERR invalid command p o-ERR invalid command o p-ERR invalid command p
-ERR invalid command
What's strange (and that's why I think we're getting closer): I can't find your change in version's 1.0-3_48.rc25.at spec file! Version 0.99.12 is omitted! That's weird. And that exactly might be the problem. I'm sure if I do the diff between 0.99.11 and 0.99.12, the patch doesn't work on 1.0-3_48.rc25.at. Should I give it try anyways? Or is there another solution?
BTW, below you'll find an strace -tt of the above pop3 session. Regards Michael
00:48:52.350356 gettimeofday({1172879332, 350527}, {0, 0}) = 0
00:48:52.350593 gettimeofday({1172879332, 350621}, NULL) = 0
00:48:52.350678 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 4, 923) = 0
00:48:53.274690 gettimeofday({1172879333, 274739}, {0, 0}) = 0
00:48:53.274794 gettimeofday({1172879333, 274824}, NULL) = 0
00:48:53.274876 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 4, 0) = 0
00:48:53.274968 gettimeofday({1172879333, 274997}, {0, 0}) = 0
00:48:53.275056 gettimeofday({1172879333, 275085}, NULL) = 0
00:48:53.275135 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 4, 998) = 0
00:48:54.276934 gettimeofday({1172879334, 276984}, {0, 0}) = 0
00:48:54.277039 gettimeofday({1172879334, 277069}, NULL) = 0
00:48:54.277121 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 4, 0) = 0
00:48:54.277213 gettimeofday({1172879334, 277242}, {0, 0}) = 0
00:48:54.277301 gettimeofday({1172879334, 277330}, NULL) = 0
00:48:54.277379 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 4, 999) = 0
00:48:55.276975 gettimeofday({1172879335, 277025}, {0, 0}) = 0
00:48:55.277080 gettimeofday({1172879335, 277110}, NULL) = 0
00:48:55.277162 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 4, 0) = 0
00:48:55.277256 gettimeofday({1172879335, 277285}, {0, 0}) = 0
00:48:55.277344 gettimeofday({1172879335, 277373}, NULL) = 0
00:48:55.277422 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 4, 999) = 0
00:48:56.276958 gettimeofday({1172879336, 277003}, {0, 0}) = 0
00:48:56.277058 gettimeofday({1172879336, 277087}, NULL) = 0
00:48:56.277140 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 4, 0) = 0
00:48:56.277233 gettimeofday({1172879336, 277262}, {0, 0}) = 0
00:48:56.277321 gettimeofday({1172879336, 277350}, NULL) = 0
00:48:56.277399 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 4, 999) = 0
00:48:57.277025 gettimeofday({1172879337, 277074}, {0, 0}) = 0
00:48:57.277129 gettimeofday({1172879337, 277159}, NULL) = 0
00:48:57.277212 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 4, 0) = 0
00:48:57.277304 gettimeofday({1172879337, 277333}, {0, 0}) = 0
00:48:57.277392 gettimeofday({1172879337, 277421}, NULL) = 0
00:48:57.277470 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL, revents=POLLIN}], 4,
999) = 1
00:48:57.942080 gettimeofday({1172879337, 942128}, {0, 0}) = 0
00:48:57.942186 accept(0, {sa_family=AF_INET, sin_port=htons(1694),
sin_addr=inet_addr("84.165.113.54")}, [11386788716442812432]) = 7
00:48:57.942365 getsockname(7, {sa_family=AF_INET, sin_port=htons(110),
sin_addr=inet_addr("999.999.999.999")}, [7926335352762007568]) = 0
00:48:57.942488 fcntl(7, F_GETFL) = 0x2 (flags O_RDWR)
00:48:57.942583 fcntl(7, F_SETFL, O_RDWR|O_NONBLOCK) = 0
00:48:57.942657 fstat(7, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
00:48:57.942789 lseek(7, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
00:48:57.942888 getsockname(7, {sa_family=AF_INET, sin_port=htons(110),
sin_addr=inet_addr("999.999.999.999")}, [7926335352762007568]) = 0
00:48:57.943016 writev(7, [{"+OK Dovecot ready.", 18}, {"\r\n", 2}], 2) = 20
00:48:57.943134 gettimeofday({1172879337, 943161}, NULL) = 0
00:48:57.943211 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 333) = 0
00:48:58.276958 gettimeofday({1172879338, 277001}, {0, 0}) = 0
00:48:58.277090 gettimeofday({1172879338, 277119}, NULL) = 0
00:48:58.277171 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 0) = 0
00:48:58.277268 gettimeofday({1172879338, 277297}, {0, 0}) = 0
00:48:58.277355 gettimeofday({1172879338, 277384}, NULL) = 0
00:48:58.277434 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 999) = 0
00:48:59.277135 gettimeofday({1172879339, 277184}, {0, 0}) = 0
00:48:59.277239 gettimeofday({1172879339, 277269}, NULL) = 0
00:48:59.277321 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 0) = 0
00:48:59.277418 gettimeofday({1172879339, 277447}, {0, 0}) = 0
00:48:59.277506 gettimeofday({1172879339, 277535}, NULL) = 0
00:48:59.277584 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 999) = 0
00:49:00.277138 gettimeofday({1172879340, 277187}, {0, 0}) = 0
00:49:00.277242 gettimeofday({1172879340, 277272}, NULL) = 0
00:49:00.277324 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 0) = 0
00:49:00.277421 gettimeofday({1172879340, 277451}, {0, 0}) = 0
00:49:00.277510 gettimeofday({1172879340, 277539}, NULL) = 0
00:49:00.277589 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 999) = 0
00:49:01.277152 gettimeofday({1172879341, 277195}, {0, 0}) = 0
00:49:01.277250 gettimeofday({1172879341, 277280}, NULL) = 0
00:49:01.277332 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 0) = 0
00:49:01.277444 gettimeofday({1172879341, 277474}, {0, 0}) = 0
00:49:01.277533 gettimeofday({1172879341, 277562}, NULL) = 0
00:49:01.277612 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 999) = 0
00:49:02.277141 gettimeofday({1172879342, 277186}, {0, 0}) = 0
00:49:02.277242 gettimeofday({1172879342, 277271}, NULL) = 0
00:49:02.277323 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 0) = 0
00:49:02.277421 gettimeofday({1172879342, 277450}, {0, 0}) = 0
00:49:02.277509 gettimeofday({1172879342, 277538}, NULL) = 0
00:49:02.277587 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 999) = 0
00:49:03.277168 gettimeofday({1172879343, 277217}, {0, 0}) = 0
00:49:03.277273 gettimeofday({1172879343, 277303}, NULL) = 0
00:49:03.277355 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 0) = 0
00:49:03.277452 gettimeofday({1172879343, 277481}, {0, 0}) = 0
00:49:03.277540 gettimeofday({1172879343, 277569}, NULL) = 0
00:49:03.277619 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 999) = 0
00:49:04.277137 gettimeofday({1172879344, 277185}, {0, 0}) = 0
00:49:04.277241 gettimeofday({1172879344, 277270}, NULL) = 0
00:49:04.277322 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 0) = 0
00:49:04.277419 gettimeofday({1172879344, 277448}, {0, 0}) = 0
00:49:04.277508 gettimeofday({1172879344, 277537}, NULL) = 0
00:49:04.277586 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 999) = 0
00:49:05.277173 gettimeofday({1172879345, 277222}, {0, 0}) = 0
00:49:05.277277 gettimeofday({1172879345, 277306}, NULL) = 0
00:49:05.277359 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 0) = 0
00:49:05.277456 gettimeofday({1172879345, 277485}, {0, 0}) = 0
00:49:05.277544 gettimeofday({1172879345, 277573}, NULL) = 0
00:49:05.277623 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 999) = 0
00:49:06.277159 gettimeofday({1172879346, 277204}, {0, 0}) = 0
00:49:06.277260 gettimeofday({1172879346, 277289}, NULL) = 0
00:49:06.277341 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 0) = 0
00:49:06.277438 gettimeofday({1172879346, 277468}, {0, 0}) = 0
00:49:06.277527 gettimeofday({1172879346, 277556}, NULL) = 0
00:49:06.277605 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 999) = 0
00:49:07.277187 gettimeofday({1172879347, 277235}, {0, 0}) = 0
00:49:07.277291 gettimeofday({1172879347, 277320}, NULL) = 0
00:49:07.277372 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 0) = 0
00:49:07.277469 gettimeofday({1172879347, 277498}, {0, 0}) = 0
00:49:07.277558 gettimeofday({1172879347, 277587}, NULL) = 0
00:49:07.277636 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 999) = 0
00:49:08.277187 gettimeofday({1172879348, 277236}, {0, 0}) = 0
00:49:08.277292 gettimeofday({1172879348, 277321}, NULL) = 0
00:49:08.277373 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 0) = 0
00:49:08.277470 gettimeofday({1172879348, 277499}, {0, 0}) = 0
00:49:08.277558 gettimeofday({1172879348, 277587}, NULL) = 0
00:49:08.277637 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL, revents=POLLIN}], 5,
999) = 1
00:49:08.817514 gettimeofday({1172879348, 817556}, {0, 0}) = 0
00:49:08.817628 read(7, "", 4096) = 0
00:49:08.817724 write(2, "\1IDisconnected: rip=84.165.113.5"..., 52) = 52
00:49:08.817888 close(7) = 0
00:49:08.817991 gettimeofday({1172879348, 818017}, NULL) = 0
00:49:08.818073 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 4, 458) = 0
00:49:09.277200 gettimeofday({1172879349, 277250}, {0, 0}) = 0
00:49:09.277335 gettimeofday({1172879349, 277364}, NULL) = 0
00:49:09.277417 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 4, 0) = 0
00:49:09.277509 gettimeofday({1172879349, 277538}, {0, 0}) = 0
00:49:09.277597 gettimeofday({1172879349, 277626}, NULL) = 0
00:49:09.277676 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 4, 999) = 0
00:49:10.277220 gettimeofday({1172879350, 277284}, {0, 0}) = 0
00:49:10.277340 gettimeofday({1172879350, 277369}, NULL) = 0
00:49:10.277422 poll([{fd=5,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0,
events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 4, 0) = 0
00:49:10.277514 gettimeofday({1172879350, 277544}, {0, 0}) = 0
00:49:10.277603 gettimeofday({1172879350, 277632}, NULL) = 0
00:49:10.277681 poll(
-- Michael Kress, kress@hal.saar.de http://www.michael-kress.de / http://kress.net P E N G U I N S A R E C O O L
Michael Kress wrote:
Timo Sirainen wrote:
v0.99.12 2004-12-05 Timo Sirainen
- IMAP and POP3 login processes may have sent each line in two IP packets, one with the data and another with CR+LF. Some clients didn't work because of this.
You could diff 0.99.11 and 0.99.12 sources and find the fix from that. http://dovecot.org/releases/ has the tarballs.
Hi, I did that diff and as version 1.0-3_48.rc25.at uses another coding style I tried to adopt to it, but somehow it failed. Have you got any idea, what's going wrong? Regards, Michael ================================ diff -Naur dovecot-1.0.rc25/src/pop3-login/client.c dovecot-1.0.rc25-patched/src/pop3-login/client.c --- dovecot-1.0.rc25/src/pop3-login/client.c 2006-11-24 10:27:04.000000000 +0100 +++ dovecot-1.0.rc25-patched/src/pop3-login/client.c 2007-03-05 15:32:31.660439938 +0100 @@ -438,16 +438,14 @@ void client_send_line(struct pop3_client *client, const char *line) { - struct const_iovec iov[2]; + struct const_iovec iov[1]; ssize_t ret; - iov[0].iov_base = line; - iov[0].iov_len = strlen(line); - iov[1].iov_base = "\r\n"; - iov[1].iov_len = 2; + iov[0].iov_base = strcat(line,"\r\n"); + iov[0].iov_len = strlen(line) + 2; - ret = o_stream_sendv(client->output, iov, 2); - if (ret < 0 || (size_t)ret != iov[0].iov_len + iov[1].iov_len) { + ret = o_stream_sendv(client->output, iov, 1); + if (ret < 0 || (size_t)ret != iov[0].iov_len) { /* either disconnection or buffer full. in either case we want this connection destroyed. however destroying it here might break things if client is still tried to be accessed ================================ Here's the output of a login session. Here, at least there's no CR+LF after each character typed: 16:10:14.820218 accept(0, {sa_family=AF_INET, sin_port=htons(2112), sin_addr=inet_addr("84.165.121.174")}, [4613937826831007760]) = 7 16:10:14.820400 getsockname(7, {sa_family=AF_INET, sin_port=htons(110), sin_addr=inet_addr("999.999.999.999")}, [7926335352762007568]) = 0 16:10:14.820523 fcntl(7, F_GETFL) = 0x2 (flags O_RDWR) 16:10:14.820618 fcntl(7, F_SETFL, O_RDWR|O_NONBLOCK) = 0 16:10:14.820691 fstat(7, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0 16:10:14.820823 lseek(7, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) 16:10:14.820922 getsockname(7, {sa_family=AF_INET, sin_port=htons(110), sin_addr=inet_addr("999.999.999.999")}, [7926335352762007568]) = 0 16:10:14.821089 write(7, "+OK Dovecot ready.\r\n\0\0", 22) = 22 16:10:14.821193 gettimeofday({1173107414, 821220}, NULL) = 0 16:10:14.821272 poll([{fd=5, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3, events=POLLIN|PO LLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 374) = 0 16:10:15.196255 gettimeofday({1173107415, 196288}, {0, 0}) = 0 16:10:15.196342 gettimeofday({1173107415, 196371}, NULL) = 0 16:10:15.196420 poll([{fd=5, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3, events=POLLIN|PO LLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 0) = 0 16:10:15.196517 gettimeofday({1173107415, 196546}, {0, 0}) = 0 16:10:15.196603 gettimeofday({1173107415, 196631}, NULL) = 0 16:10:15.196680 poll([{fd=5, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3, events=POLLIN|PO LLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 999) = 0 16:10:16.196320 gettimeofday({1173107416, 196369}, {0, 0}) = 0 16:10:16.196424 gettimeofday({1173107416, 196453}, NULL) = 0 16:10:16.196505 poll([{fd=5, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3, events=POLLIN|PO LLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 0) = 0 16:10:16.196602 gettimeofday({1173107416, 196630}, {0, 0}) = 0 16:10:16.196690 gettimeofday({1173107416, 196718}, NULL) = 0 16:10:16.196767 poll([{fd=5, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3, events=POLLIN|PO LLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL, revents=POLLI N}], 5, 999) = 1 16:10:17.174464 gettimeofday({1173107417, 174510}, {0, 0}) = 0 16:10:17.174570 brk(0x564000) = 0x564000 16:10:17.174659 read(7, "user kress\r\n", 4096) = 12 16:10:17.174766 setsockopt(7, SOL_TCP, TCP_CORK, [1], 4) = 0 16:10:17.174859 --- SIGSEGV (Segmentation fault) @ 0 (0) --- -- Michael Kress, kress@hal.saar.de http://www.michael-kress.de / http://kress.net P E N G U I N S A R E C O O L
On 05/03/2007 15:24, Michael Kress wrote:
void client_send_line(struct pop3_client *client, const char *line) {
struct const_iovec iov[2];
struct const_iovec iov[1]; ssize_t ret;
iov[0].iov_base = line;
iov[0].iov_len = strlen(line);
iov[1].iov_base = "\r\n";
iov[1].iov_len = 2;
iov[0].iov_base = strcat(line,"\r\n");
Oooh, you can't do that, unless you're sure there's really room for another two characters there, and there's nothing here to say there is. You may accidentally be overwriting something else.
Cheers,
John.
John Robinson wrote:
Oooh, you can't do that, unless you're sure there's really room for another two characters there, and there's nothing here to say there is. You may accidentally be overwriting something else.
So how can I treat this behaviour?
+OK Dovecot ready. u-ERR invalid command u s-ERR invalid command s e-ERR invalid command e r-ERR invalid command r -ERR invalid command t-ERR invalid command t e-ERR invalid command e s-ERR invalid command s t-ERR invalid command t p-ERR invalid command p o-ERR invalid command o p-ERR invalid command p
Greetings Michael
-- Michael Kress, kress@hal.saar.de http://www.michael-kress.de / http://kress.net P E N G U I N S A R E C O O L
On Sat, 2007-03-03 at 01:18 +0100, Michael Kress wrote:
+OK Dovecot ready. u-ERR invalid command u s-ERR invalid command s e-ERR invalid command e r-ERR invalid command r -ERR invalid command t-ERR invalid command t e-ERR invalid command e s-ERR invalid command s t-ERR invalid command t p-ERR invalid command p o-ERR invalid command o p-ERR invalid command p
-ERR invalid command
None of these come from Dovecot. It appears your proxy doesn't like the POP3 client.
What's strange (and that's why I think we're getting closer): I can't find your change in version's 1.0-3_48.rc25.at spec file! Version 0.99.12 is omitted! That's weird. And that exactly might be the problem. I'm sure if I do the diff between 0.99.11 and 0.99.12, the patch doesn't work on 1.0-3_48.rc25.at. Should I give it try anyways? Or is there another solution?
No, the bug was fixed another way in 1.0rcs.
00:48:57.943016 writev(7, [{"+OK Dovecot ready.", 18}, {"\r\n", 2}], 2) = 20
Here Dovecot writes its ready message.
00:48:57.943211 poll([{fd=5, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=8, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=3, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=0, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}, {fd=7, events=POLLIN|POLLPRI|POLLERR|POLLHUP|POLLNVAL}], 5, 333) = 0 ...
Then it waits..
00:49:08.817628 read(7, "", 4096) = 0 00:49:08.817724 write(2, "\1IDisconnected: rip=84.165.113.5"..., 52) = 52 00:49:08.817888 close(7) = 0
Then the client just disconnects.
So your problem has nothing to do with Dovecot itself, and it can't be fixed in Dovecot side.
Hi list, hi Timo, John and Peter,
I was on the wrong way, sorry, it's not dovecot to blame, it's definitely Zonealarm to blame. What lead me wrong is that multiple users of my old server were switched from another pop3 software to dovecot and the effect suddenly arose, so I kept dovecot as my suspect/scapegoat.
Timo Sirainen wrote:
On Sat, 2007-03-03 at 01:18 +0100, Michael Kress wrote:
+OK Dovecot ready. u-ERR invalid command u s-ERR invalid command s e-ERR invalid command e r-ERR invalid command r -ERR invalid command t-ERR invalid command t e-ERR invalid command e s-ERR invalid command s t-ERR invalid command t p-ERR invalid command p o-ERR invalid command o p-ERR invalid command p
-ERR invalid command
None of these come from Dovecot. It appears your proxy doesn't like the POP3 client.
That's right, to be more precise (and this might help others reading this thread) it's the combination ZoneAlarm + AntiVir Mailguard that doesn't work. After applying the solution from this thread http://forum.antivir.de/thread.php?threadid=19079 (sorry it's in German). I totally solved my issue without touching dovecot or anything other on the server side. The solution in a few words: I just had to switch ZA into a "learning mode" = "Medium Security" so it could gather what the client wants to do i.e. to talk pop3 with the server. After that I could switch ZA back to "High Security". Weird, but it works.
So your problem has nothing to do with Dovecot itself, and it can't be fixed in Dovecot side.
agreed. Thanks anyways for your analysis and sorry again for the confusion. At least it's clear for future users of the combination dovecot + ZA + AV Mailguard that the combination needs a special way of treatment on the client side (ZA). Maybe it's worth a FAQ entry? Have a good time Michael
-- Michael Kress, kress@hal.saar.de http://www.michael-kress.de / http://kress.net P E N G U I N S A R E C O O L
participants (4)
-
John Robinson
-
Michael Kress
-
Peter Fern
-
Timo Sirainen