annotate lisp/mail/rmail-spam-filter.el @ 62412:6ac7ed8e212b

(makefile-dependency-regex): Turn it into a var, and refine it to mask one more level of nested vars. (makefile-rule-action-regex): Turn it into a var, and refine it so it recognizes backslashed continuation lines as belonging to the same command. (makefile-macroassign-regex): Refine it so it recognizes backslashed continuation lines as belonging to the same command. (makefile-var-use-regex): Don't look at the next char, because it might be the same one to be skipped by the initial [^$], leading to an overlooked variable use. (makefile-make-font-lock-keywords): Remove two parameters, which are now variables that some of the modes set locally. Handle dependency and rule action matching through functions, because regexps alone match too often. Dependency matching now comes last, so it can check, whether a colon already matched something else. (makefile-mode): Inform that font-lock improves makefile parsing capabilities. (makefile-match-dependency, makefile-match-action): New functions.
author Daniel Pfeiffer <occitan@esperanto.org>
date Mon, 16 May 2005 20:13:09 +0000
parents 875255640d7a
children 18a818a2ee7c b637c617432f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
1 ;;; rmail-spam-filter.el --- spam filter for rmail, the emacs mail reader.
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
2
54002
e712b82ead1a (vm-use-spam-filter)
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53730
diff changeset
3 ;; Copyright (C) 2002
e712b82ead1a (vm-use-spam-filter)
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53730
diff changeset
4 ;; Free Software Foundation, Inc.
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
5 ;; Keywords: email, spam, filter, rmail
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
6 ;; Author: Eli Tziperman <eli AT deas.harvard.edu>
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
7
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
9
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
13 ;; any later version.
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
14
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
18 ;; GNU General Public License for more details.
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
19
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
23 ;; Boston, MA 02111-1307, USA.
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
24
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
25 ;;; Commentary:
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
26 ;;; -----------
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
27
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
28 ;;; Automatically recognize and delete junk email before it is
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
29 ;;; displayed in rmail/rmail-summary. Spam emails are defined by
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
30 ;;; specifying one or more of the sender, subject and contents.
54002
e712b82ead1a (vm-use-spam-filter)
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53730
diff changeset
31 ;;; URL: http://www.weizmann.ac.il/~eli/Downloads/rmail-spam-filter/
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
32
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
33 ;;; Usage:
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
34 ;;; ------
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
35
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
36 ;;; put in your .emacs:
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
37
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
38 ;;; (load "rmail-spam-filter.el")
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
39
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
40 ;;; and use customize (in rmail-spam-filter group) to:
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
41
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
42 ;;; (*) turn on the variable rmail-use-spam-filter,
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
43
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
44 ;;; (*) specify in variable rsf-definitions-alist what sender,
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
45 ;;; subject and contents make an email be considered spam.
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
46
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
47 ;;; in addition, you may:
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
48
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
49 ;;; (*) Block future mail with the subject or sender of a message
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
50 ;;; while reading it in RMAIL: just click on the "Spam" item on the
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
51 ;;; menubar, and add the subject or sender to the list of spam
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
52 ;;; definitions using the mouse and the appropriate menu item. You
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
53 ;;; need to later also save the list of spam definitions using the
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
54 ;;; same menu item, or alternatively, see variable
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
55 ;;; `rsf-autosave-newly-added-definitions'.
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
56
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
57 ;;; (*) specify if blind-cc'ed mail (no "To:" header field) is to be
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
58 ;;; treated as spam (variable rsf-no-blind-cc; Thanks to Ethan
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
59 ;;; Brown <ethan@gso.saic.com> for this).
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
60
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
61 ;;; (*) specify if rmail-spam-filter should ignore case of spam
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
62 ;;; definitions (variable rsf-ignore-case; Thanks to
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
63 ;;; Ethan Brown <ethan@gso.saic.com> for the suggestion).
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
64
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
65 ;;; (*) Specify a "white-list" of trusted senders. If any
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
66 ;;; rsf-white-list string matches a substring of the "From"
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
67 ;;; header, the message is flagged as a valid, non-spam message (Ethan
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
68 ;;; Brown <ethan@gso.saic.com>).
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
69
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
70 ;;; (*) rmail-spam-filter is best used with a general purpose spam
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
71 ;;; filter such as the procmail-based http://www.spambouncer.org/.
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
72 ;;; Spambouncer is set to only mark messages as spam/blocked/bulk/OK
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
73 ;;; via special headers, and these headers may then be defined in
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
74 ;;; rmail-spam-filter such that the spam is rejected by
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
75 ;;; rmail-spam-filter itself.
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
76
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
77 ;;; (*) rmail spam filter also works with bbdb to prevent spam senders
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
78 ;;; from entering into the .bbdb file. See variable
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
79 ;;; "rsf-auto-delete-spam-bbdb-entries". This is done
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
80 ;;; in two ways: (a) bbdb is made not to auto-create entries for
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
81 ;;; messages that are deleted by the rmail-spam-filter, (b) when a
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
82 ;;; message is deleted in rmail, the user is offered to delete the
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
83 ;;; sender's bbdb entry as well _if_ it was created at the same day.
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
84
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
85 (require 'rmail)
54002
e712b82ead1a (vm-use-spam-filter)
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53730
diff changeset
86 (if (> emacs-major-version 20)
e712b82ead1a (vm-use-spam-filter)
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53730
diff changeset
87 (require 'rmailsum)
e712b82ead1a (vm-use-spam-filter)
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53730
diff changeset
88 (if (not (fboundp 'rmail-make-summary-line)) (load-library "rmailsum")))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
89
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
90 ;; For find-if and other cool common lisp functions we may want to use.
53685
2d1c4cfccc4a Use two semicolons as Commentary line prefix.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 53665
diff changeset
91 (eval-when-compile
2d1c4cfccc4a Use two semicolons as Commentary line prefix.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 53665
diff changeset
92 (require 'cl))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
93
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
94 (defgroup rmail-spam-filter nil
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
95 "Spam filter for RMAIL, the mail reader for Emacs."
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
96 :group 'rmail)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
97
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
98 (defcustom rmail-use-spam-filter nil
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
99 "*Non-nil to activate the rmail spam filter.
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
100 Specify `rsf-definitions-alist' to define what you consider spam
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
101 emails."
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
102 :type 'boolean
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
103 :group 'rmail-spam-filter )
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
104
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
105 (defcustom rsf-file "~/XRMAIL-SPAM"
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
106 "*Name of rmail file for optionally saving some of the spam.
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
107 Spam may be either just deleted, or saved in a separate spam file to
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
108 be looked at at a later time. Whether the spam is just deleted or
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
109 also saved in a separete spam file is specified for each definition of
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
110 spam, as one of the fields of `rsf-definitions-alist'"
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
111 :type 'string
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
112 :group 'rmail-spam-filter )
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
113
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
114 (defcustom rsf-no-blind-cc nil
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
115 "*Non-nil to treat blind CC (no To: header) as spam."
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
116 :type 'boolean
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
117 :group 'rmail-spam-filter )
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
118
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
119 (defcustom rsf-ignore-case nil
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
120 "*Non-nil to ignore case in `rsf-definitions-alist'."
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
121 :type 'boolean
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
122 :group 'rmail-spam-filter )
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
123
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
124 (defcustom rsf-beep nil
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
125 "*Non-nil to beep if spam is found."
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
126 :type 'boolean
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
127 :group 'rmail-spam-filter )
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
128
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
129 (defcustom rsf-sleep-after-message 2.0
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
130 "*Seconds to wait after display of message that spam was found."
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
131 :type 'number
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
132 :group 'rmail-spam-filter )
53685
2d1c4cfccc4a Use two semicolons as Commentary line prefix.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 53665
diff changeset
133
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
134 (defcustom rsf-min-region-to-spam-list 7
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
135 "*User may highlight a region in an incomming message and use
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
136 the menubar to add this region to the spam definitions. This
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
137 variable specifies the minimum size of region that may be added
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
138 to spam list, to avoid accidentally adding a too short region
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
139 which would result in false positive identification of spam
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
140 messages."
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
141 :type 'integer
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
142 :group 'rmail-spam-filter )
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
143
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
144 (defcustom rsf-auto-delete-spam-bbdb-entries nil
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
145 "*Non-nil to make sure no entries are made in bbdb for spam emails.
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
146 This is done in two ways: (1) bbdb is made not to auto-create entries
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
147 for messages that are deleted by the `rmail-spam-filter', (2) when a
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
148 message is deleted in rmail, the user is offered to delete the
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
149 sender's bbdb entry as well if it was created at the same day. Note
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
150 that Emacs needs to be restarted after setting this option for it to
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
151 take an effect."
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
152 :type 'boolean
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
153 :group 'rmail-spam-filter )
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
154
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
155 (defcustom rsf-autosave-newly-added-definitions nil
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
156 "*Non-nil to auto save new spam entries.
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
157 New entries entered via the spam menu bar item are then saved to
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
158 customization file immediately after being added via the menu bar, and
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
159 do not require explicitly saving the file after adding the new
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
160 entries."
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
161 :type 'boolean
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
162 :group 'rmail-spam-filter )
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
163
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
164 (defcustom rsf-white-list nil
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
165 "*List of strings to identify valid senders.
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
166 If any rsf-white-list string matches a substring of the 'From'
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
167 header, the message is flagged as a valid, non-spam message. Example:
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
168 If your domain is emacs.com then including 'emacs.com' in your
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
169 rsf-white-list would flag all mail from your colleagues as
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
170 valid."
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
171 :type '(repeat string)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
172 :group 'rmail-spam-filter )
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
173
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
174 (defcustom rsf-definitions-alist nil
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
175 "*Alist matching strings defining what messages are considered spam.
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
176 Each definition may contain specifications of one or more of the
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
177 elements {subject, sender, recipients or contents}, as well as a
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
178 definition of what to do with the spam (action item). A spam e-mail
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
179 is defined as one that fits all of the specified elements of any one
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
180 of the spam definitions. The strings that specify spam subject,
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
181 sender, etc, may be regexp. For example, to specify that the subject
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
182 may be either 'this is spam' or 'another spam', use the regexp: 'this
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
183 is spam\\|another spam' (without the single quotes). To specify that
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
184 if the contents contain both this and that the message is spam,
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
185 specify 'this\\&that' in the appropriate spam definition field."
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
186 :type '(repeat
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
187 (list :format "%v"
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
188 (cons :format "%v" :value (from . "")
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
189 (const :format "" from)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
190 (string :tag "From" ""))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
191 (cons :format "%v" :value (to . "")
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
192 (const :format "" to)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
193 (string :tag "To" ""))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
194 (cons :format "%v" :value (subject . "")
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
195 (const :format "" subject)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
196 (string :tag "Subject" ""))
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
197 (cons :format "%v" :value (content-type . "")
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
198 (const :format "" content-type)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
199 (string :tag "Content-Type" ""))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
200 (cons :format "%v" :value (contents . "")
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
201 (const :format "" contents)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
202 (string :tag "Contents" ""))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
203 (cons :format "%v" :value (action . output-and-delete)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
204 (const :format "" action)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
205 (choice :tag "Action selection"
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
206 (const :tag "output to spam folder and delete" output-and-delete)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
207 (const :tag "delete spam" delete-spam)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
208 ))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
209 ))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
210 :group 'rmail-spam-filter)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
211
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
212 (defvar rsf-scanning-messages-now nil
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
213 "Non nil when rmail-spam-filter scans messages,
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
214 for interaction with `rsf-bbdb-auto-delete-spam-entries'")
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
215
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
216 ;; the advantage over the automatic filter definitions is the AND conjunction
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
217 ;; of in-one-definition-elements
54002
e712b82ead1a (vm-use-spam-filter)
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53730
diff changeset
218 (defun check-field (field-symbol message-data definition result)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
219 "Check if field-symbol is in `rsf-definitions-alist'.
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
220 Capture maybe-spam and this-is-a-spam-email in a cons in result,
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
221 where maybe-spam is in first and this-is-a-spam-email is in rest.
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
222 The values are returned by destructively changing result.
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
223 If FIELD-SYMBOL field does not exist AND is not specified,
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
224 this may still be spam due to another element...
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
225 if (first result) is nil, we already have a contradiction in another
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
226 field"
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
227 (let ((definition-field (cdr (assoc field-symbol definition))))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
228 (if (and (first result) (> (length definition-field) 0))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
229 ;; only in this case can maybe-spam change from t to nil
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
230 ;; ... else, if FIELD-SYMBOL field does appear in the message,
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
231 ;; and it also appears in spam definition list, this
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
232 ;; is potentially a spam:
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
233 (if (and message-data
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
234 (string-match definition-field message-data))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
235 ;; if we do not get a contradiction from another field, this is
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
236 ;; spam
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
237 (setf (rest result) t)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
238 ;; the message data contradicts the specification, this is no spam
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
239 (setf (first result) nil)))))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
240
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
241 (defun rmail-spam-filter (msg)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
242 "Return nil if msg is spam based on rsf-definitions-alist.
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
243 If spam, optionally output msg to a file `rsf-file' and delete
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
244 it from rmail file. Called for each new message retrieved by
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
245 `rmail-get-new-mail'."
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
246
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
247 (let ((old-message)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
248 (return-value)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
249 (this-is-a-spam-email)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
250 (maybe-spam)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
251 (message-sender)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
252 (message-recipients)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
253 (message-subject)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
254 (message-content-type)
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
255 (num-spam-definition-elements)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
256 (num-element 0)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
257 (exit-while-loop nil)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
258 (saved-case-fold-search case-fold-search)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
259 (save-current-msg)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
260 (rsf-saved-bbdb/mail_auto_create_p nil)
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
261 )
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
262
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
263 ;; make sure bbdb does not create entries for messages while spam
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
264 ;; filter is scanning the rmail file:
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
265 (setq rsf-saved-bbdb/mail_auto_create_p 'bbdb/mail_auto_create_p)
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
266 (setq bbdb/mail_auto_create_p nil)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
267 ;; let `rsf-bbdb-auto-delete-spam-entries' know that rmail spam
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
268 ;; filter is running, so that deletion of rmail messages should be
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
269 ;; ignored for now:
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
270 (setq rsf-scanning-messages-now t)
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
271 (save-excursion
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
272 (save-restriction
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
273 (setq this-is-a-spam-email nil)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
274 ;; Narrow buffer to header of message and get Sender and
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
275 ;; Subject fields to be used below:
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
276 (save-restriction
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
277 (goto-char (rmail-msgbeg msg))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
278 (narrow-to-region (point) (progn (search-forward "\n\n") (point)))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
279 (setq message-sender (mail-fetch-field "From"))
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
280 (setq message-recipients
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
281 (concat (mail-fetch-field "To")
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
282 (if (mail-fetch-field "Cc")
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
283 (concat ", " (mail-fetch-field "Cc")))))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
284 (setq message-subject (mail-fetch-field "Subject"))
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
285 (setq message-content-type (mail-fetch-field "Content-Type"))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
286 )
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
287 ;; Find number of spam-definition elements in the list
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
288 ;; rsf-definitions-alist specified by user:
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
289 (setq num-spam-definition-elements (safe-length
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
290 rsf-definitions-alist))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
291
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
292 ;;; do we want to ignore case in spam definitions:
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
293 (setq case-fold-search rsf-ignore-case)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
294
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
295 ;; Check for blind CC condition. Set vars such that while
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
296 ;; loop will be bypassed and spam condition will trigger
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
297 (if (and rsf-no-blind-cc
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
298 (null message-recipients))
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
299 (setq exit-while-loop t
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
300 maybe-spam t
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
301 this-is-a-spam-email t))
53685
2d1c4cfccc4a Use two semicolons as Commentary line prefix.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 53665
diff changeset
302
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
303 ;; Check white list, and likewise cause while loop
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
304 ;; bypass.
58182
875255640d7a (rmail-spam-filter): Only check white list if `message-sender' is non-nil.
Eli Zaretskii <eliz@gnu.org>
parents: 54018
diff changeset
305 (if (and message-sender
875255640d7a (rmail-spam-filter): Only check white list if `message-sender' is non-nil.
Eli Zaretskii <eliz@gnu.org>
parents: 54018
diff changeset
306 (let ((white-list rsf-white-list)
875255640d7a (rmail-spam-filter): Only check white list if `message-sender' is non-nil.
Eli Zaretskii <eliz@gnu.org>
parents: 54018
diff changeset
307 (found nil))
875255640d7a (rmail-spam-filter): Only check white list if `message-sender' is non-nil.
Eli Zaretskii <eliz@gnu.org>
parents: 54018
diff changeset
308 (while (and (not found) white-list)
875255640d7a (rmail-spam-filter): Only check white list if `message-sender' is non-nil.
Eli Zaretskii <eliz@gnu.org>
parents: 54018
diff changeset
309 (if (string-match (car white-list) message-sender)
875255640d7a (rmail-spam-filter): Only check white list if `message-sender' is non-nil.
Eli Zaretskii <eliz@gnu.org>
parents: 54018
diff changeset
310 (setq found t)
875255640d7a (rmail-spam-filter): Only check white list if `message-sender' is non-nil.
Eli Zaretskii <eliz@gnu.org>
parents: 54018
diff changeset
311 (setq white-list (cdr white-list))))
875255640d7a (rmail-spam-filter): Only check white list if `message-sender' is non-nil.
Eli Zaretskii <eliz@gnu.org>
parents: 54018
diff changeset
312 found))
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
313 (setq exit-while-loop t
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
314 maybe-spam nil
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
315 this-is-a-spam-email nil))
53685
2d1c4cfccc4a Use two semicolons as Commentary line prefix.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 53665
diff changeset
316
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
317 ;; maybe-spam is in first, this-is-a-spam-email in rest, this
54002
e712b82ead1a (vm-use-spam-filter)
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53730
diff changeset
318 ;; simplifies the call to check-field
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
319 (setq maybe-spam (cons maybe-spam this-is-a-spam-email))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
320
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
321 ;; scan all elements of the list rsf-definitions-alist
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
322 (while (and
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
323 (< num-element num-spam-definition-elements)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
324 (not exit-while-loop))
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
325 (let ((definition (nth num-element rsf-definitions-alist)))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
326 ;; Initialize maybe-spam which is set to t in one of two
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
327 ;; cases: (1) unspecified definition-elements are found in
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
328 ;; rsf-definitions-alist, (2) empty field is found
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
329 ;; in the message being scanned (e.g. empty subject,
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
330 ;; sender, recipients, etc). The variable is set to nil
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
331 ;; if a non empty field of the scanned message does not
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
332 ;; match a specified field in
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
333 ;; rsf-definitions-alist.
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
334
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
335 ;; initialize this-is-a-spam-email to nil. This variable
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
336 ;; is set to t if one of the spam definitions matches a
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
337 ;; field in the scanned message.
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
338 (setq maybe-spam (cons t nil))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
339
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
340 ;; start scanning incoming message:
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
341 ;;---------------------------------
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
342
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
343 ;; Maybe the different fields should also be done in a
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
344 ;; loop to make the whole thing more flexible
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
345 ;; if sender field is not specified in message being
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
346 ;; scanned, AND if "from" field does not appear in spam
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
347 ;; definitions for this element, this may still be spam
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
348 ;; due to another element...
54002
e712b82ead1a (vm-use-spam-filter)
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53730
diff changeset
349 (check-field 'from message-sender definition maybe-spam)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
350 ;; next, if spam was not ruled out already, check recipients:
54002
e712b82ead1a (vm-use-spam-filter)
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53730
diff changeset
351 (check-field 'to message-recipients definition maybe-spam)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
352 ;; next, if spam was not ruled out already, check subject:
54002
e712b82ead1a (vm-use-spam-filter)
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53730
diff changeset
353 (check-field 'subject message-subject definition maybe-spam)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
354 ;; next, if spam was not ruled out already, check content-type:
54002
e712b82ead1a (vm-use-spam-filter)
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53730
diff changeset
355 (check-field 'content-type message-content-type
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
356 definition maybe-spam)
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
357 ;; next, if spam was not ruled out already, check
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
358 ;; contents: if contents field is not specified, this may
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
359 ;; still be spam due to another element...
54002
e712b82ead1a (vm-use-spam-filter)
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53730
diff changeset
360 (check-field 'contents
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
361 (buffer-substring
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
362 (rmail-msgbeg msg) (rmail-msgend msg))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
363 definition maybe-spam)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
364
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
365 ;; if the search in rsf-definitions-alist found
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
366 ;; that this email is spam, output the email to the spam
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
367 ;; rmail file, mark the email for deletion, leave the
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
368 ;; while loop and return nil so that an rmail summary line
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
369 ;; wont be displayed for this message:
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
370 (if (and (first maybe-spam) (rest maybe-spam))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
371 ;; found that this is spam, no need to look at the
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
372 ;; rest of the rsf-definitions-alist, exit
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
373 ;; loop:
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
374 (setq exit-while-loop t)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
375 ;; else, spam was not yet found, increment number of
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
376 ;; element in rsf-definitions-alist and proceed
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
377 ;; to next element:
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
378 (setq num-element (+ num-element 1)))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
379 )
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
380 )
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
381
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
382 ;; (BK) re-set originally used variables
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
383 (setq this-is-a-spam-email (rest maybe-spam)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
384 maybe-spam (first maybe-spam))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
385
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
386 (if (and this-is-a-spam-email maybe-spam)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
387 (progn
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
388 ;;(message "Found spam!")
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
389 ;;(ding 1) (sleep-for 2)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
390
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
391 ;; temprarily set rmail-current-message in order to
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
392 ;; output and delete the spam msg if needed:
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
393 (setq save-current-msg rmail-current-message)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
394 (setq rmail-current-message msg)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
395 ;; check action item and rsf-definitions-alist
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
396 ;; and do it:
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
397 (cond
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
398 ((equal (cdr (assoc 'action
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
399 (nth num-element rsf-definitions-alist)))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
400 'output-and-delete)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
401 (progn
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
402 (rmail-output-to-rmail-file rsf-file 1 t)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
403 ;; Don't delete if automatic deletion after output
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
404 ;; is turned on
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
405 (unless rmail-delete-after-output (rmail-delete-message))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
406 ))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
407 ((equal (cdr (assoc 'action
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
408 (nth num-element rsf-definitions-alist)))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
409 'delete-spam)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
410 (progn
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
411 (rmail-delete-message)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
412 ))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
413 )
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
414 (setq rmail-current-message save-current-msg)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
415 (setq bbdb/mail_auto_create_p
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
416 'rsf-saved-bbdb/mail_auto_create_p)
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
417 ;; set return value. These lines must be last in the
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
418 ;; function, so that they will determine the value
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
419 ;; returned by rmail-spam-filter:
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
420 (setq return-value nil))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
421 (setq return-value t))))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
422 (setq case-fold-search saved-case-fold-search)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
423 (setq rsf-scanning-messages-now nil)
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
424 return-value))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
425
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
426
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
427 ;; define functions for interactively adding sender/subject of a
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
428 ;; specific message to the spam definitions while reading it, using
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
429 ;; the menubar:
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
430 (defun rsf-add-subject-to-spam-list ()
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
431 (interactive)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
432 (set-buffer rmail-buffer)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
433 (let ((message-subject))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
434 (setq message-subject (mail-fetch-field "Subject"))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
435 ;; note the use of a backquote and comma on the subject line here,
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
436 ;; to make sure message-subject is actually evaluated and its value
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
437 ;; substituted:
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
438 (add-to-list 'rsf-definitions-alist
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
439 (list '(from . "")
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
440 '(to . "")
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
441 `(subject . ,message-subject)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
442 '(content-type . "")
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
443 '(contents . "")
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
444 '(action . output-and-delete))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
445 t)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
446 (customize-mark-to-save 'rsf-definitions-alist)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
447 (if rsf-autosave-newly-added-definitions
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
448 (progn
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
449 (custom-save-all)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
450 (message (concat "added subject \n <<< \n" message-subject
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
451 " \n >>> \n to list of spam definitions. \n"
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
452 "and saved the spam definitions to file.")))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
453 (message (concat "added subject \n <<< \n" message-subject
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
454 " \n >>> \n to list of spam definitions. \n"
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
455 "Don't forget to save the spam definitions to file using the spam
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
456 menu"))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
457 )))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
458
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
459 (defun rsf-add-sender-to-spam-list ()
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
460 (interactive)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
461 (set-buffer rmail-buffer)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
462 (let ((message-sender))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
463 (setq message-sender (mail-fetch-field "From"))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
464 ;; note the use of a backquote and comma on the "from" line here,
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
465 ;; to make sure message-sender is actually evaluated and its value
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
466 ;; substituted:
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
467 (add-to-list 'rsf-definitions-alist
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
468 (list `(from . ,message-sender)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
469 '(to . "")
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
470 '(subject . "")
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
471 '(content-type . "")
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
472 '(contents . "")
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
473 '(action . output-and-delete))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
474 t)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
475 (customize-mark-to-save 'rsf-definitions-alist)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
476 (if rsf-autosave-newly-added-definitions
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
477 (progn
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
478 (custom-save-all)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
479 (message (concat "added sender \n <<< \n" message-sender
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
480 " \n >>> \n to list of spam definitions. \n"
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
481 "and saved the spam definitions to file.")))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
482 (message (concat "added sender \n <<< \n " message-sender
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
483 " \n >>> \n to list of spam definitions."
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
484 "Don't forget to save the spam definitions to file using the spam
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
485 menu"))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
486 )))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
487
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
488
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
489 (defun rsf-add-region-to-spam-list ()
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
490 "Add the region makred by user in the rmail buffer to spam list.
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
491 Added to spam definitions as a contents field."
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
492 (interactive)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
493 (set-buffer rmail-buffer)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
494 (let ((region-to-spam-list))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
495 ;; check if region is inactive or has zero size:
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
496 (if (not (and mark-active (not (= (region-beginning) (region-end)))))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
497 ;; if inactive, print error message:
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
498 (message "you need to first highlight some text in the rmail buffer")
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
499 (if (< (- (region-end) (region-beginning)) rsf-min-region-to-spam-list)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
500 (message
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
501 (concat "highlighted region is too small; min length set by variable \n"
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
502 "rsf-min-region-to-spam-list"
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
503 " is " (number-to-string rsf-min-region-to-spam-list)))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
504 ;; if region active and long enough, add to list of spam definisions:
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
505 (progn
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
506 (setq region-to-spam-list (buffer-substring (region-beginning) (region-end)))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
507 ;; note the use of a backquote and comma on the "from" line here,
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
508 ;; to make sure message-sender is actually evaluated and its value
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
509 ;; substituted:
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
510 (add-to-list 'rsf-definitions-alist
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
511 (list '(from . "")
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
512 '(to . "")
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
513 '(subject . "")
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
514 '(content-type . "")
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
515 `(contents . ,region-to-spam-list)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
516 '(action . output-and-delete))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
517 t)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
518 (customize-mark-to-save 'rsf-definitions-alist)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
519 (if rsf-autosave-newly-added-definitions
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
520 (progn
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
521 (custom-save-all)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
522 (message (concat "added highlighted text \n <<< \n" region-to-spam-list
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
523 " \n >>> \n to list of spam definitions. \n"
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
524 "and saved the spam definitions to file.")))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
525 (message (concat "added highlighted text \n <<< \n " region-to-spam-list
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
526 " \n >>> \n to list of spam definitions."
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
527 "Don't forget to save the spam definitions to file using the
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
528 spam menu"))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
529 ))))))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
530
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
531
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
532 (defun rsf-customize-spam-definitions ()
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
533 (interactive)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
534 (customize-variable (quote rsf-definitions-alist)))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
535
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
536 (defun rsf-customize-group ()
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
537 (interactive)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
538 (customize-group (quote rmail-spam-filter)))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
539
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
540 (defun rsf-custom-save-all ()
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
541 (interactive)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
542 (custom-save-all))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
543
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
544 ;; add the actual menu items and keyboard shortcuts to both rmail and
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
545 ;; rmail-summary menu-bars::
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
546 (define-key rmail-summary-mode-map [menu-bar spam]
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
547 (cons "Spam" (make-sparse-keymap "Spam")))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
548 (define-key rmail-mode-map [menu-bar spam]
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
549 (cons "Spam" (make-sparse-keymap "Spam")))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
550
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
551 (define-key rmail-summary-mode-map [menu-bar spam customize-group]
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
552 '("Browse customizations of rmail spam filter" . rsf-customize-group))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
553 (define-key rmail-mode-map [menu-bar spam customize-group]
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
554 '("Browse customizations of rmail spam filter" . rsf-customize-group))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
555 (define-key rmail-summary-mode-map "\C-cSg" 'rsf-customize-group)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
556 (define-key rmail-mode-map "\C-cSg" 'rsf-customize-group)
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
557
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
558 (define-key rmail-summary-mode-map [menu-bar spam customize-spam-list]
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
559 '("Customize list of spam definitions" . rsf-customize-spam-definitions))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
560 (define-key rmail-mode-map [menu-bar spam customize-spam-list]
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
561 '("Customize list of spam definitions" . rsf-customize-spam-definitions))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
562 (define-key rmail-summary-mode-map "\C-cSd" 'rsf-customize-spam-definitions)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
563 (define-key rmail-mode-map "\C-cSd" 'rsf-customize-spam-definitions)
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
564
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
565 (define-key rmail-summary-mode-map [menu-bar spam lambda] '("----"))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
566 (define-key rmail-mode-map [menu-bar spam lambda] '("----"))
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
567
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
568 (define-key rmail-summary-mode-map [menu-bar spam my-custom-save-all]
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
569 '("save newly added spam definitions to customization file" . rsf-custom-save-all))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
570 (define-key rmail-mode-map [menu-bar spam my-custom-save-all]
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
571 '("save newly added spam definitions to customization file" . rsf-custom-save-all))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
572 (define-key rmail-summary-mode-map "\C-cSa" 'rsf-custom-save-all)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
573 (define-key rmail-mode-map "\C-cSa" 'rsf-custom-save-all)
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
574
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
575 (define-key rmail-summary-mode-map [menu-bar spam add-region-to-spam-list]
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
576 '("add region to spam list" . rsf-add-region-to-spam-list))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
577 (define-key rmail-mode-map [menu-bar spam add-region-to-spam-list]
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
578 '("add region to spam list" . rsf-add-region-to-spam-list))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
579 (define-key rmail-summary-mode-map "\C-cSn" 'rsf-add-region-to-spam-list)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
580 (define-key rmail-mode-map "\C-cSn" 'rsf-add-region-to-spam-list)
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
581
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
582 (define-key rmail-summary-mode-map [menu-bar spam add-sender-to-spam-list]
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
583 '("add sender to spam list" . rsf-add-sender-to-spam-list))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
584 (define-key rmail-mode-map [menu-bar spam add-sender-to-spam-list]
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
585 '("add sender to spam list" . rsf-add-sender-to-spam-list))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
586 (define-key rmail-summary-mode-map "\C-cSr" 'rsf-add-sender-to-spam-list)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
587 (define-key rmail-mode-map "\C-cSr" 'rsf-add-sender-to-spam-list)
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
588
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
589 (define-key rmail-summary-mode-map [menu-bar spam add-subject-to-spam-list]
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
590 '("add subject to spam list" . rsf-add-subject-to-spam-list))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
591 (define-key rmail-mode-map [menu-bar spam add-subject-to-spam-list]
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
592 '("add subject to spam list" . rsf-add-subject-to-spam-list))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
593 (define-key rmail-summary-mode-map "\C-cSt" 'rsf-add-subject-to-spam-list)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
594 (define-key rmail-mode-map "\C-cSt" 'rsf-add-subject-to-spam-list)
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
595
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
596 (defun rsf-add-content-type-field ()
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
597 "Maintain backward compatibility with previous versions of rmail-spam-filter.
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
598 The most recent version of rmai-spam-filter checks the contents
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
599 field of the incoming mail to see if it spam. The format of
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
600 `rsf-definitions-alist' has therefore changed. This function
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
601 checks to see if old format is used, and if it is, it converts
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
602 `rsf-definitions-alist' to the new format. Invoked
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
603 automatically, no user input is required."
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
604 (interactive)
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
605 (if (and rsf-definitions-alist
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
606 (not (assoc 'content-type (car rsf-definitions-alist))))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
607 (let ((result nil)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
608 (current nil)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
609 (definitions rsf-definitions-alist))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
610 (while definitions
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
611 (setq current (car definitions))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
612 (setq definitions (cdr definitions))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
613 (setq result
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
614 (append result
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
615 (list
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
616 (list (assoc 'from current)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
617 (assoc 'to current)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
618 (assoc 'subject current)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
619 (cons 'content-type "")
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
620 (assoc 'contents current)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
621 (assoc 'action current))))))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
622 (setq rsf-definitions-alist result)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
623 (customize-mark-to-save 'rsf-definitions-alist)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
624 (if rsf-autosave-newly-added-definitions
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
625 (progn
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
626 (custom-save-all)
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
627 (message (concat "converted spam definitions to new format\n"
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
628 "and saved the spam definitions to file.")))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
629 (message (concat "converted spam definitions to new format\n"
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
630 "Don't forget to save the spam definitions to file using the
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
631 spam menu"))
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
632 ))))
49862
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
633
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
634 (provide 'rmail-spam-filter)
22e7cf92fa43 Initial commit to the trunk.
Paul Reilly <pmr@pajato.com>
parents:
diff changeset
635
54018
d69a48d76be3 Resolve CVS conflicts
Miles Bader <miles@gnu.org>
parents: 54002
diff changeset
636 ;;; arch-tag: 03e1d45d-b72f-4dd7-8f04-e7fd78249746
53730
2a4fc5c14ddd Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents: 53685
diff changeset
637 ;;; rmail-spam-fitler ends here