Mail::...Network(3pm)

πŸ“¦ version 4.0.2+svn1935691, in ubuntu stonking

✨ NAME ✨

Mail::SpamAssassin::Plugin::NeuralNetwork β€” bestie, this is the SpamAssassin plugin that checks your mail with a Fast Artificial Neural Network library πŸ§ πŸ’–

(yes, the manual page is literally called Mail::...Network(3pm) and yes, bestie, that is giving mysterious. anyway.)


🌸 SYNOPSIS 🌸

loadplugin Mail::SpamAssassin::Plugin::NeuralNetwork

like. that's it. that's the whole setup. iconic πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

This plugin checks emails using a Neural Network algorithm. no cap, an actual little brain doing vibe checks on your inbox 🧠✨


πŸ’€ CAVEATS πŸ’€

⚠️ okay this part is IMPORTANT, so listen up bestie:

The SpamAssassin learning subsystem routes all training through the Bayes scanner infrastructure. Which means πŸ‘ Mail::SpamAssassin::Plugin::Bayes must be loaded, and use_bayes 1 must be set, for this plugin's training to actually get triggered. no bayes, no training. it's giving "the group chat doesn't work without the group." 😭

Here's all the knobs you can turn, one by one πŸŽ€

  • use_neuralnetwork (0|1) β€” default: 1. Whether to use Neural Network, if it is available. fr fr.
  • neuralnetwork_data_dir dirname β€” default: undef. Where the NeuralNetwork plugin will store its data. πŸ—„οΈ
  • neuralnetwork_min_text_len n β€” default: 256. Minimum number of characters of visible text required to run prediction or learning on a message. too short? not today, message. βœ‹
  • neuralnetwork_min_word_len n β€” default: 4. Minimum token length considered when building the vocabulary and feature vectors.
  • neuralnetwork_max_word_len n β€” default: 24. Maximum token length considered when building the vocabulary and feature vectors.
  • neuralnetwork_vocab_cap n β€” default: 10000. Maximum number of vocabulary terms to retain; least-frequent terms are pruned when exceeded. byeeee to the flops 🫢
  • neuralnetwork_cache_ttl n β€” default: 300. Time-to-live in seconds for the in-memory vocabulary and model caches. Set to 0 to disable caching.
  • neuralnetwork_min_spam_count n β€” default: 100. Minimum number of spam messages in the vocabulary required to enable prediction.
  • neuralnetwork_min_ham_count n β€” default: 100. Minimum number of ham messages in the vocabulary required to enable prediction.
  • neuralnetwork_spam_threshold f β€” default: 0.6. Prediction values above this threshold are considered spam.
  • neuralnetwork_ham_threshold f β€” default: 0.4. Prediction values below this threshold are considered ham.
  • neuralnetwork_learning_rate f β€” default: 0.1. Learning rate used by the underlying FANN network during incremental training. it's learning, we love a growth arc 🌱
  • neuralnetwork_momentum f β€” default: 0.1. Momentum used for training updates.
  • neuralnetwork_train_epochs n β€” default: 50. Number of training epochs to perform when learning a single message.
  • neuralnetwork_train_algorithm β€” FANN_TRAIN_QUICKPROP|FANN_TRAIN_RPROP|FANN_TRAIN_BATCH|FANN_TRAIN_INCREMENTAL β€” default: FANN_TRAIN_RPROP. Algorithm used by the Fann neural network when training; might increase speed depending on the data volume. πŸƒβ€β™€οΈπŸ’¨
  • neuralnetwork_lock_timeout n β€” default: 10. Maximum number of seconds to wait for the exclusive training lock before giving up and skipping the learn operation. Set to 0 to wait indefinitely. (yes, indefinitely. main character energy but make it a mutex 😳)
  • neuralnetwork_rprop_delta_max n β€” default: 0.5. Delta value to apply to the RPROP training replay loop.
  • neuralnetwork_retrain_interval n β€” default: 100. Number of successful learn_message calls between forced full retrains of the neural network from the persisted vocabulary. After each retrain, the incrementally-trained network is replaced with the freshly rebuilt one. Set to 0 to disable periodic retraining and keep online learning only.
  • neuralnetwork_stopwords words β€” default: "the and for with that this from there their have be not but you your". Space-separated list of stopwords to ignore when tokenizing text. the it-girls of words that don't get a seat at the table πŸ’…
  • neuralnetwork_autolearn 0|1 β€” default: 0. When SpamAssassin declares a message a clear spam or ham during the message scan, and launches the auto-learn process, the message is autolearned as spam/ham in the same way as during the manual learning. Value 0 for this option disables the auto-learn process for this plugin.
  • neuralnetwork_autolearn_vocab_only 0|1 β€” default: 0. When set to 1 and auto-learn is enabled, autolearned messages update the vocabulary and training buffer but skip FANN model training and saving. This avoids slow I/O operations and temporary files during spamd processing. The model is rebuilt from the accumulated vocabulary on the next manual sa-learn run. ngl this one is the "do it later" queen πŸ‘‘
  • neuralnetwork_dsn β€” default: none. The DBI dsn of the database to use.
    • For SQLite, the database will be created automatically if it does not already exist; the supplied path and file must be read/writable by the user running spamassassin or spamd.
    • For MySQL/MariaDB or PostgreSQL, see sql-directory for database table creation clauses.
    • You will need to have the proper DBI module for your database. For example DBD::SQLite, DBD::mysql, DBD::MariaDB or DBD::Pg.
    • Minimum required SQLite version is 3.24.0 (available from DBD::SQLite 1.59_01).
    • Examples:
