diff -uPr qmail-1.03-va/Makefile qmail-1.03/Makefile
--- qmail-1.03-va/Makefile	1998-06-15 12:53:16.000000000 +0200
+++ qmail-1.03/Makefile	2004-06-15 12:09:48.000000000 +0200
@@ -1421,11 +1421,11 @@
 qmail-queue: \
 load qmail-queue.o triggerpull.o fmtqfn.o now.o date822fmt.o \
 datetime.a seek.a ndelay.a open.a sig.a alloc.a substdio.a error.a \
-str.a fs.a auto_qmail.o auto_split.o auto_uids.o
+str.a fs.a auto_qmail.o auto_split.o auto_uids.o wait.a envread.o str.a
 	./load qmail-queue triggerpull.o fmtqfn.o now.o \
 	date822fmt.o datetime.a seek.a ndelay.a open.a sig.a \
 	alloc.a substdio.a error.a str.a fs.a auto_qmail.o \
-	auto_split.o auto_uids.o 
+	auto_split.o auto_uids.o wait.a envread.o str.a
 
 qmail-queue.0: \
 qmail-queue.8
diff -uPr qmail-1.03-va/qmail-queue.c qmail-1.03/qmail-queue.c
--- qmail-1.03-va/qmail-queue.c	1998-06-15 12:53:16.000000000 +0200
+++ qmail-1.03/qmail-queue.c	2004-06-15 12:07:39.000000000 +0200
@@ -247,6 +247,36 @@
  if (substdio_flush(&ssout) == -1) die_write();
  if (fsync(intdfd) == -1) die_write();
 
+ if (1) { /* QQPF */
+  #include "wait.h"
+  #include <fcntl.h>
+  int pid, wstat;
+  char *qqf = env_get("QQPOSTF");
+  if (qqf && *qqf) {
+    switch (pid = fork()) {
+        case -1: cleanup(); die(51); /* oom */
+        case  0: close(intdfd); close(messfd);
+                if ((pid = open("/dev/null", O_RDWR)) < 0) die_read();
+                if (pid != 0 && dup2(pid, 0)<0) die_read();
+                if (pid != 1 && dup2(pid, 1)<0) die_read();
+                if (pid != 2 && dup2(pid, 2)<0) die_read();
+                execlp(qqf, qqf, messfn, intdfn, (void*)0);
+                /* filter is bad, but it's OK for us, admin should care */
+                die(0);
+        default:
+    };
+    if (wait_pid(&wstat, pid) != pid) {
+        cleanup(); die(81); /* intern bug */
+    };
+    if (! wait_crashed(wstat)) {
+        wstat = wait_exitcode(wstat);
+        if (wstat > 0 && wstat < 100) {
+            cleanup(); die(wstat);
+        };
+    };
+  };
+ }; /* QQPF */
+
  if (link(intdfn,todofn) == -1) die(66);
 
  triggerpull();
