Make kopano-spamd more flexible (configurable spam header)



  • Hi,

    it would be nice, if I could configure kopano-spamd more flexible to use it with other spamfilters than spamassasin. I currently use rspamd which is using “X-Spam: Yes” instead of “X-Spam-Flag: YES” in mail headers. I found the check in the code and edited it manually for my needs.

    https://stash.kopano.io/projects/KC/repos/kopanocore/browse/ECtools/spamd/kopano_spamd/init.py#70
    I replaced X-Spam-Flag with X-Spam and “YES” with “Yes” ;) I hope someone could make it configurable in spamd.cfg.

    Marcus


  • Kopano

    Hi @zonk ,

    if you are willing to work on this you can find contributing information at https://stash.kopano.io/projects/KC/repos/kopanocore/browse/CONTRIBUTING.md.



  • i will try it. sadly i’m not a dev.



  • Just ran into this same issue. Sent a patch contribution which implements this flexibilty.


  • Kopano

    Hi @tph2018 ,

    thanks for your patch. I’ve asked one of our developers to take a look at you patch files and then open a pr internally.

    Ticket for status updates is https://jira.kopano.io/browse/KC-1120.



  • Hi there

    i have a question about this.
    I installed rspamd too and it works but i think kopano-spamd not comunicating with rspamd. Especially move to junk

    is this the only thing that must be do for working ?

    change the setting in python for SPAM Flag
    (note! if do a update you lost it)

    /usr/lib/python2.7/dist-packages/kopano_spamd/__init__.py
    /usr/lib/python3/dist-packages/kopano_spamd/__init__.py

    change booth files from:
    'header_tag': Config.string(default="x-spam-flag")
    to:
    'header_tag': Config.string(default="x-spam")

    and
    (not header or header.upper() != 'YES')):
    to:
    (not header or header.upper() != 'Yes')):


  • Kopano

    @noise Actually kopano-spamd is not communicating to whatever spam daemon you are using.

    Kopano-spamd just create eml files of the items that are put in the junk-folder (default location : /var/lib/kopano/spamd/spam)
    You need to create something for you spam daemon (e.g. https://github.com/bkram/inotify-spamlearn)

    You do not need to change the init.py file as header_tag is an config option at the moment just add/change it in /etc/kopano/spamd.cfg
    The last change will never work as the header is all in uppercase so it will never match your change

    If really needed the old spamd is still accessible here https://stash.kopano.io/projects/KSC/repos/kopano-spamd/browse but this was just created as an prove of concept and is not supported.
    But the benefit can be that you the command added on learncmd in the cfg is just used to learn the spam to any spam daemon you are using without creating a separate script



  • @robing said in Make kopano-spamd more flexible (configurable spam header):

    learncmd in the cfg

    do you mean spamcmd

    i try it and set:

    [spam]
    spamcmd = rspamc learn_spam spam/
    hamcmd = rspamc learn_ham ham/
    

    bu t i hangs with python can’t find the modules:
    os
    subprocess
    threading

    the other modules i install with:
    apt install python-pip
    pip install logging configparser inotify

    ModuleNotFoundError: No module named 'inotify'
    

    but notify is installed



  • @noise i had the same issue as you that it could not find the module.
    The reason as well the solution are described here: define-ham-and-spam-for-spamassassin



  • @BMWfan thanks

    I installed now on my ubuntu 18.04:

    apt-get install python3-setuptools
    apt install python3-pip
    pip3 install inotify
    

    inotify-spamlearn.service is running now but i got more errors:

    ==> /var/log/syslog <==
    Jan 16 09:08:49 smtp inotify-spamlearn.py[15363]: cannot stat file spam/
    Jan 16 09:08:49 smtp inotify-spamlearn.py[15363]: INFO Processing [Inotify] /var/lib/kopano/spamd/spam/0ACAA615C3524AD992F105A5E8B571EE.eml:
    Jan 16 09:08:49 smtp inotify-spamlearn.py[15363]: INFO Removing file: /var/lib/kopano/spamd/spam/0ACAA615C3524AD992F105A5E8B571EE.eml
    
    ==> /var/log/kopano/spamd.log <==
    2019-01-16 09:08:49,381 - spamd - ERROR - Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/kopano/log.py", line 103, in log_exc
        try: yield
      File "/usr/lib/python3/dist-packages/kopano_spamd/__init__.py", line 83, in update
        self.learn(item, searchkey, True)
      File "/usr/lib/python3/dist-packages/kopano_spamd/__init__.py", line 105, in learn
        gid = grp.getgrnam(self.sagroup).gr_gid
    KeyError: 'getgrnam(): name not found: amavis'
    

    is amavis needed !? and comes these errors because it is not installed ?



  • @noise i would like to say it depends on your infrastructure. Is amavis in use in yours?
    Which sa_group is defined in your /etc/kopano/spamd.cfg?



  • @BMWfan no amavis is not in use and sa_group is uncommented in spamd.cfg. only rspamd is installed


Log in to reply