---
name: "PublicInbox::SaPlugin::ListMirror"
section: "3pm"
platform: "linux"
package: "perl-publicinbox"
version: "2.1.0-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/PublicInbox::SaPlugin::ListMirror"
---

# PublicInbox::SaPlugin::ListMirror(3pm)

SpamAssassin plugin for mailing list mirrors

## 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
