#!/bin/sh

@%@UCRWARNING=# @%@

# Univention Spamassassin
#  learn script
#
# SPDX-FileCopyrightText: 2004-2025 Univention GmbH
# SPDX-License-Identifier: AGPL-3.0-only

SA_LEARN="/usr/bin/sa-learn"

if [ ! -f /var/lib/amavis/.spamassassin/bayes_toks ]; then
	touch /var/lib/amavis/.spamassassin/bayes_toks
	chown amavis:amavis /var/lib/amavis/.spamassassin/bayes_toks
	chmod 600 /var/lib/amavis/.spamassassin/bayes_toks
fi

@!@
# flake8: noqa
spamFolder = configRegistry.get("mail/dovecot/folder/spam") or "Spam"
hamFolder = configRegistry.get("mail/dovecot/folder/ham") or "Ham"

if spamFolder.lower() == "none":
    print("# learning from spam folder disabled via mail/dovecot/folder/spam")
else:
    print("# learing from spam folder %s" % spamFolder)
    spamFolder = spamFolder.strip("/").replace("/", ".")

if hamFolder.lower() == "none":
    print("# learing from ham folder disabled via mail/dovecot/folder/ham")
else:
    print("# learing from ham folder %s" % hamFolder)
    hamFolder = hamFolder.strip("/").replace("/", ".")

base_folder = "/var/spool/dovecot/private/"
user_folder = "\\*/\\*/Maildir/."
# find RFC 6154 flagged \Junk folders, add them if they are not there anyway
junk = "" if spamFolder.lower() == "none" else "-wholename %s%s" % (user_folder, spamFolder)
for key, value in configRegistry.items():
    if key.startswith("mail/dovecot/mailboxes/special/") and value == "\\Junk":
        _folder = key.split("/")[-1]
        if _folder and _folder != spamFolder:
            _folder = _folder.strip("/").replace("/", ".")
            if junk:
                junk += " -o "
            junk += "-wholename \\*/\\*/Maildir/.%s" % _folder

if junk:
    print('''
find %(base)s \\( %(junk)s \\) \\
	-exec $SA_LEARN --dbpath /var/lib/amavis/.spamassassin --spam {} \\;
''' % {"base": base_folder, "junk": junk})

if hamFolder.lower() != "none":
    print('''find %(base)s -wholename %(user)s%(hamFolder)s \\
	-exec $SA_LEARN --dbpath /var/lib/amavis/.spamassassin --ham {} \\;
''' % {"base": base_folder, "user": user_folder, "hamFolder": hamFolder})
@!@
