https://github.com/smtpd/qpsmtpd/pull/20
Prior to this change, many of the plugins had some form of immunity tests. Most
of the implementations were partial (ie, they set immunity to for 1, 2, and
sometimes 3 of the standard immunity tests (relay_client, whitelisthost,
whitelistsender). This set of changes consolidates the immunity testing into
is_immune() in Plugins.pm. It also adds immunity for my zombies and Steve's
rejected connections.
There may be cause to have is_immune accept arguments. The example I kept
watching for while updating the plugins is where a plugin might not want
immunization against a certain test. But I didn't run into a case where that
was desirable or necessary.
Matt
PS: Here's the addition to Plugins.pm.
sub is_immune {
my $self = shift;
if ( $self->qp->connection->relay_client() ) {
# set by plugins/relay, or Qpsmtpd::Auth
$self->log(LOGINFO, "skip, relay client");
return 1;
};
if ( $self->qp->connection->notes('whitelisthost') ) {
# set by plugins/dns_whitelist_soft or plugins/whitelist
$self->log(LOGINFO, "skip, whitelisted host");
return 1;
};
if ( $self->qp->transaction->notes('whitelistsender') ) {
# set by plugins/whitelist
$self->log(LOGINFO, "skip, whitelisted sender");
return 1;
};
if ( $self->connection->notes('zombie') ) {
# see plugins/reaper
$self->log(LOGINFO, "skip, zombie");
return 1;
};
if ( $self->connection->notes('rejected') ) {
# http://www.steve.org.uk/Software/ms-lite/
$self->log(LOGINFO, "skip, already rejected");
return 1;
};
return;
};
`````````````````````````````````````````````````````````````````````````
Matt Simerson http://matt.simerson.net/
Systems Engineer http://www.tnpi.net/
Mail::Toaster - http://mail-toaster.org/
NicTool - http://www.nictool.com/
`````````````````````````````````````````````````````````````````````````