Index: Sendmail-PMilter-0.97/lib/Sendmail/PMilter/Context.pm
--- Sendmail-PMilter-0.97/lib/Sendmail/PMilter/Context.pm.orig	2009-02-24 00:38:20 +0100
+++ Sendmail-PMilter-0.97/lib/Sendmail/PMilter/Context.pm	2009-07-05 20:09:37 +0200
@@ -200,6 +200,8 @@
 				$this->call_hooks('abort');
 			} elsif ($cmd eq SMFIC_BODY) {
 				$this->call_hooks('body', $buf, length($buf));
+                        } elsif ($cmd eq SMFIC_DATA) {
+				$this->call_hooks('data', $buf, length($buf));
 			} elsif ($cmd eq SMFIC_CONNECT) {
 				# Perl RE doesn't like matching multiple \0 instances.
 				# To avoid problems, we slice the string to the first null,
@@ -245,6 +247,12 @@
 					$this->{symbols}{$code}{$name} = $value;
 				}
 			} elsif ($cmd eq SMFIC_BODYEOB) {
+				#   SMFIC_BODYEOB is a single MILTER protocol
+				#   command, but is carries two MILTER API
+				#   semantics and hence (also closely following
+				#   Sendmail's libmilter) we have to call both
+				#   the MILTER API 'body' and 'eom' callbacks!
+				$this->call_hooks('body', $buf, length($buf)) if (length($buf) > 0);
 				$this->call_hooks('eom');
 			} elsif ($cmd eq SMFIC_HELO) {
 				my $helo = &$split_buf;
Index: sendmail-8.14.3/include/libmilter/mfapi.h
--- sendmail-8.14.3/include/libmilter/mfapi.h.orig	2008-02-27 23:30:34 +0100
+++ sendmail-8.14.3/include/libmilter/mfapi.h	2009-07-05 20:08:58 +0200
@@ -28,7 +28,7 @@
 # include <sys/types.h>
 # include <sys/socket.h>
 
-#include "libmilter/mfdef.h"
+#include "milter/mfdef.h"
 
 # define LIBMILTER_API		extern
 
Index: sendmail-8.14.3/include/libmilter/milter.h
--- sendmail-8.14.3/include/libmilter/milter.h.orig	2006-05-23 01:23:55 +0200
+++ sendmail-8.14.3/include/libmilter/milter.h	2009-07-05 20:08:58 +0200
@@ -18,7 +18,7 @@
 # define _LIBMILTER_MILTER_H	1
 
 #include "sendmail.h"
-#include "libmilter/mfapi.h"
+#include "milter/mfapi.h"
 
 /* socket and thread portability */
 # include <pthread.h>
