procmail
[Top] [All Lists]

Re: strange device errors

1999-01-23 12:55:24



Harry Palmer <hpalmer(_at_)ns1(_dot_)jerky(_dot_)net> writes:
I tested the FS by creating about 6000 extra files within my mail spool,
and it handled that fine.  The FS in question is ext2 and the partition is
only at about 1% inode usage and 21% size usage.  Breaking the list up
isn't a very good option since it even occurs then.  I've looked at the
source code for procmail, but am not exactly sure what would cause it to
have this error.  Anyone more familiar with the code have an idea?  
...
I run a somewhat large system that uses procmail as the local mailer, and
recently I have encountered some bizarre issues.  When sending a mailing
to all my users (over 20,000) I get the following error:

procmail: No space left to finish writing "/var/spool/mail/username"
550: username(_at_)domain(_dot_)com(_dot_)(_dot_)(_dot_) Can't create 
output

Normally I would expect this to mean my filesystem is full, however its
only at about 20% usage.  I've done further tests and have found that I
can in fact mail to these users.  The problem only seems to occur under
high load conditions when multiple emails are being sent at once, in 
which
case about 10% of the emails bounce with the above error.  

procmail only gives that error message if when it tried to deliver a
message to a mailbox a system call returned ENOSPC.  A scan of the
Linux manpages would seem to indicate that this should only occur if a)
the filesystem is completely full; b) a directory can't be expanded; or
c) the filesystem is out of inodes.  If none of those are true of your
system, that would leave options d) the filesystem is corrupt, and e)
the kernel FS code is buggy.  Have you rebooted recently, and if you
have did it fsck the filesystem?  Bear in mind that if fsck thinks that
the filesystem was unmounted cleanly, then it'll skip it unless you
give it the force (-f) option.  As for option (e), what versions are
your kernel and e2fsutils?


Philip Guenther


Its amazing what a few duplicate blocks can do.  Thanks for the help.

<Prev in Thread] Current Thread [Next in Thread>