Somebody read this mailing list? :)

> Hello!
> We're uging DBMail 2.2.5 from EPEL (Extra Packages for Enterprise Linux by 
> RedHat/Fedora Project) - 
> http://download.fedora.redhat.com/pub/epel/5/i386/repoview/dbmail.html .
> Sources of dbmail from EPEL contains next patch:
> ------------------------ begin patch
> Index: server.c
> ===================================================================
> --- server.c    (revision 2646)
> +++ server.c    (revision 2647)
> @@ -172,20 +172,36 @@
>         return Restart;
>  }
> -pid_t server_daemonize(serverConfig_t *conf)
> +/* Should be called after a HUP to allow for log rotation,
> + * as the filesystem may want to give us new inodes and/or
> + * the user may have changed the log file configs. */
> +static void reopen_logs(serverConfig_t *conf)
>  {
>         int serr;
> -       assert(conf);
> +
> +       if (! (freopen(conf->log, "a", stdout))) {
> +               serr = errno;
> +               TRACE(TRACE_ERROR, "freopen failed on [%s] [%s]",
> +                               conf->log, strerror(serr));
> +       }
> +       if (! (freopen(conf->error_log, "a", stderr))) {
> +               serr = errno;
> +               TRACE(TRACE_ERROR, "freopen failed on [%s] [%s]",
> +                               conf->error_log, strerror(serr));
> +       }
> +       if (! (freopen("/dev/null", "r", stdin))) {
> +               serr = errno;
> +               TRACE(TRACE_ERROR, "freopen failed on stdin [%s]",
> +                               strerror(serr));
> +       }
> +}
> -       if (fork())
> -               exit(0);
> -       setsid();
> -       if (fork())
> -               exit(0);
> +/* Should be called once to initially close the actual std{in,out,err}
> + * and open the redirection files. */
> +static void reopen_logs_fatal(serverConfig_t *conf)
> +{
> +       int serr;
> -       chdir("/");
> -       umask(0077);
> -
>         if (! (freopen(conf->log, "a", stdout))) {
>                 serr = errno;
>                 TRACE(TRACE_FATAL, "freopen failed on [%s] [%s]",
> @@ -201,7 +217,23 @@
>                 TRACE(TRACE_FATAL, "freopen failed on stdin [%s]",
>                                 strerror(serr));
>         }
> +}
> +pid_t server_daemonize(serverConfig_t *conf)
> +{
> +       assert(conf);
> +
> +       if (fork())
> +               exit(0);
> +       setsid();
> +       if (fork())
> +               exit(0);
> +
> +       chdir("/");
> +       umask(0077);
> +
> +       reopen_logs_fatal(conf);
> +
>         TRACE(TRACE_DEBUG, "sid: [%d]", getsid(0));
>         return getsid(0);
> @@ -225,6 +257,8 @@
>         int serrno, status, result = 0;
>         pid_t pid = -1;
> +       reopen_logs(conf);
> +
>         CreateSocket(conf);
>         switch ((pid = fork())) {
> ------------------------ end patch
> I noticed than exist bug http://dbmail.org/mantis/view.php?id=600 .
> DBMail built with patch above but in any case dbmail-imapd just stop 
> sometimes on logrotate (e.g. receiving SIGHUP).
> How to solve this problem?
> --
> Ilyas
> _______________________________________________
> DBmail mailing list
> DBmail@dbmail.org
> https://mailman.fastxs.nl/mailman/listinfo/dbmail
_______________________________________________
DBmail mailing list
DBmail@dbmail.org
https://mailman.fastxs.nl/mailman/listinfo/dbmail

Reply via email to