Hallo, auf dem Dashboard gibt es eine Zähler für Spam Learned.

Ich habe in der Doku nicht dazu gefunden:
Wie lernt das System Spam Mails? Reicht es aus die Mail in Junk zu schieben?
Muss die Mail weitergeleitet werden?
Oder lernt es nur durch den Upload der Mail in der Rspam GUI/Config Seite.

Danke schonmal!

4 months later

Würde mich auch interessieren! Bislang tut sich da nichts.

VG

a month later

You might want to check out grommunio-antispam in the version 3.2:

It provides a new service called grommunio-spam-run, which you can run on-demand or use the timer service for automated processing: grommunio-spam-run.timer.

It classifies all mails in the users' "Junk E-Mail" folder as Spam and cleans them automatically from the folder after the classification. Please note: The mails classified are deleted, so you want to make sure to inform your administrators/users that by using this service, Junk Mails are not only classified but also cleaned up.

  • crpb replied to this.

    Am I blind or is that service created by something else?

      crpb

      Danke für den Hinweis. Angesprochenes Feature ist im Paket grommunio-antispam ab der Version "grommunio-antispam-3.2-<distro>.6.1" enthalten.

      • crpb replied to this.

        mwilliams

        Jo, sieht schon besser aus.
        Ich schau mir ja nur den Code an aber irgendwie macht mich die nächste Baustelle stutzig.
        Wer hat denn sqlite3 installiert? Das einzige was mit Core verfügbar ist schimpft sich /usr/bin/sqlite3_analyzer.

        EDIT: Eine frage zu der Verwirklichung:
        Könnte ich quasi mit

        echo 'select message_id,mid_string from messages where parent_fid=0xb;' | sqlite3 "${MAILDIR}/exmdb/exchange.sqlite3" -tabs -noheader | while read -r TRASHMSG; do
          MSGID=$(echo "${TRASHMSG}" | awk '{ print $1 }')
          /usr/libexec/gromox/delmsg -d "${MAILDIR}" -f 0x17 "${MSGID}"
        done

        die Gelöschten Elemente leeren? ;P

          5 days later

          Installieren mit: zypper in sqlite3, benötigt man sowieso wenn man in den Datenbanken was ändern oder nachsehen muss.

          • crpb replied to this.

            WalterH
            Jo danke Walter :-).
            Ging eher darum das sqlite3 als Abhängigkeit gesetzt wird für das Paket grommunio-antispam damit man gar nicht drüber nachdenken muss.
            Ich denke @mwilliams hat den wink mit dem Zaunpfahl schon verstanden.

            Wo wird sqlite3 direkt aufgerufen?
            Die Programme verwenden die Sqlite3 Bibliotheken, die Programme sollten das Executable nicht benötigen. Nur die Admins verwenden sqlite3.

            grommunio-antispam-3.2-lp153.6.1.x86_64.rpm
            Datei /usr/sbin/grommunio-spam-run.sh Zeile 20

               18
               19 echo "${MYSQL_QUERY[@]}" | ${MYSQL_CMD[@]} | while read -r USERNAME MAILDIR ; do
            >> 20   echo 'select message_id,mid_string from messages where parent_fid=0x17;' | sqlite3 "${MAILDIR}/exmdb/exchange.sqlite3" -tabs -noheader | while read -r SPAMMSG; do
               21         MSGFILE=$(echo "${SPAMMSG}" | awk '{ print $2 }')

            Ich ging davon aus das die auch benutzt wird und laut rpm nur libsqlite3.so

            cb@asterix ~/denv/Downloads % rpm -ivh grommunio-antispam-3.2-lp153.6.1.x86_64.rpm |& grep sqlite3
                    libsqlite3.so.0()(64bit) is needed by grommunio-antispam-3.2-lp153.6.1.x86_64

            Das ist natürlich besch... wenn die Abhängigkeit fehlt. Bei den Entwicklern ist sqlite3 natürlich installiert. Vermutlich deshalb übersehen.

            • crpb replied to this.

              WalterH Bei den Entwicklern ist sqlite3 natürlich installiert. Vermutlich deshalb übersehen.

              Exakt!

              crpb Ich gehe davon aus, das es funktioniert. Nur muss man dann den Cleaner laufen lasse, da die Elemente nur aus der Datenbank gelöscht werden aber auf der Disk bleiben, wie auch bei allen anderen Löschvorgängen.
              for i in /var/lib/gromox/user/*/*; do /usr/libexec/gromox/cleaner -v -d "$i"; done

              • crpb replied to this.

                WalterH

                Aja, ich werde es mal bei gelegenheit in meiner Test-VM laufen lassen.
                Apropos Cleanup hab ich die lösung ja schon in Bunt bei mir im Standard-Environment. :P

                https://gist.github.com/crpb/bb414090acc4a4db5715c2a4116cad1d

                # vim: filetype=sh
                
                # FARBSPIELE #
                RED='\033[0;31m'
                GREEN='\033[0;32m'
                YELLOW='\033[0;33m'
                BLUE='\033[0;34m'
                NC='\033[0m' # No Color
                function red { printf "${RED}$@${NC}\n" ; } 
                function green { printf "${GREEN}$@${NC}\n" ; } 
                function yellow { printf "${YELLOW}$@${NC}\n" ; } 
                function blue { printf "${BLUE}$@${NC}\n" ; } 
                
                # Grommunio Konsolen Helferlein
                
                # Gromox - Cleanup already deleted files
                grom_cleanup() {
                  local maildir
                  MESSAGE="\n\n\tTo really cleanup use: "$(blue "grom_cleanup")" "$(red "clean")"\n"
                  SWITCH="-n";
                  if [[ "$1" = "clean" ]]; then SWITCH="";MESSAGE=""; fi
                  for user in $(grom_users); do
                    yellow "User: ${user}:"
                    maildir="$(grommunio-admin user query --filter username="${user}" maildir)"
                    /usr/libexec/gromox/cleaner "${SWITCH}" -d "${maildir}" |grep --color=always -e "^" -e "[^ ]*[0-9](M|G|k)B" 
                  done
                  echo -e "$MESSAGE"
                }
                
                # Grommunio-Users
                # List Domains
                grom_doms() { grommunio-admin domain list |awk '{print $2}' ; } 
                # List User
                grom_users() {
                  local doms
                  if [[ "$#" -ge 1 ]]; then
                    doms=$(grep "^${1}" <<< "$(grom_doms)")
                  else
                    doms=$(grom_doms)
                  fi  
                  for dom in $doms; do \
                    grommunio-admin user query --format json-structured | \ 
                    jq -r '.[]|select(.username|endswith("'"${dom}"'"))|.username'
                  done
                }

                Was dann noch fehlt, passt aber nicht zu den Thread, man muss gelegentlich die Datenbanken verkleinern, funktioniert z.B. so für die erste Domain Datenbank, für die User Datenbanken so ähnlich, nur anderer Path:

                systemctl stop gromox-http
                sqlite3 /data/gromox/domain/1/exmdb/exchange.sqlite3 'VACUUM;'
                systemctl start gromox-http

                • crpb replied to this.

                  WalterH
                  Ei super. Vielen Dank! Also einfach wie ne steinalte Postgres behandeln *haha*

                  EDIT: Nagut... es geht ja viel einfacher...

                  grom_cleanup clean 
                  /usr/libexec/gromox/delmsg -d /var/lib/gromox/user/*/* -f 0xb
                  for db in /var/lib/gromox/user/*/*/exmdb/exchange.sqlite3; do ls -l "$db"; sqlite3 "$db" 'VACUUM;'; ls -l "$db"; done
                  9 days later

                  mwilliams

                  Wie ist das denn eigtl. mit dem gutem Metzger-Schinken (HAM) und lernen das der doch ganz gut war?
                  Ist da auch irgendwas geplant? Den Ordner gibt's ja standardmäßig so nicht.

                  2 months later

                  Könnte man das Löschen der Elemente als optional konfigurieren?
                  Wir haben dann doch immer mal wieder false positives die wir erst nach einiger Zeit finden. Wenn ich das Spam-lernen automatisch aufsetze, dann würden diese Email gelöscht werden.

                  © 2020-2024 grommunio GmbH. All rights reserved. | https://grommunio.com | Data Protection | Legal notice