in reply to spampd hangs occasionaly

That message comes from a piece of code in spampd which looks suspicious to me:
sub process_request { my $self = shift; my $msg; eval { local $SIG{ALRM} = sub { die "Child server process timed out!\n" + }; my $timeout = $self->{spampd}->{childtimeout}; # start a timeout alarm alarm($timeout); # start an smtp server my $smtp_server = SpamPD::Server->new($self->{server}->{client}) +; ... #close the temp file $smtp_server->{data}->close or $self->log(1, ... ); ... # close connections $client->{sock}->close or die "Couldn't close client->{sock}: $!"; $smtp_server->{sock}->close or die "Couldn't close smtp_server->{sock}: $! +"; if ( $self->{spampd}->{debug} ) { $self->log(2, "Closed connections"); } }; # end eval block alarm(0); # stop the timer # check for error in eval block if ($@ ne '') { chomp($@); $msg = "WARNING!! Error in process_request eval block: $@"; $self->log(0, $msg); die ($msg . "\n"); } $self->{spampd}->{instance}++; }

Just calling die from an alarm handler inside eval, only to propagate $@, without any cleanup whatsoever (closing filehandles, destroying objects, removing tempfiles) doesn't seem like the right thing to do here, imho. The (second part of your) problem could well stem from here: abandoned open connections that can't be reused - that might be why spampd isn't responsive after a timeout.

This might help:

but maybe the bug is elsewhere.. ;-)

--shmem

_($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                              /\_¯/(q    /
----------------------------  \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}