From: Wietse Venema on 9 Dec 2009 06:50 Len Conrad: > >The only thing postscreen does after "postfix reload" (or stop) is > >to fork a child process and terminate immediately in the parent > >process; the child continues in the background, closes the Berkeley > >DB table, erases the Berkeley DB handle, accepts no new connections, > >and completes the client tests that are already in progress, without > >saving the result. > > > >Perhaps you can see if "postfix reload" reproduces the error message. > > > mx6# date > Tue Dec 8 21:08:14 EST 2009 > > mx6# postfix reload > postfix/postfix-script: refreshing the Postfix mail system > > Dec 8 21:08:18 mx6 postfix/postscreen[12148]: fatal: close database /var/db/postfix/ps_cache.db: No such file or directory Maybe you can try this patch. It moves the close() before the fork(), and that would make a difference if Berkeley DB objects to process ID changes. If that does not help, then I recommend using use an older Berkeley DB version (like, the default FreeBSD one). Wietse *** ./postscreen.c- Sat Dec 5 19:52:45 2009 --- ./postscreen.c Wed Dec 9 06:43:47 2009 *************** *** 987,992 **** --- 987,996 ---- * but we don't need perfection. The host system is severely overloaded * and service levels are already way down. */ + if (cache_map != 0) { + dict_close(cache_map); + cache_map = 0; + } for (count = 0; /* see below */ ; count++) { if (count >= 5) { msg_fatal("fork: %m"); *************** *** 995,1004 **** sleep(1); continue; } else { - if (cache_map != 0) { - dict_close(cache_map); - cache_map = 0; - } return; } } --- 999,1004 ----
First
|
Prev
|
Pages: 1 2 Prev: PATCH: smtpd_proxy logging Next: does order of postscreen_* params matter? |