The current code in body_filename doesn't test that the flush operation succeeds leading to potential message loss.
All current plugins distributed in the core test to see if body_filename() returns a defined value so we can fix this with the following patch: -- s...@gold:~/git/qpsmtpd$ git diff diff --git a/lib/Qpsmtpd/Transaction.pm b/lib/Qpsmtpd/Transaction.pm index 18635ad..765ed1b 100644 --- a/lib/Qpsmtpd/Transaction.pm +++ b/lib/Qpsmtpd/Transaction.pm @@ -101,8 +101,12 @@ sub body_current_pos { sub body_filename { my $self = shift; $self->body_spool() unless $self->{_filename}; - $self->{_body_file}->flush(); # so contents won't be cached - return $self->{_filename}; + + # ensure contents won't be cached + if ( $self->{_body_file}->flush() ) { + return $self->{_filename}; + } + return undef; } sub body_spool { -- Steve -- Debian GNU/Linux System Administration http://www.debian-administration.org/