[Dovecot] Can't run POP3 and IMAP simultaneously from xinetd...
Hello all, I'm hoping you can help out with an issue I'm having running dovecot-beta8 on Solaris 9 (SPARC). The reason I need to run them from xinetd is that we require the filtering ability that tcp_wrappers provide.
My issue is that, when running both from xinetd, IMAP runs fine, but then, when you try to POP in to check mail on the same box, it seems that the login section is handled via pop3-login... but all subsequent commands are handled via the imap interpreter. It's as if it's getting passed off to /usr/local/libexec/dovecot/imap instead of /usr/local/libexec/dovecot/pop3 as is specified in dovecot.conf. Here's an example from running a direct telnet session to the box in question:
[operator@yyyy operator]# telnet yyyy 110 Trying xxx.xxx.xxx.xxx... Connected to yyyy. Escape character is '^]'. +OK Unauthorized access prohibited USER joeblow +OK PASS joeblowspass +OK Logged in. LIST LIST BAD Error in IMAP command : Unknown command. QUIT QUIT BAD Error in IMAP command : Unknown command. 1 logout
If you do a ps -ef on the box and check the processes, at no time does a pop3 process start through this process. However, if you do the ps -ef right after the "LIST" command, you can see that there's an imap process started for user 'joeblow'.
Now, if I take xinetd out of the equation and instead use the daemon mode /usr/local/sbin/dovecot... everything works perfectly.
I've tried using the tcp_wrappers patch that's available in the unsupported directory on dovecot.org, but I cannot get the configure script to recognize the libwrap I have on the system when I compile dovecot with "--with-libwrap" as specified. I'm using tcp_wrappers for Solaris 9 off sunfreeware, so I know it's on there. I've also created sym links to libwrap.a and tcpd.h in /usr/lib and /usr/include respectively... still no dice.
Honestly, I don't care which way dovecot runs (though daemon mode WOULD actually be preferred for performance reasons IF tcp_wrappers were available for use), but I just need it running both IMAP and POP3 somehow.
Here are the applicable pop3 and imap sections of my dovecot.conf:
default_mail_env = mbox:~/mail:INBOX=/var/mail/%1u/%1.1u/%u
protocol pop3 { login_executable = /usr/local/libexec/dovecot/pop3-login mail_executable = /usr/local/libexec/dovecot/pop3 pop3_no_flag_updates = no pop3_enable_last = no pop3_uidl_format = %08Xu%08Xv pop3_logout_format = top=%t/%T, retr=%r/%R, del=%d/%m, size=%s pop3_client_workarounds = outlook-no-nuls oe-ns-eoh }
protocol imap { login_executable = /usr/local/libexec/dovecot/imap-login mail_executable = /usr/local/libexec/dovecot/imap login_greeting_capability = yes }
And the respective sections from xinetd.conf:
service pop3 { socket_type = stream protocol = tcp wait = no user = root server = /usr/local/libexec/dovecot/pop3-login port = 110 flags = REUSE IPv4 rlimit_cpu = 150 instances = 80 cps = 110 10 disable = no }
service imap { socket_type = stream protocol = tcp wait = no user = root server = /usr/local/libexec/dovecot/imap-login port = 143 flags = REUSE IPv4 rlimit_cpu = 120 disable = no }
I hope someone can shed some light on this situation for me. Thank you in advance.
Tim Meader CNE Internet Services NetCommerce Corporation Tim.Meader@gsfc.nasa.gov (301) 286-8013
On Fri, 2006-06-09 at 11:01 -0400, Timothy Meader wrote:
My issue is that, when running both from xinetd, IMAP runs fine, but then, when you try to POP in to check mail on the same box, it seems that the login section is handled via pop3-login...
Yes, others have noticed that before too, but I hadn't had time to look at it. Now that I did, it was a simple fix :) Index: src/master/login-process.c =================================================================== RCS file: /var/lib/cvs/dovecot/src/master/login-process.c,v retrieving revision 1.73 diff -u -r1.73 login-process.c --- src/master/login-process.c 14 Apr 2006 18:20:57 -0000 1.73 +++ src/master/login-process.c 11 Jun 2006 14:58:47 -0000 @@ -207,7 +207,7 @@ if (strcmp(proto, "imap") == 0) protocol = MAIL_PROTOCOL_IMAP; else if (strcmp(proto, "pop3") == 0) - protocol = MAIL_PROTOCOL_IMAP; + protocol = MAIL_PROTOCOL_POP3; else { i_error("login: Unknown protocol '%s'", proto); return FALSE;
participants (2)
-
Timo Sirainen
-
Timothy Meader