Bisher habe ich es über öffentliche (shared folders) Ordner gehändelt um SpamAssassin zu sagen, was Spam und was kein Spam ist. Der Nachteil besteht darin, dass viele Mail (Anfänger) und auch Mail Clients damit nicht richtig klarkommen.

Evolution beispielsweise will keine öffentliche Ordner (seit irgendeiner Version, mehr) anzeigen, wenn Cyrus die Option

unixhierarchysep: yes

nutzt. Sie lassen sich einfach nicht mehr einblenden.

Durch Zufall fand ich diese Seite, wo sich ein Script finden lässt, dass alle (Imap) User Unterverzeichnisse absucht, nach den Ordnern _Ist-doch-Spam und _Ist-kein-Spam.

Findet das Script eben diese, werden die darin enthaltenen Mails ‚erlernt‘ und dann entfernt.

Da das original Script auf meiner amavis-cyrus Installation so nicht läuft, habe ich eine angepasste Version hier bereitgestellt. Die wichtigsten Parameter finden sich in der /etc/mail/sa-learn-cyrus.conf:

spam folder relative to INBOX (cyrus nomenclature: e.g. ‘junk.Spam’)

spam_folder = ‘_Ist-doch-Spam’

ham folder relative to INBOX (cyrus nomenclature: e.g. ‘junk.Ham’)

ham_folder = ‘_Ist-kein-Spam’

remove spam after feeding it to SA

remove_spam = yes

remove ham after feeding it to SA

remove_ham = no

path to sa-learn

learn_cmd = /usr/bin/sa-learn

SA user and group

user = amavis group = amavis

if base_dir has subdivisions with initial letters of mailbox names

set initial_letter = yes (default), otherwise choose no

Example for joe’s mailbox:

yes: <base_dir>/j/user/joe/

no: </base_dir><base_dir>/user/joe/

initial_letter = no

imap command to purge mail messages

purge_cmd = /usr/sbin/ipurge

</base_dir>

Diese Parameter habe ich anpassen müssen.

Des weiteren musste ich die Pfade und Ordner in der Datei /etc/cron.hourly/sa-learn-cyrus anpassen:

[mailbox]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
    'mailbox:include_list'          => 'hjb',
    'mailbox:include_regexp'        => '.*',
    'mailbox:exclude_list'          => '1',
    'mailbox:exclude_regexp'        => '',
    'mailbox:spam_folder'           => '_Ist-doch_Spam',
    'mailbox:remove_spam'           => 'no',
    'mailbox:ham_folder'            => '_Ist-kein-Spam',
    'mailbox:remove_ham'            => 'no',

    # [sa]
    'sa:site_config_path'           => '/etc/mail/spamassassin',
    'sa:prefs_file'                         => '/etc/mail/spamassassin/local.cf',
    'sa:learn_cmd'                          => '/usr/bin/sa-learn',
    'sa:user'                                       => 'mail',
    'sa:group'                                      => 'mail',
    'sa:tokens'                                     => '_toks',
    'sd:debug'                                      => 'no',

Nun wird dieses Script jede Stunde aufgerufen.