plugin immunity

[email protected] (Matt Simerson) Sat, 2 Jun 2012 21:13:04 -0700
Newsgroups perl.qpsmtpd
Message-ID <[email protected]>
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/
`````````````````````````````````````````````````````````````````````````