;;; spam.el --- Identifying spam
-;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+
+;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
-;; Keywords: network
+;; Maintainer: Ted Zlatanov <tzz@lifelogs.com>
+;; Keywords: network, spam, mail, bogofilter, BBDB, dspam, dig, whitelist, blacklist, gmane, hashcash, spamassassin, bsfilter, ifile, stat, crm114, spamoracle
;; This file is part of GNU Emacs.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
;;; Several TODO items are marked as such
-;; TODO: spam scores, detection of spam in newsgroups, cross-server splitting,
-;; remote processing, training through files
+;; TODO: cross-server splitting, remote processing, training through files
;;; Code:
+;;{{{ compilation directives and autoloads/requires
+
(eval-when-compile (require 'cl))
+(eval-when-compile (require 'spam-report))
+(eval-when-compile (require 'hashcash))
(require 'gnus-sum)
;; autoload spam-report
(eval-and-compile
(autoload 'spam-report-gmane "spam-report")
+ (autoload 'spam-report-gmane-spam "spam-report")
+ (autoload 'spam-report-gmane-ham "spam-report")
(autoload 'spam-report-resend "spam-report"))
;; autoload gnus-registry
(eval-and-compile
(autoload 'query-dns "dns"))
-;;; Main parameters.
+;;}}}
+
+;;{{{ Main parameters.
+(defvar spam-backends nil
+ "List of spam.el backends with all the pertinent data.
+Populated by spam-install-backend-super.")
(defgroup spam nil
- "Spam configuration.")
+ "Spam configuration."
+ :version "22.1"
+ :group 'mail
+ :group 'news)
+
+(defcustom spam-summary-exit-behavior 'default
+ "Exit behavior at the time of summary exit.
+Note that setting the spam-use-move or spam-use-copy backends on
+a group through group/topic parameters overrides this mechanism."
+ :type '(choice (const 'default :tag
+ "Move spam out of all groups. Move ham out of spam groups.")
+ (const 'move-all :tag
+ "Move spam out of all groups. Move ham out of all groups.")
+ (const 'move-none :tag
+ "Never move spam or ham out of any groups."))
+ :group 'spam)
(defcustom spam-directory (nnheader-concat gnus-directory "spam/")
"Directory for spam whitelists and blacklists."
:type 'directory
:group 'spam)
-(defcustom spam-move-spam-nonspam-groups-only t
- "Whether spam should be moved in non-spam groups only.
-When t, only ham and unclassified groups will have their spam moved
-to the spam-process-destination. When nil, spam will also be moved from
-spam groups."
- :type 'boolean
- :group 'spam)
-
(defcustom spam-mark-new-messages-in-spam-group-as-spam t
"Whether new messages in a spam group should get the spam-mark."
:type 'boolean
- :group 'spam)
-
-(defcustom spam-process-ham-in-nonham-groups nil
- "Whether ham should be processed in non-ham groups."
- :type 'boolean
+ ;; :version "22.1" ;; Gnus 5.10.8 / No Gnus 0.3
:group 'spam)
(defcustom spam-log-to-registry nil
:type 'boolean
:group 'spam)
-(defcustom spam-process-ham-in-spam-groups nil
- "Whether ham should be processed in spam groups."
- :type 'boolean
- :group 'spam)
-
(defcustom spam-mark-only-unseen-as-spam t
"Whether only unseen articles should be marked as spam in spam groups.
When nil, all unread articles in a spam group are marked as
(defcustom spam-blackhole-good-server-regex nil
"String matching IP addresses that should not be checked in the blackholes.
Only meaningful if you enable `spam-use-blackholes'."
- :type '(radio (const nil)
- (regexp :format "%t: %v\n" :size 0))
+ :type '(radio (const nil) regexp)
+ :group 'spam)
+
+(defface spam
+ '((((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."
:group 'spam)
+;; backward-compatibility alias
+(put 'spam-face 'face-alias 'spam)
-(defcustom spam-face 'gnus-splash-face
+(defcustom spam-face 'spam
"Face for spam-marked articles."
:type 'face
:group 'spam)
:type '(repeat (regexp :tag "Regular expression to match ham body"))
:group 'spam)
+(defcustom spam-summary-score-preferred-header nil
+ "Preferred header to use for spam-summary-score."
+ :type '(choice :tag "Header name"
+ (symbol :tag "SpamAssassin etc" X-Spam-Status)
+ (symbol :tag "Bogofilter" X-Bogosity)
+ (const :tag "No preference, take best guess." nil))
+ :group 'spam)
+
(defgroup spam-ifile nil
"Spam ifile configuration."
:group 'spam)
(const :tag "Bogofilter is not installed"))
:group 'spam-bogofilter)
+(defvar spam-bogofilter-valid 'unknown "Is the bogofilter version valid?")
+
(defcustom spam-bogofilter-header "X-Bogosity"
"The header that Bogofilter inserts in messages."
:type 'string
:test 'equal)
"Cache of spam detection entries.")
-(defvar spam-old-ham-articles nil
- "List of old ham articles, generated when a group is entered.")
-
-(defvar spam-old-spam-articles nil
- "List of old spam articles, generated when a group is entered.")
+(defvar spam-old-articles nil
+ "List of old ham and spam articles, generated when a group is entered.")
(defvar spam-split-disabled nil
"If non-nil, `spam-split' is disabled, and always returns nil.")