Subject: postfix and fork errors in .forward/procmail
To: None <>
From: Greg Troxel <>
List: current-users
Date: 10/17/2006 12:00:09
Content-Transfer-Encoding: quoted-printable

I'm running pretty-much current on i386 with procmail and postfix from

procmail-3.22nb2    Local mail delivery agent
postfix-2.3.3       Postfix SMTP server and tools

Someone got a bounce and I found this in the logs:

Oct 17 09:16:14 fnord postfix/local[28729]: 8D8825283: to=3D<
>, relay=3Dlocal, delay=3D8.7, delays=3D8.6/0.01/0/0.04, dsn=3D5.3.0, statu=
s=3Dbounced (Command died with status 2: "/usr/pkg/bin/procmail  || exit 75=
". Command output: Cannot vfork )

Here is my .forward:

  "|/usr/pkg/bin/procmail  || exit 75"

I don't really understand why my system got into a 'cannot vfork' mode
(it seems to occasionally, even though I don't seem up against
per-user resource limits, global # processes, open files, or running
out of RAM/swap).  I am running gnome though, and have found multiple
copies of some daemons.

I looked in the postfix source and found that it seems to hit this in

	    else {
		sp =3D sys_exits_detail(WEXITSTATUS(wait_status));
		dsb_unix(why, sp->dsn,
			 log_len ? log_buf : sp->text,
			 "Command died with status %d: \"%s\"%s%s",
			 WEXITSTATUS(wait_status), args.command,
			 log_len ? ". Command output: " : "", log_buf);
		return (PIPE_STAT_BOUNCE);

So I think it's forking /bin/sh to run the "procmail || exit 75"
compound command, and /bin/sh can't fork.  This turns into 550 via
sys_exits_fake.   It seems that random non-understood errors ought to
be 4xx.  I haven't looked in the in-tree postfix.


    Greg Troxel <>

Content-Type: application/pgp-signature

Version: GnuPG v1.4.5 (NetBSD)