# Please don't modify this file as your changes might be overwritten with
# the next update.
#
# You can modify 'local.d/fuzzy_check.conf' to add and merge
# parameters defined inside this section
#
# You can modify 'override.d/fuzzy_check.conf' to strictly override all
# parameters defined inside this section
#
# See https://rspamd.com/doc/faq.html#what-are-the-locald-and-overrided-directories
# for details
#
# Module documentation can be found at  https://rspamd.com/doc/modules/fuzzy_check.html

fuzzy_check {
  min_bytes = 1k; # Since small parts and small attachments causes too many FP
  timeout = 2s;
  retransmits = 1;
  rule "rspamd.com" {
    algorithm = "mumhash";
    servers = "round-robin:fuzzy1.rspamd.com:11335,fuzzy2.rspamd.com:11335";
    encryption_key = "icy63itbhhni8bq15ntp5n5symuixf73s1kpjh6skaq4e7nx5fiy";
    symbol = "FUZZY_UNKNOWN";
    mime_types = ["*"];
    # Number of hits at which the normalized score reaches ~1.0
    # Score formula: tanh(e * hits / hits_limit)
    hits_limit = 20.0;
    read_only = yes;
    skip_unknown = yes;
    short_text_direct_hash = true; # If less than min_length then use direct hash
    min_length = 64; # Minimum words count to consider shingles
    fuzzy_map = {
      FUZZY_DENIED {
        hits_limit = 20.0;
        flag = 1;
      }
      FUZZY_PROB {
        hits_limit = 10.0;
        flag = 2;
      }
      FUZZY_WHITE {
        hits_limit = 2.0;
        flag = 3;
      }
    }
  }
  # Example HTML-only fuzzy rule. Uncomment and adjust the settings below if you
  # want to maintain HTML structure hashes on a dedicated fuzzy storage.
  # rule "html_structure_example" {
  #   servers = "html-fuzzy.example.com:11335";
  #   checks = {
  #     text { enabled = false; }    # disable text hashing for this rule
  #     html {
  #       enabled = true;
  #       min_html_tags = 20;        # require substantial HTML before hashing
  #       html_weight = 1.0;         # adjust weight of HTML matches if needed
  #     }
  #     image { enabled = false; }   # optional: do not hash images
  #   }
  #   symbol = "FUZZY_HTML_STRUCTURE";
  #   hits_limit = 25.0;
  #   fuzzy_map = {
  #     FUZZY_HTML_SPAM {
  #       flag = 200;
  #       hits_limit = 25.0;
  #     }
  #   }
  # }
  # Include dynamic conf for the rule
  .include(try=true,priority=5) "${DBDIR}/dynamic/fuzzy_check.conf"
  .include(try=true,priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/fuzzy_check.conf"
  .include(try=true,priority=10) "$LOCAL_CONFDIR/override.d/fuzzy_check.conf"
}
