Hi,
This morning I had a problem on a server where the partition containing
the temporary directory for qpsmtpd filled up. Afterwards, I saw a number
of messages with headers but no body. In most cases it seems as though
the message was not retried by the remote MTA.
Inspecting the code, I see in body_filename(), Qpsmtpd/Transaction.pm that
the return value of $self->{_body_file}->flush() is not checked.
I suspect (but I don't know) that the messages that were retried were
larger and an earlier write failed before the explicit flush call.
I haven't spent much time at all looking at the qpsmtpd code, so I might
have missed something obvious, but this looks like a bug to me.
Other environmental stuff: qmail, qpsmtpd 0.32, FreeBSD 4.10, running
under tcpserver, logging to multilog, multilog also blocked at the same
time because the logs were also on the full filesystem. Qmail had no
problems once the messages got there; it lives on a filesystem which had
plenty of space.
So: Is this a known bug? Are there other known cases where the content
of messages might get lost in a disk full situation?
I also filed this as issue 18 on the Google issue tracker, but I'm posting
here as well because I don't know how often the issue tracker gets
checked.
Thanks,
Jan Mikkelsen
Transactionware