Mercurial > emacs
annotate lisp/mail/rmail-spam-filter.el @ 58780:7f1f68f88ae8
(regex_compile): Fix end-of-pattern case for space.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 05 Dec 2004 23:34:16 +0000 |
parents | 875255640d7a |
children | 18a818a2ee7c b637c617432f |
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 | 2 |
54002 | 3 ;; Copyright (C) 2002 |
4 ;; Free Software Foundation, Inc. | |
49862 | 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 | 7 |
8 ;; This file is part of GNU Emacs. | |
9 | |
10 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
11 ;; it under the terms of the GNU General Public License as published by | |
12 ;; the Free Software Foundation; either version 2, or (at your option) | |
13 ;; any later version. | |
14 | |
15 ;; GNU Emacs is distributed in the hope that it will be useful, | |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
19 | |
20 ;; You should have received a copy of the GNU General Public License | |
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
23 ;; Boston, MA 02111-1307, USA. | |
24 | |
25 ;;; Commentary: | |
53730
2a4fc5c14ddd
Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents:
53685
diff
changeset
|
26 ;;; ----------- |
49862 | 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 | 31 ;;; URL: http://www.weizmann.ac.il/~eli/Downloads/rmail-spam-filter/ |
49862 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 84 |
85 (require 'rmail) | |
54002 | 86 (if (> emacs-major-version 20) |
87 (require 'rmailsum) | |
88 (if (not (fboundp 'rmail-make-summary-line)) (load-library "rmailsum"))) | |
49862 | 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 | 93 |
94 (defgroup rmail-spam-filter nil | |
95 "Spam filter for RMAIL, the mail reader for Emacs." | |
96 :group 'rmail) | |
97 | |
98 (defcustom rmail-use-spam-filter nil | |
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 | 101 emails." |
102 :type 'boolean | |
103 :group 'rmail-spam-filter ) | |
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 | 106 "*Name of rmail file for optionally saving some of the spam. |
107 Spam may be either just deleted, or saved in a separate spam file to | |
108 be looked at at a later time. Whether the spam is just deleted or | |
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 | 111 :type 'string |
112 :group 'rmail-spam-filter ) | |
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 | 115 "*Non-nil to treat blind CC (no To: header) as spam." |
116 :type 'boolean | |
117 :group 'rmail-spam-filter ) | |
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 | 121 :type 'boolean |
122 :group 'rmail-spam-filter ) | |
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 | 125 "*Non-nil to beep if spam is found." |
126 :type 'boolean | |
127 :group 'rmail-spam-filter ) | |
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 | 130 "*Seconds to wait after display of message that spam was found." |
131 :type 'number | |
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 | 145 "*Non-nil to make sure no entries are made in bbdb for spam emails. |
146 This is done in two ways: (1) bbdb is made not to auto-create entries | |
147 for messages that are deleted by the `rmail-spam-filter', (2) when a | |
148 message is deleted in rmail, the user is offered to delete the | |
149 sender's bbdb entry as well if it was created at the same day. Note | |
150 that Emacs needs to be restarted after setting this option for it to | |
151 take an effect." | |
152 :type 'boolean | |
153 :group 'rmail-spam-filter ) | |
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 | 156 "*Non-nil to auto save new spam entries. |
157 New entries entered via the spam menu bar item are then saved to | |
158 customization file immediately after being added via the menu bar, and | |
159 do not require explicitly saving the file after adding the new | |
160 entries." | |
161 :type 'boolean | |
162 :group 'rmail-spam-filter ) | |
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 | 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 | 167 header, the message is flagged as a valid, non-spam message. Example: |
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 | 170 valid." |
171 :type '(repeat string) | |
172 :group 'rmail-spam-filter ) | |
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 | 175 "*Alist matching strings defining what messages are considered spam. |
176 Each definition may contain specifications of one or more of the | |
177 elements {subject, sender, recipients or contents}, as well as a | |
178 definition of what to do with the spam (action item). A spam e-mail | |
179 is defined as one that fits all of the specified elements of any one | |
180 of the spam definitions. The strings that specify spam subject, | |
181 sender, etc, may be regexp. For example, to specify that the subject | |
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 | 187 (list :format "%v" |
188 (cons :format "%v" :value (from . "") | |
189 (const :format "" from) | |
190 (string :tag "From" "")) | |
191 (cons :format "%v" :value (to . "") | |
192 (const :format "" to) | |
193 (string :tag "To" "")) | |
194 (cons :format "%v" :value (subject . "") | |
195 (const :format "" subject) | |
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 | 200 (cons :format "%v" :value (contents . "") |
201 (const :format "" contents) | |
202 (string :tag "Contents" "")) | |
203 (cons :format "%v" :value (action . output-and-delete) | |
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 | 206 (const :tag "output to spam folder and delete" output-and-delete) |
207 (const :tag "delete spam" delete-spam) | |
208 )) | |
209 )) | |
210 :group 'rmail-spam-filter) | |
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 | 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 | 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 | 240 |
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 | 244 it from rmail file. Called for each new message retrieved by |
245 `rmail-get-new-mail'." | |
246 | |
247 (let ((old-message) | |
248 (return-value) | |
249 (this-is-a-spam-email) | |
250 (maybe-spam) | |
251 (message-sender) | |
252 (message-recipients) | |
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 | 255 (num-spam-definition-elements) |
256 (num-element 0) | |
257 (exit-while-loop nil) | |
258 (saved-case-fold-search case-fold-search) | |
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 | 261 ) |
53730
2a4fc5c14ddd
Change rmail-spam-filter- or spam-filter-
Richard M. Stallman <rms@gnu.org>
parents:
53685
diff
changeset
|
262 |
49862 | 263 ;; make sure bbdb does not create entries for messages while spam |
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 | 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 | 268 ;; filter is running, so that deletion of rmail messages should be |
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 | 271 (save-excursion |
272 (save-restriction | |
273 (setq this-is-a-spam-email nil) | |
274 ;; Narrow buffer to header of message and get Sender and | |
275 ;; Subject fields to be used below: | |
276 (save-restriction | |
277 (goto-char (rmail-msgbeg msg)) | |
278 (narrow-to-region (point) (progn (search-forward "\n\n") (point))) | |
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 | 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 | 286 ) |
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 | 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 | 291 |
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 | 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 | 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 | 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 | 322 (while (and |
323 (< num-element num-spam-definition-elements) | |
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 | 326 ;; Initialize maybe-spam which is set to t in one of two |
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 | 329 ;; in the message being scanned (e.g. empty subject, |
330 ;; sender, recipients, etc). The variable is set to nil | |
331 ;; if a non empty field of the scanned message does not | |
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 | 335 ;; initialize this-is-a-spam-email to nil. This variable |
336 ;; is set to t if one of the spam definitions matches a | |
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 | 339 |
340 ;; start scanning incoming message: | |
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 | 346 ;; scanned, AND if "from" field does not appear in spam |
347 ;; definitions for this element, this may still be spam | |
348 ;; due to another element... | |
54002 | 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 | 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 | 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 | 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 | 357 ;; next, if spam was not ruled out already, check |
358 ;; contents: if contents field is not specified, this may | |
359 ;; still be spam due to another element... | |
54002 | 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 | 366 ;; that this email is spam, output the email to the spam |
367 ;; rmail file, mark the email for deletion, leave the | |
368 ;; while loop and return nil so that an rmail summary line | |
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 | 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 | 373 ;; loop: |
374 (setq exit-while-loop t) | |
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 | 377 ;; to next element: |
378 (setq num-element (+ num-element 1))) | |
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 | 386 (if (and this-is-a-spam-email maybe-spam) |
387 (progn | |
388 ;;(message "Found spam!") | |
389 ;;(ding 1) (sleep-for 2) | |
390 | |
391 ;; temprarily set rmail-current-message in order to | |
392 ;; output and delete the spam msg if needed: | |
393 (setq save-current-msg rmail-current-message) | |
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 | 396 ;; and do it: |
397 (cond | |
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 | 400 'output-and-delete) |
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 | 406 )) |
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 | 409 'delete-spam) |
410 (progn | |
411 (rmail-delete-message) | |
412 )) | |
413 ) | |
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 | 417 ;; set return value. These lines must be last in the |
418 ;; function, so that they will determine the value | |
419 ;; returned by rmail-spam-filter: | |
420 (setq return-value nil)) | |
421 (setq return-value t)))) | |
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 | 424 return-value)) |
425 | |
426 | |
427 ;; define functions for interactively adding sender/subject of a | |
428 ;; specific message to the spam definitions while reading it, using | |
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 | 431 (interactive) |
432 (set-buffer rmail-buffer) | |
433 (let ((message-subject)) | |
434 (setq message-subject (mail-fetch-field "Subject")) | |
435 ;; note the use of a backquote and comma on the subject line here, | |
436 ;; to make sure message-subject is actually evaluated and its value | |
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 | 439 (list '(from . "") |
440 '(to . "") | |
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 | 443 '(contents . "") |
444 '(action . output-and-delete)) | |
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 | 448 (progn |
449 (custom-save-all) | |
450 (message (concat "added subject \n <<< \n" message-subject | |
451 " \n >>> \n to list of spam definitions. \n" | |
452 "and saved the spam definitions to file."))) | |
453 (message (concat "added subject \n <<< \n" message-subject | |
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 | 457 ))) |
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 | 460 (interactive) |
461 (set-buffer rmail-buffer) | |
462 (let ((message-sender)) | |
463 (setq message-sender (mail-fetch-field "From")) | |
464 ;; note the use of a backquote and comma on the "from" line here, | |
465 ;; to make sure message-sender is actually evaluated and its value | |
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 | 468 (list `(from . ,message-sender) |
469 '(to . "") | |
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 | 472 '(contents . "") |
473 '(action . output-and-delete)) | |
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 | 477 (progn |
478 (custom-save-all) | |
479 (message (concat "added sender \n <<< \n" message-sender | |
480 " \n >>> \n to list of spam definitions. \n" | |
481 "and saved the spam definitions to file."))) | |
482 (message (concat "added sender \n <<< \n " message-sender | |
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 | 486 ))) |
487 | |
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 | 492 (interactive) |
493 (set-buffer rmail-buffer) | |
494 (let ((region-to-spam-list)) | |
495 ;; check if region is inactive or has zero size: | |
496 (if (not (and mark-active (not (= (region-beginning) (region-end))))) | |
497 ;; if inactive, print error message: | |
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 | 530 |
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 | 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 | 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 | 537 (interactive) |
538 (customize-group (quote rmail-spam-filter))) | |
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 | 541 (interactive) |
542 (custom-save-all)) | |
543 | |
544 ;; add the actual menu items and keyboard shortcuts to both rmail and | |
545 ;; rmail-summary menu-bars:: | |
546 (define-key rmail-summary-mode-map [menu-bar spam] | |
547 (cons "Spam" (make-sparse-keymap "Spam"))) | |
548 (define-key rmail-mode-map [menu-bar spam] | |
549 (cons "Spam" (make-sparse-keymap "Spam"))) | |
550 | |
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 | 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 | 557 |
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 | 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 | 564 |
565 (define-key rmail-summary-mode-map [menu-bar spam lambda] '("----")) | |
566 (define-key rmail-mode-map [menu-bar spam lambda] '("----")) | |
567 | |
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 | 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 | 574 |
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 | 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 | 581 |
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 | 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 | 588 |
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 | 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 | 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 | 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 | 633 |
634 (provide 'rmail-spam-filter) | |
635 | |
54018 | 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 |