Problems with $forward_method and list of peer socket specifications

Mark Martinec Mark.Martinec+amavis at ijs.si
Sun Apr 29 04:39:55 CEST 2012


Michael,

> I have some problems with $forward_method and list of peer socket 
> specifications:
> 
> 1) The randomization of the destinations does not work correctly. If 
> you have 2 values in the list, always the first one is used. The 
> correction for this error is, changing
>        my($j) = int(rand($n_candidates-1));
> to
>        my($j) = int(rand($n_candidates));
> because rand(X) is always less than X.
> 
> 2) There is a case where the amavisd process hangs, when the 
> destination MTA is gone away:
> [...]
> 
> and so on till the process is killed.
> 
> Call chain:
> establish_or_refresh -> $smtp_handle->close -> $self->flush -> 
> $self->rw_loop(0,1) -> die "Error writing to socket ..."
> 
> If the '$self->flush' is evaled, the error disappears, but I do not 
> know if this is the correct solution.
> 
> 3) If a crashed MTA comes back, it takes too long, if it is used again, 
> if there is a high load. I think the reason is, that a cached connection 
> is used indefinitely, if it is not idle or the process ends its life. It 
> would be nice if we could limit the lifetime of such a connection, for 
> example if we could specify a maximal lifetime and/or the maximal number 
> of transactions.

Please try 2.7.1 or 2.8.0-pre6, I hope I have it all fixed there,
especially the first two problems.

Thanks for the problem report and analysis!

  Mark


More information about the amavis-users mailing list