У меня такое случалось когда spam.pl (связывающий элемент между spamc и postfix) получал письмо с несколькими получателями. Как отдавать корректно письмо в постфикс он не знал, и в результате получалась именно такие undisclosed-recipients и пустое body. Переписал spam.pl, вот выкладываю если нужно:#!/usr/local/bin/perl
# Copyright (c) 2006 Alexander Lobachov <alxl@REMOVE-THIS-FAKEsmg.lv>.
# All rights reserved.
# This piece of software is public domain.
use strict;
############################################################
my $spam_level = 15;
my $smtp_host = 'localhost:10027';
my $hello_host = 'spamfilter';
my $spamc_path = '/usr/local/bin/spamc';
my $spamc_flags = '-U /var/run/spamd/spamd.sock';
############################################################
my @buf;
open(my $CF, "$spamc_path $spamc_flags |") || die('spamc not found');
while (<$CF>) {
(close($CF) && exit(0)) if (/^X-Spam-Level: \*{$spam_level,}/i);
next if (/^delivered-to:/i);
push(@buf, $_);
}
require Net::SMTP; # yep, load it up only when we need
my $smtp = Net::SMTP->new($smtp_host);
$smtp->hello($hello_host);
$smtp->mail(shift(@ARGV));
$smtp->recipient(@ARGV);
$smtp->data(@buf);
$smtp->quit();
close($CF);
exit(0);