[Dovecot] STARTTLS and inetd

Magnus Holmgren holmgren at lysator.liu.se
Sat Jan 15 19:00:30 EET 2005


Hi!

When running dovecot from inetd (as per the instructions on 
http://wiki.dovecot.org/InetdInstall), imap-login and pop3-login thinks 
that TLS is enabled when in fact it isn't (we're connecting to port 110 
and port 143, so the --ssl parameter isn't present).

The reason for that is found in login-common/main.c:main():

 >	if (fd != -1)
 >		(void)client_create(fd, &ip, TRUE);

I added a flag which I set when ssl_proxy_new() is successfully called 
(see the following diff) and it seems to work fine. Is there any reason 
it shouldn't? What's the reason that the code is the way it is?

-- 
Magnus Holmgren
holmgren at lysator.liu.se

P.S. Nice software!

--- src/login-common/main.c     2003-11-08 16:15:42.000000000 +0100
+++ src/login-common/main.c.new 2005-01-15 17:49:53.000000000 +0100
@@ -220,7 +220,7 @@
  {
         const char *name, *group_name;
         struct ip_addr ip;
-       int i, fd = -1, master_fd = -1;
+       int i, fd = -1, master_fd = -1, ssl = FALSE;

         is_inetd = getenv("DOVECOT_MASTER") == NULL;

@@ -268,6 +268,7 @@
                                 fd = ssl_proxy_new(fd, &ip);
                                 if (fd == -1)
                                         i_fatal("SSL initialization 
failed");
+                               ssl = TRUE;
                         } else if (strncmp(argv[i], "--group=", 8) != 0)
                                 i_fatal("Unknown parameter: %s", argv[i]);
                 }
@@ -277,7 +278,7 @@
         }

         if (fd != -1)
-               (void)client_create(fd, &ip, TRUE);
+               (void)client_create(fd, &ip, ssl);

         io_loop_run(ioloop);
         main_deinit();



More information about the dovecot mailing list