PublicInbox::SaPlugin::ListMirror(3)

NAME
PublicInbox::SaPlugin::ListMirror - SpamAssassin plugin for mailing list mirrors

SYNOPSIS
  loadplugin PublicInbox::SaPlugin::ListMirror

Declare some mailing lists based on the expected List-ID value, expected servers, and mailing list address:

  list_mirror List-ID <foo.example.com> *.example.com foo@example.com
  list_mirror List-ID <bar.example.com> *.example.com bar@example.com

Bump the score for messages which come from unexpected servers:

  header LIST_MIRROR_RECEIVED eval:check_list_mirror_received()
  describe LIST_MIRROR_RECEIVED Received does not match expected
  score LIST_MIRROR_RECEIVED 10

Bump the score for messages which Bcc the list:

  header LIST_MIRROR_BCC eval:check_list_mirror_bcc()
  describe LIST_MIRROR_BCC Mailing list was Bcc-ed
  score LIST_MIRROR_BCC 5

DESCRIPTION
This plugin contains common functions to provide accurate, ongoing mirrors of existing mailing lists. It may be used independently of the rest of public-inbox, it does not depend on any public-inbox code, only SpamAssassin.

ADMINISTRATOR SETTINGS
This plugin has no administrator settings, aside from the need to load it via "loadplugin" and enabling user rules "allow_user_rules 1"

USER SETTINGS

list_mirror HEADER HEADER_VALUE HOSTNAME_GLOB [LIST_ADDRESS]
    Declare a list based on an expected "HEADER" matching "HEADER_VALUE" coming from "HOSTNAME_GLOB". "LIST_ADDRESS" is optional, but may specify the address of the mailing list being mirrored.

    "List-ID" is the recommended value of "HEADER" as most mailing lists support it.

    An example of "HEADER_VALUE" is "<foo.example.org>" if "HEADER" is "List-ID".

    As of public-inbox 2.0, using "List-ID" as the "HEADER" and a "HEADER_VALUE" contained by angle brackets (<list-id>), matching is done in accordance with RFC 2919 <https://tools.ietf.org/html/rfc2919>. That is, "HEADER_VALUE" will be a case-insensitive substring match and ignore the optional description "phrase" as documented in RFC 2919.

    All other "HEADER" values use exact matches for backwards-compatibility.

    "HOSTNAME_GLOB" may be a wildcard match for machines where mail can come from or an exact match.

    "LIST_ADDRESS" is only required if using the "check_list_mirror_bcc" eval rule

    "list_mirror" may be specified multiple times.

EVAL FUNCTIONS

header LIST_MIRROR_RECEIVED eval:check_list_mirror_received()
    The "check_list_mirror_received" function implements "Received:" header checking based on "list_mirror" configuration values.

    This rule can be used to score and prevent messages from being injected directly into your mirror without going through the expected mailing list servers:

      ifplugin PublicInbox::SaPlugin::ListMirror
        header LIST_MIRROR_RECEIVED eval:check_list_mirror_received()
        describe LIST_MIRROR_RECEIVED Received does not match expected
      endif

header LIST_MIRROR_BCC eval:check_list_mirror_bcc()
    The "check_list_mirror_bcc" function checks for Bcc to mailing lists declared with a "LIST_ADDRESS" via "list_mirror"

    Spammers will often Bcc mailing lists; while it's uncommon and strange for valid messages to be Bcc-ed to any public mailing list. This rule allows users to assign a score to Bcc-ed messages

      ifplugin PublicInbox::SaPlugin::ListMirror
        header LIST_MIRROR_BCC eval:check_list_mirror_bcc()
        describe LIST_MIRROR_BCC Mailing list was Bcc-ed
      endif

CONTACT
Feedback welcome via plain-text mail to <mailto:meta@public-inbox.org>

The mail archives are hosted at <https://public-inbox.org/meta/> and <http://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/meta/>

COPYRIGHT
Copyright (C) all contributors <mailto:meta@public-inbox.org>

License: AGPL-3.0+ <http://www.gnu.org/licenses/agpl-3.0.txt>

SEE ALSO
Mail::SpamAssassin::Conf