MMCT TEAM
Server IP : 111.118.215.189  /  Your IP : 18.117.158.174
Web Server : Apache
System : Linux md-in-83.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User : a1673wkz ( 2475)
PHP Version : 8.2.25
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /usr/share/emacs/24.3/lisp/gnus/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //usr/share/emacs/24.3/lisp/gnus/spam.elc
;ELC
;;; Compiled by mockbuild@buildfarm06-new.corp.cloudlinux.com on Fri Oct 11 10:10:29 2024
;;; from file /builddir/build/BUILD/emacs-24.3/lisp/gnus/spam.el
;;; in Emacs version 24.3.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(byte-code "\300\301!\204
\302\301\303\304B\"\210\305\306!\210\305\307!\210\305\310!\210\305\311!\210\312\313\314\"\210\312\315\316\"\210\312\317\316\"\210\312\320\316\"\210\312\321\316\"\210\312\322\323\"\210\312\324\323\"\210\312\325\323\"\210\312\326\323\"\210\312\327\330\"\207" [fboundp declare-function defalias macro #[(&rest r) "\300\207" [nil] 1] require message gnus-sum gnus-uu gnus autoload query-dig "dig" spam-report-gmane "spam-report" spam-report-gmane-spam spam-report-gmane-ham spam-report-resend gnus-registry-group-count "gnus-registry" gnus-registry-get-id-key gnus-registry-set-id-key gnus-registry-handle-action dns-query "dns"] 4)
#@98 List of spam.el backends with all the pertinent data.
Populated by `spam-install-backend-super'.
(defvar spam-backends nil (#$ . 1208))
(byte-code "\300\301\302\303\304\305\306\307\306\310&	\210\311\312\313\314\315\316\306\301&\210\311\317\320\321\315\322\306\301&\210\311\323\324\325\315\326\306\301&\210\311\327\302\330\315\326\306\301&\210\311\331\302\332\315\326\306\301&\210\311\333\302\334\315\326\306\301&\210\311\335\324\336\315\326\306\301&\210\311\337\302\340\315\326\306\301&\210\311\341\302\342\315\326\306\301&\210\311\343\302\344\315\326\306\301&\210\311\345\346\347\315\350\306\301&\210\311\351\352\353\315\350\306\301&\210\311\354\324\355\315\326\306\301&\210\311\356\302\357\315\326\306\301&\210\311\360\302\361\315\326\306\301&\210\311\362\302\363\315\364\306\301&\210\311\365\302\366\315\326\306\301&\210\311\367\302\370\315\326\306\301&\210\311\371\302\372\315\326\306\301&\210\311\373\302\374\315\326\306\301&\210\311\375\302\376\315\326\306\301&\210\311\377\302\201@\315\326\306\301&\210\311\201A\302\201B\315\326\306\301&\210\311\201C\302\201D\315\326\306\301&\210\311\201E\302\201F\315\326\306\301&\210\311\201G\302\201H\315\326\306\301&\210\311\201I\302\201J\315\326\306\301&\210\311\201K\302\201L\315\326\306\301&\210\311\201M\302\201N\315\326\306\301&\210\311\201O\302\201P\315\326\306\301&\210\311\201Q\302\201R\315\326\306\301&\210\311\201S\302\201T\315\326\306\301&\210\311\201U\302\201V\315\326\306\301&\210\311\201W\302\201X\315\326\306\301&\210\311\201Y\201Z\201[\306\301\315\326&\210\311\201\\\201]\201^\315\201_\306\301&\210\311\201`\201a\201b\315\201c\306\301&\210\311\201d\201e\201f\315\201_\306\301&\210\311\201g\201h\201i\315\201j\306\301&\210\311\201k\302\201l\315\201m\306\301&\210\201n\301\201o\201p\306\301%\210\201q\201r\201s\301#\210\201q\201r\201t\305#\210\311\201r\201u\201p\315\201v\306\301&\210\311\201w\201x\201y\315\201z\306\301&\210\311\201{\201|\201}\315\201~\306\301&\210\311\201\201\200\201\201\315\201\202\306\301&\210\311\201\203\201\204\201\205\315\201\206\306\301&\210\311\201\207\302\201\210\315\201\211\306\301&\210\300\201\212\302\201\213\306\301%\210\201\214\201\215\201\216\201\217#\210\311\201\216\201\220\201\221\315\201\222\306\201\212&\210\201\214\201\223\201\224\201\217#\210\311\201\224\302\201\225\315\201\226\306\201\212&\210\311\201\227\201]\201\230\315\201_\306\201\212&\210\311\201\231\302\201\232\315\201\233\306\201\212&\210\311\201\234\302\201\235\315\326\306\201\212&\210\300\201\236\302\201\237\306\301%\210\201\214\201\240\201\241\201\217#\210\311\201\241\201\242\201\243\315\201\244\306\201\236&\207" [custom-declare-group spam nil "Spam configuration." :version "22.1" :group mail news custom-declare-variable spam-summary-exit-behavior 'default "Exit behavior at the time of summary exit.\nNote that setting the `spam-use-move' or `spam-use-copy' backends on\na group through group/topic parameters overrides this mechanism." :type (choice (const 'default :tag "Move spam out of all groups and ham out of spam groups.") (const 'move-all :tag "Move spam out of all groups and ham out of all groups.") (const 'move-none :tag "Never move spam or ham out of any groups.")) spam-directory (nnheader-concat gnus-directory "spam/") "Directory for spam whitelists and blacklists." directory spam-mark-new-messages-in-spam-group-as-spam t "Whether new messages in a spam group should get the spam-mark." boolean spam-log-to-registry "Whether spam/ham processing should be logged in the registry." spam-split-symbolic-return "Whether `spam-split' should work with symbols or group names." spam-split-symbolic-return-positive "Whether `spam-split' should ALWAYS work with symbols or group names.\nDo not set this if you use `spam-split' in a fancy split method." spam-mark-only-unseen-as-spam "Whether only unseen articles should be marked as spam in spam groups.\nWhen nil, all unread articles in a spam group are marked as\nspam.  Set this if you want to leave an article unread in a spam group\nwithout losing it to the automatic spam-marking process." spam-mark-ham-unread-before-move-from-spam-group "Whether ham should be marked unread before it's moved.\nThe article is moved out of a spam group according to `ham-process-destination'.\nThis variable is an official entry in the international Longest Variable Name\nCompetition." spam-disable-spam-split-during-ham-respool "Whether `spam-split' should be ignored while resplitting ham.\nThis is useful to prevent ham from ending up in the same spam\ngroup after the resplit.  Don't set this to t if you have `spam-split' as the\nlast rule in your split configuration." spam-autodetect-recheck-messages "Should spam.el recheck all messages when autodetecting?\nNormally this is nil, so only unseen messages will be checked." spam-whitelist (expand-file-name "whitelist" spam-directory) "The location of the whitelist.\nThe file format is one regular expression per line.\nThe regular expression is matched against the address." file spam-blacklist (expand-file-name "blacklist" spam-directory) "The location of the blacklist.\nThe file format is one regular expression per line.\nThe regular expression is matched against the address." spam-use-dig "Whether `query-dig' should be used instead of `dns-query'." spam-use-gmane-xref "Whether the Gmane spam xref should be used by `spam-split'." spam-use-blacklist "Whether the blacklist should be used by `spam-split'." spam-blacklist-ignored-regexes "Regular expressions that the blacklist should ignore." (repeat (regexp :tag "Regular expression to ignore when blacklisting")) spam-use-whitelist "Whether the whitelist should be used by `spam-split'." spam-use-whitelist-exclusive "Whether whitelist-exclusive should be used by `spam-split'.\nExclusive whitelisting means that all messages from senders not in the whitelist\nare considered spam." spam-use-blackholes "Whether blackholes should be used by `spam-split'." spam-use-hashcash "Whether hashcash payments should be detected by `spam-split'." spam-use-regex-headers "Whether a header regular expression match should be used by `spam-split'.\nAlso see the variables `spam-regex-headers-spam' and `spam-regex-headers-ham'." spam-use-regex-body "Whether a body regular expression match should be used by `spam-split'.\nAlso see the variables `spam-regex-body-spam' and `spam-regex-body-ham'." spam-use-bogofilter-headers "Whether bogofilter headers should be used by `spam-split'.\nEnable this if you pre-process messages with Bogofilter BEFORE Gnus sees them." spam-use-bogofilter "Whether bogofilter should be invoked by `spam-split'.\nEnable this if you want Gnus to invoke Bogofilter on new messages." spam-use-bsfilter-headers "Whether bsfilter headers should be used by `spam-split'.\nEnable this if you pre-process messages with Bsfilter BEFORE Gnus sees them." spam-use-bsfilter "Whether bsfilter should be invoked by `spam-split'.\nEnable this if you want Gnus to invoke Bsfilter on new messages." spam-use-BBDB "Whether BBDB should be used by `spam-split'." spam-use-BBDB-exclusive "Whether BBDB-exclusive should be used by `spam-split'.\nExclusive BBDB means that all messages from senders not in the BBDB are\nconsidered spam." spam-use-ifile "Whether ifile should be used by `spam-split'." spam-use-stat "Whether `spam-stat' should be used by `spam-split'." spam-use-spamoracle "Whether spamoracle should be used by `spam-split'." spam-use-spamassassin "Whether spamassassin should be invoked by `spam-split'.\nEnable this if you want Gnus to invoke SpamAssassin on new messages." spam-use-spamassassin-headers "Whether spamassassin headers should be checked by `spam-split'.\nEnable this if you pre-process messages with SpamAssassin BEFORE Gnus sees\nthem." spam-use-crm114 "Whether the CRM114 Mailfilter should be used by `spam-split'." spam-install-hooks (or spam-use-dig spam-use-gmane-xref spam-use-blacklist spam-use-whitelist spam-use-whitelist-exclusive spam-use-blackholes spam-use-hashcash spam-use-regex-headers spam-use-regex-body spam-use-bogofilter spam-use-bogofilter-headers spam-use-spamassassin spam-use-spamassassin-headers spam-use-bsfilter spam-use-bsfilter-headers spam-use-BBDB spam-use-BBDB-exclusive spam-use-ifile spam-use-stat spam-use-spamoracle spam-use-crm114) "Whether the spam hooks should be installed.\nDefault to t if one of the spam-use-* variables is set." spam-split-group "spam" "Group name where incoming spam should be put by `spam-split'." string spam-junk-mailgroups (cons spam-split-group '("mail.junk" "poste.pourriel")) "Mailgroups with spam contents.\nAll unmarked article in such group receive the spam mark on group entry." (repeat (string :tag "Group")) spam-gmane-xref-spam-group "gmane.spam.detected" "The group where spam xrefs can be found on Gmane.\nOnly meaningful if you enable `spam-use-gmane-xref'." spam-blackhole-servers '("bl.spamcop.net" "relays.ordb.org" "dev.null.dk" "relays.visi.com") "List of blackhole servers.\nOnly meaningful if you enable `spam-use-blackholes'." (repeat (string :tag "Server")) spam-blackhole-good-server-regex "String matching IP addresses that should not be checked in the blackholes.\nOnly meaningful if you enable `spam-use-blackholes'." (radio (const nil) regexp) custom-declare-face ((((class color) (type tty) (background dark)) (:foreground "gray80" :background "gray50")) (((class color) (type tty) (background light)) (:foreground "gray50" :background "gray80")) (((class color) (background dark)) (:foreground "ivory2")) (((class color) (background light)) (:foreground "ivory4")) (t :inverse-video t)) "Face for spam-marked articles." put spam-face face-alias obsolete-face 'spam face spam-regex-headers-spam '("^X-Spam-Flag: YES") "Regular expression for positive header spam matches.\nOnly meaningful if you enable `spam-use-regex-headers'." (repeat (regexp :tag "Regular expression to match spam header")) spam-regex-headers-ham '("^X-Spam-Flag: NO") "Regular expression for positive header ham matches.\nOnly meaningful if you enable `spam-use-regex-headers'." (repeat (regexp :tag "Regular expression to match ham header")) spam-regex-body-spam 'nil "Regular expression for positive body spam matches.\nOnly meaningful if you enable `spam-use-regex-body'." (repeat (regexp :tag "Regular expression to match spam body")) spam-regex-body-ham 'nil "Regular expression for positive body ham matches.\nOnly meaningful if you enable `spam-use-regex-body'." (repeat (regexp :tag "Regular expression to match ham body")) spam-summary-score-preferred-header "Preferred header to use for `spam-summary-score'." (choice :tag "Header name" (symbol :tag "SpamAssassin etc" X-Spam-Status) (symbol :tag "Bogofilter" X-Bogosity) (const :tag "No preference, take best guess." nil)) spam-ifile "Spam ifile configuration." make-obsolete-variable spam-ifile-path spam-ifile-program "Gnus 5.10.9 (Emacs 22.1)" (executable-find "ifile") "Name of the ifile program." (choice (file :tag "Location of ifile") (const :tag "ifile is not installed")) spam-ifile-database-path spam-ifile-database "File name of the ifile database." (choice (file :tag "Location of the ifile database") (const :tag "Use the default")) spam-ifile-spam-category "Name of the spam ifile category." spam-ifile-ham-category "Name of the ham ifile category.\nIf nil, the current group name will be used." (choice (string :tag "Use a fixed category") (const :tag "Use the current group name")) spam-ifile-all-categories "Whether the ifile check will return all categories, or just spam.\nSet this to t if you want to use the `spam-split' invocation of ifile as\nyour main source of newsgroup names." spam-bogofilter "Spam bogofilter configuration." spam-bogofilter-path spam-bogofilter-program (executable-find "bogofilter") "Name of the Bogofilter program." (choice (file :tag "Location of bogofilter") (const :tag "Bogofilter is not installed"))] 10)
#@34 Is the bogofilter version valid?
(defvar spam-bogofilter-valid 'unknown (#$ . 13241))
(byte-code "\300\301\302\303\304\305\306\307&\210\300\310\311\312\304\305\306\307&\210\300\313\314\315\304\305\306\307&\210\300\316\317\320\304\305\306\307&\210\300\321\322\323\304\305\306\307&\210\300\324\325\326\304\327\306\307&\210\300\330\331\332\304\333\306\307&\210\334\335\331\336\306\337%\210\340\341\342\343#\210\300\342\344\345\304\346\306\335&\210\300\347\350\351\304\305\306\335&\210\300\352\353\354\304\305\306\335&\210\300\355\356\357\304\305\306\335&\210\300\360\361\362\304\305\306\335&\210\300\363\364\365\304\305\306\335&\210\300\366\367\370\304\305\306\335&\210\300\371\331\372\304\373\306\335&\210\334\374\331\375\306\337%\210\300\376\331\377\304\201@\306\374&\210\300\201A\201B\201C\304\201D\306\374&\210\334\201E\331\201F\306\337%\210\340\201G\201H\343#\210\300\201I\201J\201K\304\201L\306\201E&\210\300\201M\331\201N\304\201O\306\201E&\210\300\201P\350\201Q\304\305\306\201E&\210\300\201R\201S\201T\304\305\306\201E&\210\300\201U\201V\201W\304\305\306\201E&\210\340\201X\201Y\343#\210\300\201Y\201Z\201[\304\201\\\306\201E&\210\300\201]\201^\201_\304\201`\306\201E&\210\300\201a\201b\201c\304\305\306\201E&\210\300\201d\201e\201f\304\305\306\201E&\210\300\201g\201h\201i\304\305\306\201E&\210\334\201j\331\201k\306\337%\210\300\201l\201m\201n\304\201o\306\201j&\210\300\201p\201q\201r\304\305\306\201j&\210\300\201s\201t\201u\304\305\306\201j&\210\300\201v\201w\201x\304\305\306\201j&\210\300\201y\201z\201{\304\305\306\201j&\210\300\201|\201z\201}\304\305\306\201j&\210\300\201~\201\201\200\304\327\306\201j&\210\300\201\201\331\201\202\304\201\203\306\201j&\210\201\204\201\205\201\206\"\207" [custom-declare-variable spam-bogofilter-header "X-Bogosity" "The header that Bogofilter inserts in messages." :type string :group spam-bogofilter spam-bogofilter-spam-switch "-s" "The switch that Bogofilter uses to register spam messages." spam-bogofilter-ham-switch "-n" "The switch that Bogofilter uses to register ham messages." spam-bogofilter-spam-strong-switch "-S" "The switch that Bogofilter uses to unregister ham messages." spam-bogofilter-ham-strong-switch "-N" "The switch that Bogofilter uses to unregister spam messages." spam-bogofilter-bogosity-positive-spam-header "^\\(Yes\\|Spam\\)" "The regex on `spam-bogofilter-header' for positive spam identification." regexp spam-bogofilter-database-directory nil "Location of the Bogofilter database.\nWhen nil, use the default location." (choice (directory :tag "Location of the Bogofilter database directory") (const :tag "Use the default")) custom-declare-group spam-bsfilter "Spam bsfilter configuration." spam make-obsolete-variable spam-bsfilter-path spam-bsfilter-program "Gnus 5.10.9 (Emacs 22.1)" (executable-find "bsfilter") "Name of the Bsfilter program." (choice (file :tag "Location of bsfilter") (const :tag "Bsfilter is not installed")) spam-bsfilter-header "X-Spam-Flag" "The header inserted by Bsfilter to flag spam." spam-bsfilter-probability-header "X-Spam-Probability" "The header that Bsfilter inserts in messages." spam-bsfilter-spam-switch "--add-spam" "The switch that Bsfilter uses to register spam messages." spam-bsfilter-ham-switch "--add-clean" "The switch that Bsfilter uses to register ham messages." spam-bsfilter-spam-strong-switch "--sub-spam" "The switch that Bsfilter uses to unregister ham messages." spam-bsfilter-ham-strong-switch "--sub-clean" "The switch that Bsfilter uses to unregister spam messages." spam-bsfilter-database-directory "Directory path of the Bsfilter databases." (choice (directory :tag "Location of the Bsfilter database directory") (const :tag "Use the default")) spam-spamoracle "Spam spamoracle configuration." spam-spamoracle-database "Location of spamoracle database file.\nWhen nil, use the default spamoracle database." (choice (directory :tag "Location of spamoracle database file.") (const :tag "Use the default")) spam-spamoracle-binary (executable-find "spamoracle") "Location of the spamoracle binary." (choice (directory :tag "Location of the spamoracle binary") (const :tag "Use the default")) spam-spamassassin "Spam SpamAssassin configuration." spam-spamassassin-path spam-spamassassin-program spam-assassin-program (executable-find "spamassassin") "Name of the spamassassin program.\nHint: set this to \"spamc\" if you have spamd running.  See the spamc and\nspamd man pages for more information on these programs." (choice (file :tag "Location of spamc") (const :tag "spamassassin is not installed")) spam-spamassassin-arguments "Arguments to pass to the spamassassin executable.\nThis must be a list.  For example, `(\"-C\" \"configfile\")'." (restricted-sexp :match-alternatives (listp)) spam-spamassassin-spam-flag-header "The header inserted by SpamAssassin to flag spam." spam-spamassassin-positive-spam-flag-header "YES" "The regex on `spam-spamassassin-spam-flag-header' for positive spam\nidentification" spam-spamassassin-spam-status-header "X-Spam-Status" "The header inserted by SpamAssassin, giving extended scoring information" spam-sa-learn-path spam-sa-learn-program (executable-find "sa-learn") "Name of the sa-learn program." (choice (file :tag "Location of spamassassin") (const :tag "spamassassin is not installed")) spam-sa-learn-rebuild t "Whether sa-learn should rebuild the database every time it is called\nEnable this if you want sa-learn to rebuild the database automatically.  Doing\nthis will slightly increase the running time of the spam registration process.\nIf you choose not to do this, you will have to run \"sa-learn --rebuild\" in\norder for SpamAssassin to recognize the new registered spam." boolean spam-sa-learn-spam-switch "--spam" "The switch that sa-learn uses to register spam messages." spam-sa-learn-ham-switch "--ham" "The switch that sa-learn uses to register ham messages." spam-sa-learn-unregister-switch "--forget" "The switch that sa-learn uses to unregister messages messages." spam-crm114 "Spam CRM114 Mailfilter configuration." spam-crm114-program (executable-find "mailfilter.crm") "File path of the CRM114 Mailfilter executable program." (choice (file :tag "Location of CRM114 Mailfilter") (const :tag "CRM114 Mailfilter is not installed")) spam-crm114-header "X-CRM114-Status" "The header that CRM114 Mailfilter inserts in messages." spam-crm114-spam-switch "--learnspam" "The switch that CRM114 Mailfilter uses to register spam messages." spam-crm114-ham-switch "--learnnonspam" "The switch that CRM114 Mailfilter uses to register ham messages." spam-crm114-spam-strong-switch "--unlearn" "The switch that CRM114 Mailfilter uses to unregister ham messages." spam-crm114-ham-strong-switch "The switch that CRM114 Mailfilter uses to unregister spam messages." spam-crm114-positive-spam-header "^SPAM" "The regex on `spam-crm114-header' for positive spam identification." spam-crm114-database-directory "Directory path of the CRM114 Mailfilter databases." (choice (directory :tag "Location of the CRM114 Mailfilter database directory") (const :tag "Use the default")) gnus-define-keys-1 gnus-summary-mode-map ("St" spam-generic-score "Sx" gnus-summary-mark-as-spam "Mst" spam-generic-score "Msx" gnus-summary-mark-as-spam "\344" gnus-summary-mark-as-spam "$" gnus-summary-mark-as-spam)] 8)
#@64 Whether spam.el will try to cache lookups using `spam-caches'.
(defvar spam-cache-lookups t (#$ . 20663))
#@34 Cache of spam detection entries.
(defvar spam-caches (make-hash-table :size 10 :test 'equal) (#$ . 20775))
#@71 List of old ham and spam articles, generated when a group is entered.
(defvar spam-old-articles nil (#$ . 20888))
#@63 If non-nil, `spam-split' is disabled, and always returns nil.
(defvar spam-split-disabled nil (#$ . 21008))
#@103 Internal variable.
`spam-split' will set this to nil or a spam-use-XYZ check if it
finds ham or spam.
(defvar spam-split-last-successful-check nil (#$ . 21123))
(defvar spam-use-copy nil)
(defvar spam-use-move nil)
(defvar spam-use-gmane nil)
(defvar spam-use-resend nil)
#@44 Clear the `spam-caches' entry for a check.
(defalias 'spam-clear-cache #[(symbol) "\302	\"\207" [symbol spam-caches remhash] 3 (#$ . 21401)])
#@18 Logical A xor B.
(defalias 'spam-xor #[(a b) "\204	\205\205
	?\207" [a b] 1 (#$ . 21550)])
#@93 Return a set difference of LIST1 and LIST2.
When either list is nil, the other is returned.
(defalias 'spam-set-difference #[(list1 list2) "\2039	\2039\304	\"\305\211\2033@\211>\203,\n	>\203,\306\n\"\306\n	\"A\211\204*\304	\"\207\203?\207	\207" [list1 list2 item --dolist-tail-- append nil delq] 4 (#$ . 21654)])
#@51 Checks if MARK is considered a ham mark in GROUP.
(defalias 'spam-group-ham-mark-p #[(group mark &optional spam) ";\205\304	\"9\203\n\202\305\306\n\"\n>*\207" [group spam marks mark spam-group-ham-marks mapcar symbol-value] 3 (#$ . 21996)])
#@52 Checks if MARK is considered a spam mark in GROUP.
(defalias 'spam-group-spam-mark-p #[(group mark) "\302	\303#\207" [group mark spam-group-ham-mark-p t] 4 (#$ . 22255)])
#@34 In GROUP, get all the ham marks.
(defalias 'spam-group-ham-marks #[(group &optional spam) ";\205#	\203\303!\202\304!\211@\211@<\203!\n@\202\"\n*\207" [group spam marks gnus-parameter-spam-marks gnus-parameter-ham-marks] 3 (#$ . 22433)])
#@35 In GROUP, get all the spam marks.
(defalias 'spam-group-spam-marks #[(group) "\301\302\"\207" [group spam-group-ham-marks t] 3 (#$ . 22688)])
#@24 Is GROUP a spam group?
(defalias 'spam-group-spam-contents-p #[(group) ";\205\302GW\205	\235\206\303\304!>\207" [group spam-junk-mailgroups 0 gnus-group-spam-classification-spam gnus-parameter-spam-contents] 3 (#$ . 22837)])
#@23 Is GROUP a ham group?
(defalias 'spam-group-ham-contents-p #[(group) ";\205\n\301\302!>\207" [group gnus-group-spam-classification-ham gnus-parameter-spam-contents] 3 (#$ . 23078)])
#@38 Return list of valid classifications
(defalias 'spam-classifications #[nil "\300\207" [(spam ham)] 1 (#$ . 23269)])
#@52 Is CLASSIFICATION a valid spam/ham classification?
(defalias 'spam-classification-valid-p #[(classification) "\301 >\207" [classification spam-classifications] 2 (#$ . 23391)])
#@39 Return list of valid classifications.
(defalias 'spam-backend-properties #[nil "\300\207" [(statistical mover check hrf srf huf suf)] 1 (#$ . 23575)])
#@39 Is PROPERTY a valid backend property?
(defalias 'spam-backend-property-valid-p #[(property) "\301 >\207" [property spam-backend-properties] 2 (#$ . 23732)])
(defalias 'spam-backend-function-type-valid-p #[(type) "\301=\206	\302=\207" [type registration unregistration] 2])
(defalias 'spam-process-type-valid-p #[(process-type) "\301=\206	\302=\207" [process-type incoming process] 2])
(defalias 'spam-list-articles #[(articles classification) "\306=\203\n\307\202\310\311\211\211
\311\n\211\203b@\211\n\f\236A@\211
\n>\204L
	>\204L\f
\"\203G
\nB\202L
	B
\n>\203X\nB)A\211\204*,\207" [classification mark-cache-no mark-cache-yes alist mark-check articles spam spam-group-spam-mark-p spam-group-ham-mark-p nil article --dolist-tail-- gnus-newsgroup-data mark gnus-newsgroup-name] 5])
#@238 Install BACKEND for spam.el.
Accepts incoming CHECK, ham registration function HRF, spam
registration function SRF, ham unregistration function HUF, spam
unregistration function SUF, and an indication whether the
backend is STATISTICAL.
(defalias 'spam-install-backend-super #[(backend &rest properties) "\305\301\"\n\205.\n\211A@\n\211A@\306\f!\203$\307\f#\210\202*\310\311\312\f#\210*\202\207" [backend spam-backends properties value property add-to-list spam-backend-property-valid-p put gnus-error 5 "spam-install-backend-super got an invalid property %s"] 4 (#$ . 24569)])
#@182 Return a list of all the backend symbols, constrained by TYPE.
When TYPE is 'non-mover, only non-mover backends are returned.
When TYPE is 'mover, only mover backends are returned.
(defalias 'spam-backend-list #[(&optional type) "\305	\305\211\2034@\f\203)\f\306=\203\307\n!\204)\f\310=\203-\307\n!\204-\nBA\211\204\n*)\207" [list spam-backends backend --dolist-tail-- type nil mover spam-backend-mover-p non-mover] 3 (#$ . 25167)])
#@590 Get the check function for BACKEND.
Each individual check may return nil, t, or a mailgroup name.
The value nil means that the check does not yield a decision, and
so, that further checks are needed.  The value t means that the
message is definitely not spam, and that further spam checks
should be inhibited.  Otherwise, a mailgroup name or the symbol
'spam (depending on `spam-split-symbolic-return') is returned where
the mail should go, and further checks are also inhibited.  The
usual mailgroup name is the value of `spam-split-group', meaning
that the message is definitely a spam.
(defalias 'spam-backend-check #[(backend) "\301N\207" [backend check] 2 (#$ . 25625)])
#@19 Is BACKEND valid?
(defalias 'spam-backend-valid-p #[(backend) "\301 \235\207" [backend spam-backend-list] 2 (#$ . 26308)])
#@35 Return information about BACKEND.
(defalias 'spam-backend-info #[(backend) "\304!\203-\305\306\307\"\310 \305\211\203)@\306\311	\n\nN$A\211\204*	)\207\312\313\314#\207" [backend info property --dolist-tail-- spam-backend-valid-p nil format "Backend %s has the following properties:\n" spam-backend-properties "%s%s=%s\n" gnus-error 5 "spam-backend-info was asked about an invalid backend %s"] 7 (#$ . 26438)])
#@130 Get the BACKEND function for CLASSIFICATION and TYPE.
TYPE is 'registration or 'unregistration.
CLASSIFICATION is 'ham or 'spam.
(defalias 'spam-backend-function #[(backend classification type) "\304!\203\305	!\203\306\307\310	#!\211!)\207\311\312\313\314	&\207" [classification type retrieval backend spam-classification-valid-p spam-backend-function-type-valid-p intern format "spam-backend-%s-%s-function" gnus-error 5 "%s was passed invalid backend %s, classification %s, or type %s" "spam-backend-function"] 8 (#$ . 26872)])
#@67 Property name of article list with CLASSIFICATION and UNREGISTER.
(defalias 'spam-backend-article-list-property #[(classification &optional unregister) "\203\303\202	\304\305\306\n	#)\207" [unregister r classification "unregister" "register" format "%s-%s"] 5 (#$ . 27419)])
#@178 Get the articles to be processed for BACKEND and CLASSIFICATION.
With UNREGISTER, get articles to be unregistered.
This is a temporary storage function - nothing here persists.
(defalias 'spam-backend-get-article-todo-list #[(backend classification &optional unregister) "\303\304	\n\"!N\207" [backend classification unregister intern spam-backend-article-list-property] 5 (#$ . 27706)])
#@186 Set the LIST of articles to be processed for BACKEND and CLASSIFICATION.
With UNREGISTER, set articles to be unregistered.
This is a temporary storage function - nothing here persists.
(defalias 'spam-backend-put-article-todo-list #[(backend classification list &optional unregister) "\304\305\306	\n\"!#\207" [backend classification unregister list put intern spam-backend-article-list-property] 6 (#$ . 28102)])
#@48 Get the ham registration function for BACKEND.
(defalias 'spam-backend-ham-registration-function #[(backend) "\301N\207" [backend hrf] 2 (#$ . 28524)])
#@49 Get the spam registration function for BACKEND.
(defalias 'spam-backend-spam-registration-function #[(backend) "\301N\207" [backend srf] 2 (#$ . 28683)])
#@50 Get the ham unregistration function for BACKEND.
(defalias 'spam-backend-ham-unregistration-function #[(backend) "\301N\207" [backend huf] 2 (#$ . 28844)])
#@51 Get the spam unregistration function for BACKEND.
(defalias 'spam-backend-spam-unregistration-function #[(backend) "\301N\207" [backend suf] 2 (#$ . 29007)])
#@25 Is BACKEND statistical?
(defalias 'spam-backend-statistical-p #[(backend) "\301N\207" [backend statistical] 2 (#$ . 29172)])
#@21 Is BACKEND a mover?
(defalias 'spam-backend-mover-p #[(backend) "\301N\207" [backend mover] 2 (#$ . 29304)])
#@87 Add ALIAS to an existing BACKEND.
The previous backend settings for ALIAS are erased.
(defalias 'spam-install-backend-alias #[(backend alias) "\304!\210\305 \306\211\205 \n@\307		N#\210\nA\211\204
\306*\207" [alias property --dolist-tail-- backend spam-install-backend-super spam-backend-properties nil put] 6 (#$ . 29420)])
#@49 Install a BACKEND than can only CHECK for spam.
(defalias 'spam-install-checkonly-backend #[(backend check) "\302\301	#\207" [backend check spam-install-backend-super] 4 (#$ . 29760)])
#@258 Install a BACKEND than can move articles at summary exit.
Accepts ham registration function HRF, spam registration function
SRF, ham unregistration function HUF, spam unregistration
function SUF.  The backend has no incoming check and can't be
statistical.
(defalias 'spam-install-mover-backend #[(backend hrf srf huf suf) "\305\301	\302\n\303\304\f\306\307&\207" [backend hrf srf huf suf spam-install-backend-super mover t] 12 (#$ . 29953)])
#@288 Install a BACKEND than has no check.
Accepts ham registration function HRF, spam registration function
SRF, ham unregistration function HUF, spam unregistration
function SUF.  The backend has no incoming check and can't be
statistical (it could be, but in practice that doesn't happen).
(defalias 'spam-install-nocheck-backend #[(backend hrf srf huf suf) "\305\301	\302\n\303\304\f&	\207" [backend hrf srf huf suf spam-install-backend-super] 10 (#$ . 30406)])
#@259 Install a BACKEND.
Accepts incoming CHECK, ham registration function HRF, spam
registration function SRF, ham unregistration function HUF, spam
unregistration function SUF.  The backend won't be
statistical (use `spam-install-statistical-backend' for that).
(defalias 'spam-install-backend #[(backend check hrf srf huf suf) "\306\301	\302\n\303\304\f\305
&\207" [backend check hrf srf huf suf spam-install-backend-super] 12 (#$ . 30875)])
#@266 Install a BACKEND.
Accepts incoming CHECK, ham registration function HRF, spam
registration function SRF, ham unregistration function HUF, spam
unregistration function SUF.  The backend will be
statistical (use `spam-install-backend' for non-statistical
backends).
(defalias 'spam-install-statistical-backend #[(backend check hrf srf huf suf) "\306\301	\307\310\302\n\303\304\f\305
&
\207" [backend check hrf srf huf suf spam-install-backend-super statistical t] 14 (#$ . 31324)])
#@61 Install a statistical BACKEND than can only CHECK for spam.
(defalias 'spam-install-statistical-checkonly-backend #[(backend check) "\302\301	\303\304%\207" [backend check spam-install-backend-super statistical t] 6 (#$ . 31813)])
(byte-code "\300\301\302\"\210\300\303\304\"\210\300\305\306\"\210\300\307\310\"\210\300\311\312\"\210\300\313\314\"\210\300\315\316\"\210\317\320\321\"\210\322\323\324\325\326\211%\210\327\330\331\332\326\211%\210\327\333\334\335\211\334%\210\327\336\337\340\326\211%\210\341\342\343\344\326\345\326&\210\346\342\347\"\210\341\350\351\326\352\326\353&\210\341\354\355\356\326\357\326&\210\360\361\362\363\364\365\366&\210\360\367\370\371\372\373\374&\210\360\375\376\377\201@\201A\201B&\210\360\201C\201D\201E\201F\201G\201H&\210\360\201I\201J\201K\201L\201M\201N&\210\360\201O\201P\201Q\201R\201S\201T&\210\360\201U\201V\201W\201X\201Y\201Z&\207" [spam-install-checkonly-backend spam-use-blackholes spam-check-blackholes spam-use-hashcash spam-check-hashcash spam-use-spamassassin-headers spam-check-spamassassin-headers spam-use-bogofilter-headers spam-check-bogofilter-headers spam-use-bsfilter-headers spam-check-bsfilter-headers spam-use-gmane-xref spam-check-gmane-xref spam-use-regex-headers spam-check-regex-headers spam-install-statistical-checkonly-backend spam-use-regex-body spam-check-regex-body spam-install-mover-backend spam-use-move spam-move-ham-routine spam-move-spam-routine nil spam-install-nocheck-backend spam-use-copy spam-copy-ham-routine spam-copy-spam-routine spam-use-gmane spam-report-gmane-unregister-routine spam-report-gmane-register-routine spam-use-resend spam-report-resend-register-ham-routine spam-report-resend-register-routine spam-install-backend spam-use-BBDB spam-check-BBDB spam-BBDB-register-routine spam-BBDB-unregister-routine spam-install-backend-alias spam-use-BBDB-exclusive spam-use-blacklist spam-check-blacklist spam-blacklist-register-routine spam-blacklist-unregister-routine spam-use-whitelist spam-check-whitelist spam-whitelist-register-routine spam-whitelist-unregister-routine spam-install-statistical-backend spam-use-ifile spam-check-ifile spam-ifile-register-ham-routine spam-ifile-register-spam-routine spam-ifile-unregister-ham-routine spam-ifile-unregister-spam-routine spam-use-spamoracle spam-check-spamoracle spam-spamoracle-learn-ham spam-spamoracle-learn-spam spam-spamoracle-unlearn-ham spam-spamoracle-unlearn-spam spam-use-stat spam-check-stat spam-stat-register-ham-routine spam-stat-register-spam-routine spam-stat-unregister-ham-routine spam-stat-unregister-spam-routine spam-use-spamassassin spam-check-spamassassin spam-spamassassin-register-ham-routine spam-spamassassin-register-spam-routine spam-spamassassin-unregister-ham-routine spam-spamassassin-unregister-spam-routine spam-use-bogofilter spam-check-bogofilter spam-bogofilter-register-ham-routine spam-bogofilter-register-spam-routine spam-bogofilter-unregister-ham-routine spam-bogofilter-unregister-spam-routine spam-use-bsfilter spam-check-bsfilter spam-bsfilter-register-ham-routine spam-bsfilter-register-spam-routine spam-bsfilter-unregister-ham-routine spam-bsfilter-unregister-spam-routine spam-use-crm114 spam-check-crm114 spam-crm114-register-ham-routine spam-crm114-register-spam-routine spam-crm114-unregister-ham-routine spam-crm114-unregister-spam-routine] 7)
#@56 Return the extra headers spam.el thinks are necessary.
(defalias 'spam-necessary-extra-headers #[nil "\306	\204\n\204\203\307B\f\204\203\310B
\204&\203*\311B)\207" [list spam-use-spamassassin spam-use-spamassassin-headers spam-use-regex-headers spam-use-bogofilter spam-use-crm114 nil X-Spam-Status X-Bogosity X-CRM114-Status] 2 (#$ . 35200)])
(defalias 'spam-user-format-function-S #[(headers) "\205\302\303\304	\"\"\207" [headers spam-summary-score-preferred-header format "%3.2f" spam-summary-score] 5])
#@25 Sort articles by score.
(defalias 'spam-article-sort-by-spam-status #[(h1 h2) "\301\302\303\215\210)\207" [result nil --cl-block-nil-- (byte-code "\306 \307\211\203.	@\310\n\"\310\"\211\fU\204&
\fW\311\312\307\"\210*	A\211\204	*\307\207" [header --dolist-tail-- h1 h2 s2 s1 spam-necessary-extra-headers nil spam-summary-score throw --cl-block-nil-- result] 5)] 2 (#$ . 35740)])
#@83 Regexp matching SpamAssassin score header.
The first group must match the number.
(defvar spam-spamassassin-score-regexp ".*\\b\\(?:score\\|hits\\)=\\(-?[0-9.]+\\)" (#$ . 36140))
#@89 Transform an extra HEADER to a number, using list of HEADERS.
Note this has to be fast.
(defalias 'spam-extra-header-to-number #[(header headers) "\304	\"\211\205?\305=\203\306\307\n\310#!\202?\311\312\n\"\203*\306\313\314\n\"![\202?\315=\203>\306\307\211\n\316\317#\320\317#!\202?\321)\207" [header headers header-content spam-spamassassin-score-regexp gnus-extra-header X-Spam-Status string-to-number gnus-replace-in-string "\\1" string-match "( pR: \\([0-9.-]+\\)" match-string 1 X-Bogosity ".*spamicity=" "" ",.*" nil] 7 (#$ . 36325)])
#@148 Score an article for the summary buffer, as fast as possible.
With SPECIFIC-HEADER, returns only that header's score.
Will not return a nil score.
(defalias 'spam-summary-score #[(headers &optional specific-header) "\301\302\303\215\210\206\304)\207" [score nil --cl-block-nil-- (byte-code "\203	C\202\305 \306\211\203*\n@\307	\"\211\203#\310\311\306\"\210\nA\211\204*\306\207" [specific-header header --dolist-tail-- headers score spam-necessary-extra-headers nil spam-extra-header-to-number throw --cl-block-nil--] 4) 0] 2 (#$ . 36885)])
#@40 Invoke whatever scoring method we can.
(defalias 'spam-generic-score #[(&optional recheck) "\204	\203\f\306\n!\207\204\f\203\307\n!\207
\203\310 \207\311\n!\207" [spam-use-spamassassin spam-use-spamassassin-headers recheck spam-use-bsfilter spam-use-bsfilter-headers spam-use-crm114 spam-spamassassin-score spam-bsfilter-score spam-crm114-score spam-bogofilter-score] 2 (#$ . 37450) "P"])
(defalias 'spam-setup-widening #[nil "\301 \205\302\211\207" [nnimap-split-download-body-default spam-widening-needed-p t] 2])
(defalias 'spam-widening-needed-p #[(&optional force-symbols) "\304\305 \304\211\203(\n@\306	!\203!	J\204	>\203!	\nA\211\204*)\207" [found backend --dolist-tail-- force-symbols nil spam-backend-list spam-backend-statistical-p] 3])
#@382 The OBSOLETE `spam-list-of-processors' list.
This list contains pairs associating the obsolete ham/spam exit
processor variables with a classification and a spam-use-*
variable.  When the processor variable is nil, just the
classification and spam-use-* check variable are used.  This is
superseded by the new spam backend code, so it's only consulted
for backwards compatibility.
(defvar spam-list-of-processors '((gnus-group-spam-exit-processor-bogofilter spam spam-use-bogofilter) (gnus-group-spam-exit-processor-bsfilter spam spam-use-bsfilter) (gnus-group-spam-exit-processor-blacklist spam spam-use-blacklist) (gnus-group-spam-exit-processor-ifile spam spam-use-ifile) (gnus-group-spam-exit-processor-stat spam spam-use-stat) (gnus-group-spam-exit-processor-spamoracle spam spam-use-spamoracle) (gnus-group-spam-exit-processor-spamassassin spam spam-use-spamassassin) (gnus-group-spam-exit-processor-report-gmane spam spam-use-gmane) (gnus-group-ham-exit-processor-ifile ham spam-use-ifile) (gnus-group-ham-exit-processor-bogofilter ham spam-use-bogofilter) (gnus-group-ham-exit-processor-bsfilter ham spam-use-bsfilter) (gnus-group-ham-exit-processor-stat ham spam-use-stat) (gnus-group-ham-exit-processor-whitelist ham spam-use-whitelist) (gnus-group-ham-exit-processor-BBDB ham spam-use-BBDB) (gnus-group-ham-exit-processor-copy ham spam-use-ham-copy) (gnus-group-ham-exit-processor-spamassassin ham spam-use-spamassassin) (gnus-group-ham-exit-processor-spamoracle ham spam-use-spamoracle)) (#$ . 38233))
(make-obsolete-variable 'spam-list-of-processors nil "22.1")
#@291 Checks if GROUP has a BACKEND with CLASSIFICATION registered.
Also accepts the obsolete processors, which can be found in
gnus.el and in spam-list-of-processors.  In the case of mover
backends, checks the setting of `spam-summary-exit-behavior' in
addition to the set values for the group.
(defalias 'spam-group-processor-p #[(group backend &optional classification) ";\205\240	9\205\240	\n\236\306!@\307\211\203%\310\311
8
A@#\202\237\f\307\211\203[@\204R<\203R@=\203R	A@=\203R\312A\211\204/*\204\236\313	!\203\236\314=\203q\312\202\235\315=\203|\307\202\235\316=\203\227\317=\206\235\320=\205\235\321!\202\235\322\323\324#+\207" [group backend spam-list-of-processors found parameters old-style gnus-parameter-spam-process nil spam-group-processor-p 2 t spam-backend-mover-p move-all move-none default spam ham spam-group-spam-contents-p gnus-error 5 "Unknown spam-summary-exit-behavior: %s" parameter --dolist-tail-- classification spam-summary-exit-behavior] 5 (#$ . 39815)])
(defalias 'spam-mark-junk-as-spam-routine #[nil "\306!\205K\307\310\311	\203\312\202\313#\210	\203\n\202
\203F\f\314\211\205B@\315\"\210A\211\204,\314*\202J\307\316\317\")\207" [gnus-newsgroup-name spam-mark-only-unseen-as-spam gnus-newsgroup-unseen gnus-newsgroup-unreads articles spam-mark-new-messages-in-spam-group-as-spam spam-group-spam-contents-p gnus-message 6 "Marking %s articles as spam" "unseen" "unread" nil gnus-summary-mark-article 9 "Did not mark new messages as spam." article --dolist-tail-- gnus-spam-mark] 5])
(defalias 'spam-summary-prepare #[nil "\302\303\302\"B\304\303\304\"BD\305 \207" [gnus-newsgroup-articles spam-old-articles ham spam-list-articles spam spam-mark-junk-as-spam-routine] 5])
(defalias 'spam-summary-prepare-exit #[nil "\204\306\307\310\"\210\311 \312\211\203\213\n@\211\236\243\313
	\"\314\f\"\315 \312\211\203\203\n@\312\312\211\203f\n@\316!\317\320	$\203^B)\nA\211\204B*\203{J\203{\321	\322$\210)\nA\211\2041-\nA\211\204*\323\312\211\203\340\n@\311 \312\211\203\330\n@\315!\312\211\203\320\n@\324	#\203\311\321	\313
	\"#\210\nA\211\204\261*\nA\211\204\242*\nA\211\204\225*\325 \210\313
\326\"\312\211\203\n@\327 \"\210\nA\211\204\360*\312\211\207" [gnus-group-is-exiting-without-update-p classification --dolist-tail-- spam-old-articles old-articles gnus-newsgroup-articles gnus-message 6 "Exiting summary buffer and applying spam rules" spam-classifications nil spam-list-articles spam-set-difference spam-backend-list spam-fetch-field-message-id-fast spam-log-unregistration-needed-p process spam-backend-put-article-todo-list t (non-mover mover) spam-group-processor-p spam-resolve-registrations-routine spam gnus-summary-mark-article new-articles changed-articles backend unregister-list article id backend-type gnus-newsgroup-name gnus-expirable-mark] 7])
(defalias 'spam-copy-or-move-routine #[(copy groups articles classification) "\242\203\242<\203\211A@<\204C\306 \210\307	\310\311\312\217*\313	!\310\211\211\211\211%&'()\305\235\203C\314\315\310\211*\203\225*@+\316=\203l\317	!\203l\317\n!\203l\320\321\322	\n$\204\214+\323=\203\210\324	!\203\210\324\n!\203\210\320\321\325	\n$\204\214\n\fB*A\211*\204L*\f\237\211\310\211*\203_*@,\203V\n;\203V,\310'\211*\203U*@'+\323=\203\332-\203\332\320\326\327'#\210\330'.\"\210+\316=\203\364/\204\364\320\326\331'#\210\330'0\"\210\332'!\210
\203 1\206+\323=\20521\320\326\333'($\210\334\310(\"\210)\202L)\203,G\335V\203?\320\326\336'\n$\210\337\310\n\"\210\314%\202L\320\326\340'\n$\210\341\310\n\"\210*A\211*\204\273**A\211*\204\242*/\204\242%\203\242)\203\242,\310'\211*\203\224*@'\332'!\210\320\326\342'#\210*A\211*\204z*,\203\242\3103\343\310!\210)\344 \210,G.\207" [groups gnus-newsgroup-name group func valid-move-destinations respool gnus-summary-kill-process-mark request-move-article nil (byte-code ";\203\f\303!@\202
\304	!\204\305	!\210\306\307\310\311	\n#!!)\207" [group method func gnus-find-method-for-group featurep require fboundp intern format "%s-%s"] 6) ((error)) gnus-find-method-for-group t ("fake") spam spam-group-spam-contents-p gnus-message 3 "Sorry, can't move spam from spam group %s to spam group %s" ham spam-group-ham-contents-p "Sorry, can't move ham from ham group %s to ham group %s" 9 "Marking ham article %d unread before move" gnus-summary-mark-article "Marking spam article %d expirable before move" gnus-summary-set-process-mark "Respooling article %d with method %s" gnus-summary-respool-article 1 "Copying article %d to group %s" gnus-summary-copy-article "Moving article %d to group %s" gnus-summary-move-article "Deleting article %d" gnus-summary-delete-article gnus-summary-yank-process-mark deletep mark article respool-method backend-supports-deletions --dolist-tail-- classification articles spam-mark-ham-unread-before-move-from-spam-group gnus-unread-mark copy gnus-expirable-mark spam-split-disabled spam-disable-spam-split-during-ham-respool gnus-novice-user] 8])
(defalias 'spam-copy-spam-routine #[(articles) "\302\303\304!	\305$\207" [gnus-newsgroup-name articles spam-copy-or-move-routine t gnus-parameter-spam-process-destination spam] 5])
(defalias 'spam-move-spam-routine #[(articles) "\302\303\304!	\305$\207" [gnus-newsgroup-name articles spam-copy-or-move-routine nil gnus-parameter-spam-process-destination spam] 5])
(defalias 'spam-copy-ham-routine #[(articles) "\302\303\304!	\305$\207" [gnus-newsgroup-name articles spam-copy-or-move-routine t gnus-parameter-ham-process-destination ham] 5])
(defalias 'spam-move-ham-routine #[(articles) "\302\303\304!	\305$\207" [gnus-newsgroup-name articles spam-copy-or-move-routine nil gnus-parameter-ham-process-destination ham] 5])
(defalias 'spam-get-article-as-string #[(article) "\247\205\303\304!r	q\210\305\216\306\n\"\210\307 +\207" [article #1=#:temp-buffer gnus-newsgroup-name generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) gnus-request-article-this-buffer buffer-string] 3])
#@218 Fetch a FIELD for ARTICLE with the internal `gnus-data-list' function.
When PREPARED-DATA-HEADER is given, don't look in the Gnus data.
When FIELD is 'number, ARTICLE can be any number (since we want
to find it out).
(defalias 'spam-fetch-field-fast #[(article field &optional prepared-data-header) "\247\205\203	\206\f\304!\305\n!\204\306\307\310#\202\202\311\232\203'\n\312H\202\202\313\232\2033\n\314H\202\202\315\232\203?\n\316H\202\202\317\232\203K\n\320H\202\202\321\232\203W\n\322H\202\202\323\232\203c\n\324H\202\202\325\232\203o\n\326H\202\202\327\232\203{\n\330H\202\202\331\322\332#\210\333)\207" [article prepared-data-header data-header field spam-fetch-article-header arrayp gnus-message 6 "Article %d has a nil data header" number 0 from 2 message-id 4 subject 1 references 5 date 3 xref 8 extra 9 gnus-error "spam-fetch-field-fast: unknown field %s requested" nil] 4 (#$ . 46095)])
(defalias 'spam-fetch-field-from-fast #[(article &optional prepared-data-header) "\302\303	#\207" [article prepared-data-header spam-fetch-field-fast from] 4])
(defalias 'spam-fetch-field-subject-fast #[(article &optional prepared-data-header) "\302\303	#\207" [article prepared-data-header spam-fetch-field-fast subject] 4])
(defalias 'spam-fetch-field-message-id-fast #[(article &optional prepared-data-header) "\302\303	#\207" [article prepared-data-header spam-fetch-field-fast message-id] 4])
(defalias 'spam-generate-fake-headers #[(article) "\302!\211\203>\303\304\305\306	#\305\307	#\305\310	#\305\311	#\305\312	#\305\313	#&\305\314	#\205:\303\315\305\314	#\"P\202C\316\317\320#)\207" [article dh spam-fetch-article-header format "From: %s\nSubject: %s\nMessage-ID: %s\nDate: %s\nReferences: %s\nXref: %s\n" spam-fetch-field-fast from subject message-id date references xref extra "%s\n" gnus-message 5 "spam-generate-fake-headers: article %d didn't have a valid header"] 12])
(defalias 'spam-fetch-article-header #[(article) "rq\210\303	!\210\304	\n\2368)\207" [gnus-summary-buffer article gnus-newsgroup-data gnus-read-header 3] 3])
#@346 Split this message into the `spam' group if it is spam.
This function can be used as an entry in the variable `nnmail-split-fancy',
for example like this: (: spam-split).  It can take checks as
parameters.  A string as a parameter will set the
`spam-split-group' to that string.

See the Info node `(gnus)Fancy Mail Splitting' for more details.
(defalias 'spam-split #[(&rest specific-checks) "\306	?\205\301\n\f\306\211\203+@\211;\203\"
\307
\f\"A\211\204*\310\f!\212\214\203C~\210\311\312\313#\210\314 \306\203\255\204\255\211A@\315!\203l\316\202m\n\f>\204\f\204\251J\203\251\311\317\320#\210 \211\203\222\316=\203\251\204\251\321\322\323\324#\"\210+\202J\325=\203\275\205\277\326\202\277.\207" [spam-split-last-successful-check spam-split-disabled spam-split-group spam-split-group-choice specific-checks check nil delq spam-widening-needed-p gnus-message 8 "spam-split: widening the buffer (%s requires it)" spam-backend-list spam-backend-check spam 6 "spam-split: calling the %s function" gnus-error 5 format "spam-split got %s but %s is nil" t ham --dolist-tail-- widening-needed-check decision backends backend check-function spam-split-symbolic-return spam-split-symbolic-return-positive] 7 (#$ . 48196) nil])
#@58 Detect spam in the current newsgroup using `spam-split'.
(defalias 'spam-find-spam #[nil "\306	!\307	!\211@
\203\202\310\311\312\215\210\313>\203*\314\n\205:\f\315\232?\205:\316\317\".\207" [gnus-newsgroup-name group autodetect methods first-method spam-autodetect-recheck-messages gnus-parameter-spam-autodetect gnus-parameter-spam-autodetect-methods nil --cl-block-nil-- (byte-code "\304\211\203\n@\305	!\203\306\307\310\304\"\210\nA\211\204*\304\207" [methods backend --dolist-tail-- article-cannot-be-faked nil spam-backend-statistical-p t throw --cl-block-nil--] 4) default t none mapcar #[(article) "\306!\307!\310!\311\211\204\312\313\314#\210\f\203/
\203/\315\f\316\"\211\203/\312\317\320\f#\210\321\211 !\322!\"	\206x\323\324!#r#q\210\325\216$\203X\326%\"\210\202a\"\203a\"c\210&\203m&\327\232\203r\330 \202w\331\330'\"+\211(\332\232\203\206\333)\"\210\f\205\263(\205\263
\205\263\334\335\f!!\203\244\336\f\311%\n%\210	?\205\263\337\f\316(*%%.\207" [article registry-lookup sender subject id spam-log-to-registry spam-fetch-field-message-id-fast spam-fetch-field-subject-fast spam-fetch-field-from-fast nil gnus-message 6 "Article %d has no message ID!" spam-log-registration-type incoming 9 "spam-find-spam: message %s was already registered incoming" t spam-generate-fake-headers generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1=#:temp-buffer buffer-name kill-buffer] 2)) gnus-request-article-this-buffer default spam-split apply spam gnus-summary-mark-article zerop gnus-registry-group-count gnus-registry-handle-action spam-log-processing-to-registry spam-split-symbolic-return spam-split-symbolic-return-positive fake-headers #1# article-cannot-be-faked group first-method methods split-return gnus-spam-mark spam-split-last-successful-check] 7] gnus-newsgroup-articles gnus-newsgroup-unseen articles article-cannot-be-faked] 4 (#$ . 49512) nil])
#@72 Go through the backends and register or unregister articles as needed.
(defalias 'spam-resolve-registrations-routine #[nil "\306\307\211\205\322	@\310 \307\211\203\311	@\311!\307\211\203\301	@\312\n\"\312\n\313#\314\315\n\307\211$\210\315\n\307\313$\210\316
!\307\211\203n	@\211>\203g\fT\317\"\317
\"	A\211\204K*\320\f!\204{\321\322\323\f#\210\320
G!\204\231\324\n
#\211\314V\203\230\321\325\326\n%\210)\320G!\204\271\327\n#\211\314V\203\270\321\325\330\n%\210)+	A\211\204!*	A\211\204*	A\211\204\307*\207" [backend-type --dolist-tail-- classification backend delcount ulist (non-mover mover) nil spam-classifications spam-backend-list spam-backend-get-article-todo-list t 0 spam-backend-put-article-todo-list copy-sequence delq zerop gnus-message 9 "%d messages did not have to unregister and then register" spam-unregister-routine 6 "%d %s messages were unregistered by backend %s." spam-register-routine "%d %s messages were registered by backend %s." rlist article num] 7 (#$ . 51499)])
(defalias 'spam-unregister-routine #[(classification backend specific-articles) "\303	\n\304$\207" [classification backend specific-articles spam-register-routine t] 5])
(defalias 'spam-register-routine #[(classification backend specific-articles &optional unregister) "\306!\205\231\307	!\205\231\310	\311#\310	\312#\f\203 \202!\n\f\203*\313\202+\314\315\211
\203\224\206A\316\"\211G\317V\203\224\320\321\322\f\203U\323\202V\324G\203b\325\202c\326	&\210
!\210\315\211\203\223@\327!\330	%\210A\211\204x*G.\207" [classification backend register-function unregister-function unregister run-function spam-classification-valid-p spam-backend-valid-p spam-backend-function registration unregistration spam-log-undo-registration spam-log-processing-to-registry nil spam-list-articles 0 gnus-message 5 "%s %d %s articles as %s using backend %s" "Unregistering" "Registering" "specific" "" spam-fetch-field-message-id-fast process log-function article articles specific-articles gnus-newsgroup-articles --dolist-tail-- gnus-newsgroup-name] 9])
(defalias 'spam-log-processing-to-registry #[(id type classification backend group) "\205B	;\203;\n;\203;\306!\203;\307\f!\203;\310
!\203;\311	\"\f
\nEB\312	#*\207\313\314\315\316\317\"\"\207" [spam-log-to-registry id group type classification backend spam-process-type-valid-p spam-classification-valid-p spam-backend-valid-p gnus-registry-get-id-key gnus-registry-set-id-key gnus-error 7 format "%s call with bad ID, type, classification, spam-backend, or group" "spam-log-processing-to-registry" cell cell-list] 5])
(defalias 'spam-log-registered-p #[(id type) "\205	;\203\303\n!\203\304	\n\"\207\305\306\307\310\311\"\"\210\312\207" [spam-log-to-registry id type spam-process-type-valid-p gnus-registry-get-id-key gnus-error 7 format "%s called with bad ID, type, classification, or spam-backend" "spam-log-registered-p" nil] 5])
(defalias 'spam-log-registration-type #[(id type) "\306\307\310\n\"\307\211\2036
@\211@\n\311\n!\203.\203+\n=\204+	T\n)
A\211\204*\306	W?\205?*\207" [decision count id type reg --dolist-tail-- 0 nil spam-log-registered-p spam-classification-valid-p classification] 4])
(defalias 'spam-log-unregistration-needed-p #[(id type classification backend) "\205_	;\203V\306\n!\203V\307!\203V\310\f!\203V\311	\n\"\312\211\312\211\203R@
\204I@=\203I\fA@=\203I\313A\211\204-*
*\207\314\315\316\317\320\"\"\210\312\207" [spam-log-to-registry id type classification backend found spam-process-type-valid-p spam-classification-valid-p spam-backend-valid-p gnus-registry-get-id-key nil t gnus-error 7 format "%s called with bad ID, type, classification, or spam-backend" "spam-log-unregistration-needed-p" cell-list cell --dolist-tail--] 6])
(defalias 'spam-log-undo-registration #[(id type classification backend &optional group) "\205q\306	\n\f$\205q	;\203h\307\n!\203h\310!\203h\311\f!\203h\312	\n\"\313\211\211\313\211\203_@@=\203O\fA@=\204VBA\211\2049*\314	\n#+\207\315\316\317\320\321\"\"\210\313\207" [spam-log-to-registry id type classification backend found spam-log-unregistration-needed-p spam-process-type-valid-p spam-classification-valid-p spam-backend-valid-p gnus-registry-get-id-key nil gnus-registry-set-id-key gnus-error 7 format "%s call with bad ID, type, spam-backend, or group" "spam-log-undo-registration" new-cell-list cell-list cell --dolist-tail--] 6])
(defalias 'spam-check-gmane-xref #[nil "\303\304!\206	\303\305!\211\205\306	\"\205\n)\207" [header spam-gmane-xref-spam-group spam-split-group message-fetch-field "Xref" "Newsgroups" string-match] 4])
(defalias 'spam-check-regex-body #[nil "	\304\305!*\207" [spam-regex-body-ham spam-regex-body-spam spam-regex-headers-spam spam-regex-headers-ham spam-check-regex-headers t] 2])
(defalias 'spam-check-regex-headers #[(&optional body) "\203\306\202	\307\310\211\f\310\211\203:@	\2041eb\210\311
\310\312#\2031\313\314\"\210\312A\211\204*\310\211\203n@	\204eeb\210\311\310\312#\203e\313\315\"\210\312A\211\204F*\n+\207" [body found ret type spam-regex-headers-ham h-regex "body" "header" nil re-search-forward t message "Ham regex %s search positive." "Spam regex %s search positive." --dolist-tail-- spam-regex-headers-spam s-regex spam-split-group] 5])
(defalias 'spam-reverse-ip-string #[(ip) ";\205\301\302\303\304\"\237\305#\207" [ip mapconcat identity split-string "\\." "."] 5])
#@51 Check the Received headers for blackholed relays.
(defalias 'spam-check-blackholes #[nil "\306\307!\310\211\211\203\304\311\312!rq\210\313\216\nc\210eb\210\314\315\316\"\210\317\320\310\321#\203<\314\322\323\324\325!#\210\326\324\325!!	B\202!+\f\310\211\203\303@	\310\211\203\271@ \203i\327 \326!\"\204\260\204\260\330
Q!\"\203\227\331!!\211#\203\223\314\315\332##\210
#EB)\202\257\333!!\203\257\314\315\334\"\210
\333!\335\"EB)A\211\204T*A\211\204F*\205\312$+\207" [matches ips headers #1=#:temp-buffer spam-blackhole-servers server message-fetch-field "received" nil generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) gnus-message 6 "Checking headers for relay addresses" re-search-forward "\\([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\\)" t 9 "Blackhole search found host IP %s." match-string 1 spam-reverse-ip-string string-match "." query-dig "(DIG): positive blackhole check '%s'" dns-query "positive blackhole check" TXT --dolist-tail-- ip spam-blackhole-good-server-regex query-string spam-use-dig query-result spam-split-group] 6 (#$ . 57143)])
#@42 Check the headers for hashcash payments.
(defalias 'spam-check-hashcash #[nil "\300\301\302\217\207" [nil (mail-check-payment) ((error))] 3 (#$ . 58322)])
(byte-code "\300\301\302\217\2030\303\304\305\"\210\306\307\304\"\210\303\310\311\"\210\303\312\313\"\210\303\314\315\"\210\303\316\317\"\210\320\316\321\322#\210\303\323\324\"\210\300\207" [nil (byte-code "\300\301!\210\300\302!\207" [require bbdb bbdb-com] 2) ((file-error (byte-code "\300\301\302\"\210\300\303\302\"\210\300\304\302\"\210\300\305\302\"\210\300\306\302\"\210\300\307\302\"\210\300\310\302\"\210\311\207" [defalias bbdb-buffer ignore bbdb-create-internal bbdb-records spam-BBDB-register-routine spam-enter-ham-BBDB spam-exists-in-BBDB-p bbdb-gethash nil] 3))) defalias spam-clear-cache-BBDB #[(&rest immaterial) "\300\301!\207" [spam-clear-cache spam-use-BBDB] 2] add-hook bbdb-change-hook spam-enter-ham-BBDB #[(addresses &optional remove) "\306\211\205t\n@\211;\203l\307	!\211@\206\310
\203#\311\202$\312A@\211\2053\210\306\203k\313\314\315
\203E\316\202F\317	
\203O\320\202P\321%\210\203`!\210\202k\322\f\306\306\211\323&\210-\nA\211\204\306*\207" [addresses from --dolist-tail-- parsed-address name remove nil gnus-extract-address-components "Ham Sender" bbdb-delete-record-internal ignore gnus-message 6 "%s address %s %s BBDB" "Deleting" "Adding" "from" "to" bbdb-create-internal "ham sender added by spam.el" remove-function net-address record] 8 "Enter an address into the BBDB; implies ham (non-spam) sender"] spam-BBDB-register-routine #[(articles &optional unregister) "\305	\305\211\203!@\306\n!;\203\306\n!BA\211\204\n*\307\f\")\207" [addresses articles article --dolist-tail-- unregister nil spam-fetch-field-from-fast spam-enter-ham-BBDB] 4] spam-BBDB-unregister-routine #[(articles) "\301\302\"\207" [articles spam-BBDB-register-routine t] 3] spam-exists-in-BBDB-p #[(net) ";\205\301G!?\205\302 \210\303\227!\207" [net zerop bbdb-records bbdb-gethash] 2] put byte-optimizer byte-compile-inline-expand spam-check-BBDB #[nil "\303\304!\211\205\305!A@	\205\n)\207" [net spam-use-BBDB-exclusive spam-split-group message-fetch-field "from" gnus-extract-address-components] 3 "Mail from people in the BBDB is classified as ham or non-spam"]] 4)
#@84 Return the command-line parameter for ifile's database.
See `spam-ifile-database'.
(defalias 'spam-get-ifile-database-parameter #[nil "\205\301\302\"\207" [spam-ifile-database format "--db-file=%s"] 3 (#$ . 60629)])
#@65 Check the ifile backend for the classification of this message.
(defalias 'spam-check-ifile #[nil "\306 \307\211\310\311!rq\210\312\216\306 \313 r\nq\210\314\315ed\307
\307\316\f\203/\f\317B\2020\320&	\210)eb\210m\204@`\321 {\322	G!\204[\203Q	\202[	\230\203[-+\207" [return category article-buffer-name #1=#:temp-buffer db-param temp-buffer-name buffer-name nil generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) spam-get-ifile-database-parameter apply call-process-region "-c" ("-q") ("-q") point-at-eol zerop spam-ifile-program spam-ifile-all-categories spam-ifile-spam-category spam-split-group] 11 (#$ . 60855)])
#@128 Register an article, given as a string, with a category.
Uses `gnus-newsgroup-name' if category is nil (for ham registration).
(defalias 'spam-ifile-register-with-ifile #[(articles category &optional unregister) "\206	\n\203
\306\202\307\310 \311\312\313!rq\210\314\216\311\211\203J@\315!\211;\203@c\210)A\211\204,*\316\317ed\311\211\211
\f\203`\f\320B\202a\321&\n.\207" [category gnus-newsgroup-name unregister parameters db add-or-delete-option "-d" "-i" spam-get-ifile-database-parameter nil generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1=#:temp-buffer buffer-name kill-buffer] 2)) spam-get-article-as-string apply call-process-region ("-h") ("-h") #1# articles article --dolist-tail-- article-string spam-ifile-program] 13 (#$ . 61564)])
(defalias 'spam-ifile-register-spam-routine #[(articles &optional unregister) "\303	\n#\207" [articles spam-ifile-spam-category unregister spam-ifile-register-with-ifile] 4])
(defalias 'spam-ifile-unregister-spam-routine #[(articles) "\301\302\"\207" [articles spam-ifile-register-spam-routine t] 3])
(defalias 'spam-ifile-register-ham-routine #[(articles &optional unregister) "\303	\n#\207" [articles spam-ifile-ham-category unregister spam-ifile-register-with-ifile] 4])
(defalias 'spam-ifile-unregister-ham-routine #[(articles) "\301\302\"\207" [articles spam-ifile-register-ham-routine t] 3])
(require 'spam-stat)
#@68 Check the spam-stat backend for the classification of this message
(defalias 'spam-check-stat #[nil "\305 \306\211\307 ,\207" [spam-split-group return category spam-stat-buffer spam-stat-split-fancy-spam-group buffer-name nil spam-stat-split-fancy] 4 (#$ . 63011)])
(defalias 'spam-stat-register-spam-routine #[(articles &optional unregister) "\306\211\2052\n@\307	!\310\311!r\fq\210\312\216c\210
\203&\313 \210\202)\314 \210,\nA\211\204\306*\207" [articles article --dolist-tail-- article-string #1=#:temp-buffer unregister nil spam-get-article-as-string generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) spam-stat-buffer-change-to-non-spam spam-stat-buffer-is-spam] 3])
(defalias 'spam-stat-unregister-spam-routine #[(articles) "\301\302\"\207" [articles spam-stat-register-spam-routine t] 3])
(defalias 'spam-stat-register-ham-routine #[(articles &optional unregister) "\306\211\2052\n@\307	!\310\311!r\fq\210\312\216c\210
\203&\313 \210\202)\314 \210,\nA\211\204\306*\207" [articles article --dolist-tail-- article-string #1=#:temp-buffer unregister nil spam-get-article-as-string generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) spam-stat-buffer-change-to-spam spam-stat-buffer-is-non-spam] 3])
(defalias 'spam-stat-unregister-ham-routine #[(articles) "\301\302\"\207" [articles spam-stat-register-ham-routine t] 3])
(defalias 'spam-maybe-spam-stat-load #[nil "\205\301 \207" [spam-use-stat spam-stat-load] 1])
(defalias 'spam-maybe-spam-stat-save #[nil "\205\301 \207" [spam-use-stat spam-stat-save] 1])
(defvar spam-whitelist-cache nil)
(defvar spam-blacklist-cache nil)
(defalias 'spam-kill-whole-line #[nil "\301 \210\302\303 )\207" [kill-whole-line beginning-of-line t kill-line] 1])
#@88 Enter ADDRESS (list or single) into the whitelist.
With a non-nil REMOVE, remove them.
(defalias 'spam-enter-whitelist #[(address &optional remove) "\304	\n#\210\305\306\307!\207" [address spam-whitelist remove spam-whitelist-cache spam-enter-list nil spam-clear-cache spam-use-whitelist] 4 (#$ . 64872) "sAddress: "])
#@88 Enter ADDRESS (list or single) into the blacklist.
With a non-nil REMOVE, remove them.
(defalias 'spam-enter-blacklist #[(address &optional remove) "\304	\n#\210\305\306\307!\207" [address spam-blacklist remove spam-blacklist-cache spam-enter-list nil spam-clear-cache spam-use-whitelist] 4 (#$ . 65199) "sAddress: "])
#@140 Enter ADDRESSES into the given FILE.
Either the whitelist or the blacklist files can be used.
With a non-nil REMOVE, remove the ADDRESSES.
(defalias 'spam-enter-list #[(addresses file &optional remove) ";\203\f\305C	\n#\207\306\307	!!\204\310\307	!\311\"\210r\312	!q\210\313\211\203b\f@\211;\203[eb\210\314\315!\313\311#\203H\n\203[\316 \210\202[\n\204[db\210o\204V\317c\210\317\261\210\fA\211\204)*\320 )\207" [addresses file remove a --dolist-tail-- spam-enter-list file-exists-p file-name-directory make-directory t find-file-noselect nil re-search-forward regexp-quote spam-kill-whole-line "\n" save-buffer] 5 (#$ . 65527)])
(defalias 'spam-filelist-build-cache #[(type) "\306=\203\n	\202\n\307\310
\"?\205Q\f\203L\f\211A@\311G!\204C\312!\313\314\"\203C\315\316\317\211$\202/B)\202\320
#*\207" [type spam-blacklist-cache spam-whitelist-cache parsed-cache cache spam-caches spam-use-blacklist nil gethash zerop regexp-quote string-match "\\\\\\*" replace-match ".*" t puthash address] 5])
(defalias 'spam-filelist-check-cache #[(type from) ";\205\303	!\210\304\305\306\215\210\n)\207" [from type found spam-filelist-build-cache nil --cl-block-nil-- (byte-code "\306	\"\307\211\203'@\211\203 \310\n\f\"\203 \311\312\313\307\"\210A\211\204*\307\207" [type spam-caches address --dolist-tail-- from found gethash nil string-match t throw --cl-block-nil--] 4)] 2])
(defalias 'spam-check-whitelist #[nil "\204\304	!\305\306!\203\307\207\n\205\207" [spam-whitelist-cache spam-whitelist spam-use-whitelist-exclusive spam-split-group spam-parse-list spam-from-listed-p spam-use-whitelist t] 2])
(defalias 'spam-check-blacklist #[nil "\204\303	!\304\305!\205\n\207" [spam-blacklist-cache spam-blacklist spam-split-group spam-parse-list spam-from-listed-p spam-use-blacklist] 2])
(defalias 'spam-parse-list #[(file) "\305!\205A\306\211\307\310!rq\210\311\216\312!\210m\204=`\313 {\314y\210\315	G!\204\316	!A@\211\2066	\nB)\202+\n\237*\207" [file address contents #1=#:temp-buffer pure-address file-readable-p nil generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) insert-file-contents point-at-eol 1 zerop gnus-extract-address-components] 3])
(defalias 'spam-from-listed-p #[(type) "\303\304!\305\306\n	\"*\207" [found from type message-fetch-field "from" nil spam-filelist-check-cache] 3])
(defalias 'spam-filelist-register-routine #[(articles blacklist &optional unregister) "\203\306\202	\307\203\310\202\311\203\312\202\313\203#\313\202$\312\314\211\211\211\314\211\203\263@\315!\316!\314\211;\203\251\314\211\203\205@\204|;\203|\317\f\"\203|\320A\211\204a*\204\240\321\322$\203\240	B\f\nB\204\251\fB+A\211\204>*\203\301\320\"\202\360
\n\320\"\210	\314\211\203\352@\323\316!\322$\210A\211\204\320*\314\".\207" [blacklist article-unregister-list unregister-list addresses from remove-function spam-use-whitelist spam-use-blacklist ham spam spam-enter-blacklist spam-enter-whitelist nil spam-fetch-field-from-fast spam-fetch-field-message-id-fast string-match t spam-log-unregistration-needed-p process spam-log-undo-registration enter-function declassification de-symbol articles article --dolist-tail-- sender-ignored id spam-blacklist-ignored-regexes ignore-regex unregister] 9])
(defalias 'spam-blacklist-unregister-routine #[(articles) "\301\302\"\207" [articles spam-blacklist-register-routine t] 3])
(defalias 'spam-blacklist-register-routine #[(articles &optional unregister) "\302\303	#\207" [articles unregister spam-filelist-register-routine t] 4])
(defalias 'spam-whitelist-unregister-routine #[(articles) "\301\302\"\207" [articles spam-whitelist-register-routine t] 3])
(defalias 'spam-whitelist-register-routine #[(articles &optional unregister) "\302\303	#\207" [articles unregister spam-filelist-register-routine nil] 4])
(defalias 'spam-report-gmane-register-routine #[(articles) "\205\301\302\"\207" [articles apply spam-report-gmane-spam] 3])
(defalias 'spam-report-gmane-unregister-routine #[(articles) "\205\301\302\"\207" [articles apply spam-report-gmane-ham] 3])
(defalias 'spam-report-resend-register-ham-routine #[(articles) "\301\302\"\207" [articles spam-report-resend-register-routine t] 3])
(defalias 'spam-report-resend-register-routine #[(articles &optional ham) "\203\n\305	!\202
\306	!\211\242\206\307\f\"*\207" [ham gnus-newsgroup-name resend-to-gp spam-report-resend-to articles gnus-parameter-ham-resend-to gnus-parameter-spam-resend-to spam-report-resend] 4])
(defalias 'spam-check-bogofilter-headers #[(&optional score) "\305!\211\205&\n\203\306\307	\"\203\310\311	\"\202&\312\202&\306	\"\205&\f)\207" [spam-bogofilter-header header score spam-bogofilter-bogosity-positive-spam-header spam-split-group message-fetch-field string-match "spamicity=\\([0-9.]+\\)" match-string 1 "0"] 4])
#@37 Get the Bogofilter spamicity score.
(defalias 'spam-bogofilter-score #[(&optional recheck) "\304 \305\216\306\307!\210	q\210\n\204\310\307!\206\311\307!\306 \210\312\313\"\210\206'\314+\207" [#1=#:wconfig gnus-article-buffer recheck score current-window-configuration ((set-window-configuration #1#)) gnus-summary-show-article t spam-check-bogofilter-headers spam-check-bogofilter message "Spamicity score %s" "0"] 3 (#$ . 70581) "P"])
#@46 Verify the Bogofilter version is sufficient.
(defalias 'spam-verify-bogofilter #[nil "\302=\203\303\304\305\306\307	\"!\"?\207" [spam-bogofilter-valid spam-bogofilter-program unknown string-match "^bogofilter version 0\\.\\([0-9]\\|1[01]\\)\\." shell-command-to-string format "%s -V"] 6 (#$ . 71032)])
#@70 Check the Bogofilter backend for the classification of this message.
(defalias 'spam-check-bogofilter #[(&optional score) "\306 \203@\307 \310\311\312!r\fq\210\313\216\307 rq\210\314\315ed\310
\310\n\2032\316\n\317BB\2023\320&\210)\321!,	+\207\322\323\324\"\207" [spam-bogofilter-database-directory return db article-buffer-name #1=#:temp-buffer temp-buffer-name spam-verify-bogofilter buffer-name nil generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) apply call-process-region "-d" ("-v") ("-v") spam-check-bogofilter-headers gnus-error 5 "`spam.el' doesn't support obsolete bogofilter versions" spam-bogofilter-program score] 11 (#$ . 71345)])
#@62 Register an article, given as a string, as spam or non-spam.
(defalias 'spam-bogofilter-register-with-bogofilter #[(articles spam &optional unregister) "\306 \203u\307\211\205s\n@\310	!\f\203&
\203!\2021\2021
\203/\2021\211;\203j\311\312!rq\210\313\216c\210\314\315ed\307\211\211\203e\316\317BB\202f\320&	\210++\nA\211\204
\307*\207\321\322\323\"\207" [articles article --dolist-tail-- spam-bogofilter-database-directory unregister spam spam-verify-bogofilter nil spam-get-article-as-string generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1=#:temp-buffer buffer-name kill-buffer] 2)) apply call-process-region "-d" ("-v") ("-v") gnus-error 5 "`spam.el' doesn't support obsolete bogofilter versions" spam-bogofilter-spam-strong-switch spam-bogofilter-ham-strong-switch spam-bogofilter-spam-switch spam-bogofilter-ham-switch switch db article-string #1# spam-bogofilter-program] 13 (#$ . 72073)])
(defalias 'spam-bogofilter-register-spam-routine #[(articles &optional unregister) "\302\303	#\207" [articles unregister spam-bogofilter-register-with-bogofilter t] 4])
(defalias 'spam-bogofilter-unregister-spam-routine #[(articles) "\301\302\"\207" [articles spam-bogofilter-register-spam-routine t] 3])
(defalias 'spam-bogofilter-register-ham-routine #[(articles &optional unregister) "\302\303	#\207" [articles unregister spam-bogofilter-register-with-bogofilter nil] 4])
(defalias 'spam-bogofilter-unregister-ham-routine #[(articles) "\301\302\"\207" [articles spam-bogofilter-register-ham-routine t] 3])
#@62 Run spamoracle on an article to determine whether it's spam.
(defalias 'spam-check-spamoracle #[nil "\306 \307\310!r	q\210\311\216\306 rq\210\312\313ed\314\n\314\f\203(\315\f\316BB\202)\317&\211\320=\203E\nq\210eb\210\321\322\314\323#\205I\202I\324\325
\".\207" [article-buffer-name #1=#:temp-buffer temp-buffer-name spam-spamoracle-binary spam-spamoracle-database status buffer-name generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) apply call-process-region nil "-f" ("mark") ("mark") 0 re-search-forward "^X-Spam: yes;" t error "Error running spamoracle: %s" spam-split-group] 12 (#$ . 73663)])
#@34 Run spamoracle in training mode.
(defalias 'spam-spamoracle-learn #[(articles article-is-spam-p &optional unregister) "\306\307!rq\210\310\216\311 \212eb\210\n\312\211\203(\f@\313!c\210\fA\211\204*\314
\"\2035\315\2026\316\317\320ed\312	\312\203P\321\322F\202T\322D&\211\323=?\205d\324\325\".\207" [#1=#:temp-buffer temp-buffer-name articles article --dolist-tail-- unregister generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) buffer-name nil spam-get-article-as-string spam-xor "-spam" "-good" apply call-process-region "-f" "add" 0 error "Error running spamoracle: %s" article-is-spam-p arg spam-spamoracle-binary spam-spamoracle-database status] 13 (#$ . 74342)])
(defalias 'spam-spamoracle-learn-ham #[(articles &optional unregister) "\302\303	#\207" [articles unregister spam-spamoracle-learn nil] 4])
(defalias 'spam-spamoracle-unlearn-ham #[(articles &optional unregister) "\301\302\"\207" [articles spam-spamoracle-learn-ham t] 3])
(defalias 'spam-spamoracle-learn-spam #[(articles &optional unregister) "\302\303	#\207" [articles unregister spam-spamoracle-learn t] 4])
(defalias 'spam-spamoracle-unlearn-spam #[(articles &optional unregister) "\301\302\"\207" [articles spam-spamoracle-learn-spam t] 3])
#@72 Check the SpamAssassin headers for the classification of this message.
(defalias 'spam-check-spamassassin-headers #[(&optional score) "\203\306	!\211\205\307\n\"\203\310\311\n\"\202\312)\207\306\f!\211\205.\307
\n\"\205.)\207" [score spam-spamassassin-spam-status-header header spam-spamassassin-score-regexp spam-spamassassin-spam-flag-header spam-spamassassin-positive-spam-flag-header message-fetch-field string-match match-string 1 "0" spam-split-group] 4 (#$ . 75662)])
#@72 Check the SpamAssassin backend for the classification of this message.
(defalias 'spam-check-spamassassin #[(&optional score) "\306 \307\310!r	q\210\311\216\306 rq\210\312\313ed\314\n\314\f&\210)eb\210\315
!-\207" [article-buffer-name #1=#:temp-buffer temp-buffer-name spam-assassin-program spam-spamassassin-arguments score buffer-name generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) apply call-process-region nil spam-check-spamassassin-headers] 9 (#$ . 76159)])
#@28 Get the SpamAssassin score
(defalias 'spam-spamassassin-score #[(&optional recheck) "\304 \305\216\306\307!\210	q\210\n\204\310\307!\206\311\307!\306 \210\312\313\"\210\206'\314+\207" [#1=#:wconfig gnus-article-buffer recheck score current-window-configuration ((set-window-configuration #1#)) gnus-summary-show-article t spam-check-spamassassin-headers spam-check-spamassassin message "SpamAssassin score %s" "0"] 3 (#$ . 76698) "P"])
#@69 Register articles with spamassassin's sa-learn as spam or non-spam.
(defalias 'spam-spamassassin-register-with-sa-learn #[(articles spam &optional unregister) "\205\200	\203\f\n\202\203\f\202
\306 \307\310!rq\210\311\216\312\211\203c@\312rq\210\313!);\203Y\314\315 \316Qc\210c\210\316c\210)A\211\2041*\317\320ed\312\211\211\321\203yC\202}\322D&	-\207" [articles unregister spam-sa-learn-unregister-switch spam spam-sa-learn-spam-switch spam-sa-learn-ham-switch buffer-name generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1=#:temp-buffer buffer-name kill-buffer] 2)) nil spam-get-article-as-string "From nobody " current-time-string "\n" apply call-process-region "--mbox" "--no-rebuild" summary-buffer-name action #1# article --dolist-tail-- article-string spam-sa-learn-program spam-sa-learn-rebuild] 12 (#$ . 77149)])
(defalias 'spam-spamassassin-register-spam-routine #[(articles &optional unregister) "\302\303	#\207" [articles unregister spam-spamassassin-register-with-sa-learn t] 4])
(defalias 'spam-spamassassin-register-ham-routine #[(articles &optional unregister) "\302\303	#\207" [articles unregister spam-spamassassin-register-with-sa-learn nil] 4])
(defalias 'spam-spamassassin-unregister-spam-routine #[(articles) "\301\302\211#\207" [articles spam-spamassassin-register-with-sa-learn t] 4])
(defalias 'spam-spamassassin-unregister-ham-routine #[(articles) "\301\302\303#\207" [articles spam-spamassassin-register-with-sa-learn nil t] 4])
(defalias 'spam-check-bsfilter-headers #[(&optional score) "\203\f\305	!\206\306\207\305\n!\211\205\307\310\"\205\f)\207" [score spam-bsfilter-probability-header spam-bsfilter-header header spam-split-group nnmail-fetch-field "0" string-match "YES"] 4])
#@35 Get the Bsfilter spamicity score.
(defalias 'spam-bsfilter-score #[(&optional recheck) "\304 \305\216\306\307!\210	q\210\n\204\310\307!\206\311\307!\306 \210\312\313\"\210\206'\314+\207" [#1=#:wconfig gnus-article-buffer recheck score current-window-configuration ((set-window-configuration #1#)) gnus-summary-show-article t spam-check-bsfilter-headers spam-check-bsfilter message "Spamicity score %s" "0"] 3 (#$ . 78963) "P"])
#@68 Check the Bsfilter backend for the classification of this message.
(defalias 'spam-check-bsfilter #[(&optional score) "\306 \307\310\311!r\fq\210\312\216\306 rq\210\313\314ed\307
\307\315\316\317\n\205+\320\nD&\210)\321!,	+\207" [spam-bsfilter-database-directory return dir article-buffer-name #1=#:temp-buffer temp-buffer-name buffer-name nil generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) apply call-process-region "--pipe" "--insert-flag" "--insert-probability" "--homedir" spam-check-bsfilter-headers spam-bsfilter-program score] 13 (#$ . 79406)])
#@62 Register an article, given as a string, as spam or non-spam.
(defalias 'spam-bsfilter-register-with-bsfilter #[(articles spam &optional unregister) "\306\211\205e\n@\307	!\203\f\203
\202*\202*\f\203(\202*\211;\203\\\310\311!rq\210\312\216c\210\313\314ed\306\211\211\315\205X\316D&\n\210+*\nA\211\204\306*\207" [articles article --dolist-tail-- unregister spam spam-bsfilter-spam-strong-switch nil spam-get-article-as-string generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1=#:temp-buffer buffer-name kill-buffer] 2)) apply call-process-region "--update" "--homedir" spam-bsfilter-ham-strong-switch spam-bsfilter-spam-switch spam-bsfilter-ham-switch switch article-string #1# spam-bsfilter-program spam-bsfilter-database-directory] 13 (#$ . 80041)])
(defalias 'spam-bsfilter-register-spam-routine #[(articles &optional unregister) "\302\303	#\207" [articles unregister spam-bsfilter-register-with-bsfilter t] 4])
(defalias 'spam-bsfilter-unregister-spam-routine #[(articles) "\301\302\"\207" [articles spam-bsfilter-register-spam-routine t] 3])
(defalias 'spam-bsfilter-register-ham-routine #[(articles &optional unregister) "\302\303	#\207" [articles unregister spam-bsfilter-register-with-bsfilter nil] 4])
(defalias 'spam-bsfilter-unregister-ham-routine #[(articles) "\301\302\"\207" [articles spam-bsfilter-register-ham-routine t] 3])
(defalias 'spam-check-crm114-headers #[(&optional score) "\305!\211\205&\n\203\306\307	\"\203\310\311	\"\202&\312\202&\306	\"\205&\f)\207" [spam-crm114-header header score spam-crm114-positive-spam-header spam-split-group message-fetch-field string-match "( pR: \\([0-9.-]+\\)" match-string 1 "0"] 4])
#@31 Get the CRM114 Mailfilter pR.
(defalias 'spam-crm114-score #[nil "\303 \304\216\305\306!\210	q\210\307\306!\206\310\306!\305 \210\311\312\n\"\210\n\206#\313+\207" [#1=#:wconfig gnus-article-buffer score current-window-configuration ((set-window-configuration #1#)) gnus-summary-show-article t spam-check-crm114-headers spam-check-crm114 message "pR: %s" "0"] 3 (#$ . 81775) nil])
#@77 Check the CRM114 Mailfilter backend for the classification of this message.
(defalias 'spam-check-crm114 #[(&optional score) "\306 \307\310\311!r\fq\210\312\216\306 rq\210\313\314ed\307
\307\n\205)\315\nPC&\210)\316!,	+\207" [spam-crm114-database-directory return db article-buffer-name #1=#:temp-buffer temp-buffer-name buffer-name nil generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1# buffer-name kill-buffer] 2)) apply call-process-region "--fileprefix=" spam-check-crm114-headers spam-crm114-program score] 10 (#$ . 82166)])
#@62 Register an article, given as a string, as spam or non-spam.
(defalias 'spam-crm114-register-with-crm114 #[(articles spam &optional unregister) "\306\211\205i\n@\307	!\f\203!
\203\202,\202,
\203*\202,\211;\203`\310\311!rq\210\312\216c\210\313\314ed\306\211\211\205\\\315PD&\210++\nA\211\204\306*\207" [articles article --dolist-tail-- spam-crm114-database-directory unregister spam nil spam-get-article-as-string generate-new-buffer " *temp*" ((byte-code "\301!\203\n\302!\210\301\207" [#1=#:temp-buffer buffer-name kill-buffer] 2)) apply call-process-region "--fileprefix=" spam-crm114-spam-strong-switch spam-crm114-ham-strong-switch spam-crm114-spam-switch spam-crm114-ham-switch switch db article-string #1# spam-crm114-program] 12 (#$ . 82746)])
(defalias 'spam-crm114-register-spam-routine #[(articles &optional unregister) "\302\303	#\207" [articles unregister spam-crm114-register-with-crm114 t] 4])
(defalias 'spam-crm114-unregister-spam-routine #[(articles) "\301\302\"\207" [articles spam-crm114-register-spam-routine t] 3])
(defalias 'spam-crm114-register-ham-routine #[(articles &optional unregister) "\302\303	#\207" [articles unregister spam-crm114-register-with-crm114 nil] 4])
(defalias 'spam-crm114-unregister-ham-routine #[(articles) "\301\302\"\207" [articles spam-crm114-register-ham-routine t] 3])
#@296 Install the spam.el hooks and do other initialization.
When SYMBOLS is given, set those variables to t.  This is so you
can call `spam-initialize' before you set spam-use-* variables on
explicitly, and matters only if you need the extra headers
installed through `spam-necessary-extra-headers'.
(defalias 'spam-initialize #[(&rest symbols) "\306\211\203\n@\211\307L\210\nA\211\204*\310 \306\211\2034\n@\311\312\"\210\311\313\"\210\nA\211\204 *\307\314
B\315\316\317\"\210\315\320\321\"\210\315\322\321\"\210\315\323\324\"\210\315\325\326\"\210\315\327\330\"\210\315\331\332\"\207" [symbols var --dolist-tail-- header spam-install-hooks gnus-summary-highlight nil t spam-necessary-extra-headers add-to-list nnmail-extra-headers gnus-extra-headers ((eq mark gnus-spam-mark) . spam) add-hook gnus-save-newsrc-hook spam-maybe-spam-stat-save gnus-get-top-new-news-hook spam-maybe-spam-stat-load gnus-startup-hook gnus-summary-prepare-exit-hook spam-summary-prepare-exit gnus-summary-prepare-hook spam-summary-prepare gnus-get-new-news-hook spam-setup-widening gnus-summary-prepared-hook spam-find-spam] 4 (#$ . 84127) nil])
#@30 Uninstall the spam.el hooks.
(defalias 'spam-unload-hook #[nil "\300\301\302\"\210\300\303\304\"\210\300\305\304\"\210\300\306\307\"\210\300\310\311\"\210\300\312\313\"\210\300\310\314\"\207" [remove-hook gnus-save-newsrc-hook spam-maybe-spam-stat-save gnus-get-top-new-news-hook spam-maybe-spam-stat-load gnus-startup-hook gnus-summary-prepare-exit-hook spam-summary-prepare-exit gnus-summary-prepare-hook spam-summary-prepare gnus-get-new-news-hook spam-setup-widening spam-find-spam] 3 (#$ . 85271) nil])
(byte-code "\301\302\211\"\210\203\f\303 \210\304\305!\207" [spam-install-hooks add-hook spam-unload-hook spam-initialize provide spam] 3)

MMCT - 2023