Puppet Class: spamassassin

Defined in:
modules/spamassassin/manifests/init.pp

Overview

Class: spamassassin

This class installs & manages SpamAssassin, spamassassin.apache.org/

Parameters

required_score

The minimum required score to mark a message as spam. Defaults to 5.0

max_children

Number of spamd workers to fork. Defaults to 8.

nicelevel

Nice level to run spamd as. Defaults to 10.

use_bayes

Use Bayesian classifier. Defaults to 1.

bayes_auto_learn

Bayesian classifier auto-learning. Defaults to 1.

short_report_template

Short-format report template. Defaults to false.

trusted_networks

Networks for which to trust Received headers from. Defaults to [].

spamd_user

The user to run spamd as. Defaults to “debian-spamd”, which is created if non-existent.

spamd_group

The group to run spamd as. Defaults to “debian-spamd”, which is created if non-existent.

custom_scores

Provide custom scores to existing tests. Hash of score => value, defaults to an empty hash.

debug_logging

Enable debug logging. Defaults to none. Example: “–debug spf” See: wiki.apache.org/spamassassin/DebugChannels

proxy

Enable proxy for sa-update. Useful for hosts without direct internet acces. Defaults to undef

Parameters:

  • required_score (Any) (defaults to: '5.0')
  • max_children (Any) (defaults to: 8)
  • nicelevel (Any) (defaults to: 10)
  • use_bayes (Any) (defaults to: 1)
  • bayes_auto_learn (Any) (defaults to: 1)
  • short_report_template (Any) (defaults to: false)
  • trusted_networks (Any) (defaults to: [])
  • spamd_user (Any) (defaults to: 'debian-spamd')
  • spamd_group (Any) (defaults to: 'debian-spamd')
  • custom_scores (Any) (defaults to: {})
  • debug_logging (Any) (defaults to: '')
  • proxy (Any) (defaults to: undef)


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'modules/spamassassin/manifests/init.pp', line 48

class spamassassin(
    $required_score = '5.0',
    $max_children = 8,
    $nicelevel = 10,
    $use_bayes = 1,
    $bayes_auto_learn = 1,
    $short_report_template = false,
    $trusted_networks = [],
    $spamd_user  = 'debian-spamd',
    $spamd_group = 'debian-spamd',
    $custom_scores = {},
    $debug_logging = '',
    $proxy=undef,
) {
    package { 'spamassassin':
        ensure => present,
    }

    require_package('libmail-spf-perl', 'libmail-dkim-perl')

    file { '/etc/spamassassin/local.cf':
        content => template('spamassassin/local.cf'),
        owner   => 'root',
        group   => 'root',
        mode    => '0444',
        require => Package['spamassassin'],
    }

    file { '/etc/default/spamassassin':
        content => template('spamassassin/spamassassin.default.erb'),
        owner   => 'root',
        group   => 'root',
        mode    => '0444',
        require => Package['spamassassin'],
    }

    service { 'spamassassin':
        ensure    => running,
        require   => [
            File['/etc/default/spamassassin'],
            File['/etc/spamassassin/local.cf'],
            Package['spamassassin'],
        ],
        subscribe => [
            File['/etc/default/spamassassin'],
            File['/etc/spamassassin/local.cf']
        ],
    }

    nrpe::monitor_service { 'spamd':
        description  => 'spamassassin',
        nrpe_command => '/usr/lib/nagios/plugins/check_procs -w 1:20 -c 1:40 -a spamd',
        notes_url    => 'https://wikitech.wikimedia.org/wiki/Mail#SpamAssassin',
    }

    # If we need a proxy to reach the internet, we need a slightly modified
    # crontab entry
    if $proxy {
        file { '/etc/cron.daily/spamassassin':
            ensure  => present,
            owner   => 'root',
            group   => 'root',
            mode    => '0755',
            content => template('spamassassin/sa-update-cron.erb'),
        }
    }
}