Ahhhhh… Thanks for the explanation. That is it: the bounce messages have a blanked out Return-path header value – i.e. typically they show something like this very much anonymized example:
Return-path: <>
Envelope-to: bounces@example.com
Delivery-date: Wed, 11 Dec 2013 05:35:17 -0700
Received: from [123.123.123.123] (port=57082 helo=psmtp.com)
by server.bluehost.com with smtps (TLSv1:RC4-SHA:128)
(Exim 4.80)
id aaaaaa-bbbbbb-cc
for bounces@example.com; Wed, 11 Dec 2013 05:35:17 -0700
Received: from server.bluehost.com ([123.123.123.123]) (using TLSv1) by server.postini.com ([123.123.123.123]) with SMTP;
Wed, 11 Dec 2013 13:35:17 CET
Received: from [123.123.123.123] (port=35977 helo=psmtp.com)
by server.bluehost.com with smtp (Exim 4.80)
id dddddd-eeeeee-ff
for bounces@example.com; Wed, 11 Dec 2013 05:35:16 -0700
Received: from aaaa-bbbb-ccc.dddd.hotmail.com ([123.123.123.123]) by server.postini.com ([123.123.123.123]) with SMTP;
Wed, 11 Dec 2013 12:35:15 GMT
Received: from gggg-hhh-iii.jjjj.hotmail.com ([123.123.123.123]) by pppp-qqqq-rrr.ssss.hotmail.com with Microsoft SMTPSVC(6.0.3790.4675);
Wed, 11 Dec 2013 04:35:14 -0800
From: postmaster@hotmail.com
To: bounces@example.com
Date: Wed, 11 Dec 2013 04:35:14 -0800
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="123123123123=_234234234234234234234234234234234"
X-DSNContext: 12345678 - 1234 - 00000000 - 00000000
Message-ID: <fwerwerwerwerwerre@1234-123-123.1234.hotmail.com>
Subject: Delivery Status Notification (Failure)
X-OriginalArrivalTime: 11 Dec 2013 12:35:14.0014 (UTC) FILETIME=[234234234234234234]
X-pstn-dkim: 0 skipped:not-enabled
X-Remote-Checked: server.bluehost.com 123456-123456-12 123.123.123.123
X-pstn-dkim: 0 skipped:not-enabled
That empty Return-path is clearly the problem then. As far as I can tell, all the non-processed bounce messages have that emptied header. What I don’t know is where it’s emptied; if it’s something that happens on “my” server, or somewhere along the line.
By the way, PHPMailer-BMH is licensed as GPL – not just on that page you linked to, it’s also specifically mentioned and included in plaintext in the header portion of the included index.php
file, part of their package.