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