neuralnetwork_dsn dbi:SQLite:dbname=/var/lib/spamassassin/NeuralNetwork.db
  • neuralnetwork_username β€” default: none. The username that should be used to connect to the database. Not used for SQLite.
  • neuralnetwork_password β€” default: none. The password that should be used to connect to the database. Not used for SQLite. πŸ™ˆ shhh
  • neuralnetwork_min_vocab_hits n β€” default: 10. Minimum number of tokens in the email that must exist in the vocabulary for prediction to run.

πŸ”₯ EVAL RULES πŸ”₯

these are the little rules you drop into your config, and they SLAP πŸ’…βœ¨

  • check_neuralnetwork_spam() β€” Body eval rule. Returns true when the neural network prediction score exceeds neuralnetwork_spam_threshold (default 0.6).
  • check_neuralnetwork_ham() β€” Body eval rule. Returns true when the neural network prediction score is below neuralnetwork_ham_threshold (default 0.4).
  • check_neuralnetwork(low, high) β€” Body eval rule accepting two optional floating-point arguments. Returns true when the raw prediction score falls within the inclusive range [low, high]. Defaults: low = 0.0, high = 1.0.

Use this rule to define finer-grained confidence tiers. πŸ‘‘ confidence TIERS, bestie, we love a ranking system:

body      NN_CONFIDENT_SPAM  eval:check_neuralnetwork(0.75, 1.0)
describe  NN_CONFIDENT_SPAM  Email classified as spam with high confidence by Neural Network
score     NN_CONFIDENT_SPAM  2.0

body      NN_PROBABLE_SPAM   eval:check_neuralnetwork(0.55, 0.75)
describe  NN_PROBABLE_SPAM   Email classified as probable spam by Neural Network
score     NN_PROBABLE_SPAM   1.0

body      NN_PROBABLE_HAM    eval:check_neuralnetwork(0.0, 0.4)
describe  NN_PROBABLE_HAM    Email classified as ham by Neural Network
score     NN_PROBABLE_HAM    -1.0

and that's the whole page, bestie! πŸŽ€ this all came from the User Contributed Perl Documentation, running on perl v5.40.1, dated 2026-07-23, and the page signs off as Mail::...Network(3pm) πŸŒˆπŸ¦‹ go forth and let the neural net read your mail (respectfully) πŸ’–πŸ«Ά

πŸ“¦ where this page comes from