14011 |
@code{save-excursion} and @code{save-restriction} in the example |
@code{save-excursion} and @code{save-restriction} in the example |
14012 |
above. Also note that with the nnimap backend, message bodies will |
above. Also note that with the nnimap backend, message bodies will |
14013 |
not be downloaded by default. You need to set |
not be downloaded by default. You need to set |
14014 |
@code{nnimap-split-download-body} to t to do that (@pxref{Splitting in |
@code{nnimap-split-download-body} to @code{t} to do that |
14015 |
IMAP}). |
(@pxref{Splitting in IMAP}). |
14016 |
|
|
14017 |
@item (! @var{func} @var{split}) |
@item (! @var{func} @var{split}) |
14018 |
If the split is a list, and the first element is @code{!}, then |
If the split is a list, and the first element is @code{!}, then |
16209 |
A file containing credentials used to log in on servers. The format is |
A file containing credentials used to log in on servers. The format is |
16210 |
(almost) the same as the @code{ftp} @file{~/.netrc} file. See the |
(almost) the same as the @code{ftp} @file{~/.netrc} file. See the |
16211 |
variable @code{nntp-authinfo-file} for exact syntax; also see |
variable @code{nntp-authinfo-file} for exact syntax; also see |
16212 |
@ref{NNTP}. |
@ref{NNTP}. An example of an .authinfo line for an IMAP server, is: |
16213 |
|
|
16214 |
|
@example |
16215 |
|
machine students.uio.no login larsi password geheimnis port imap |
16216 |
|
@end example |
16217 |
|
|
16218 |
|
Note that it should be @code{port imap}, or @code{port 143}, if you |
16219 |
|
use a @code{nnimap-stream} of @code{tls} or @code{ssl}, even if the |
16220 |
|
actual port number used is port 993 for secured IMAP. For |
16221 |
|
convenience, Gnus will accept @code{port imaps} as a synonym of |
16222 |
|
@code{port imap}. |
16223 |
|
|
16224 |
@item nnimap-need-unselect-to-notice-new-mail |
@item nnimap-need-unselect-to-notice-new-mail |
16225 |
@vindex nnimap-need-unselect-to-notice-new-mail |
@vindex nnimap-need-unselect-to-notice-new-mail |
22259 |
messages per day from @samp{random-address@@vmadmin.com}, you block |
messages per day from @samp{random-address@@vmadmin.com}, you block |
22260 |
@samp{vmadmin.com}. If you get 200 messages about @samp{VIAGRA}, you |
@samp{vmadmin.com}. If you get 200 messages about @samp{VIAGRA}, you |
22261 |
discard all messages with @samp{VIAGRA} in the message. If you get |
discard all messages with @samp{VIAGRA} in the message. If you get |
22262 |
lots of spam from China, for example, you try to filter all mail from |
lots of spam from Bulgaria, for example, you try to filter all mail |
22263 |
Chinese IPs. |
from Bulgarian IPs. |
22264 |
|
|
22265 |
This, unfortunately, is a great way to discard legitimate e-mail. For |
This, unfortunately, is a great way to discard legitimate e-mail. The |
22266 |
instance, the very informative and useful RISKS digest has been |
risks of blocking a whole country (Bulgaria, Norway, Nigeria, China, |
22267 |
blocked by overzealous mail filters because it @strong{contained} |
etc.) or even a continent (Asia, Africa, Europe, etc.) from contacting |
22268 |
words that were common in spam messages. The risks of blocking a |
you should be obvious, so don't do it if you have the choice. |
22269 |
whole country from contacting you should also be obvious, so don't do |
|
22270 |
it if you have the choice. Nevertheless, in isolated cases, with |
In another instance, the very informative and useful RISKS digest has |
22271 |
great care, direct filtering of mail can be useful. |
been blocked by overzealous mail filters because it @strong{contained} |
22272 |
|
words that were common in spam messages. Nevertheless, in isolated |
22273 |
|
cases, with great care, direct filtering of mail can be useful. |
22274 |
|
|
22275 |
Another approach to filtering e-mail is the distributed spam |
Another approach to filtering e-mail is the distributed spam |
22276 |
processing, for instance DCC implements such a system. In essence, |
processing, for instance DCC implements such a system. In essence, |
22447 |
|
|
22448 |
Note that with the nnimap backend, message bodies will not be |
Note that with the nnimap backend, message bodies will not be |
22449 |
downloaded by default. You need to set |
downloaded by default. You need to set |
22450 |
@code{nnimap-split-download-body} to t to do that (@pxref{Splitting in |
@code{nnimap-split-download-body} to @code{t} to do that |
22451 |
IMAP}). |
(@pxref{Splitting in IMAP}). |
22452 |
|
|
22453 |
That is about it. As some spam is likely to get through anyway, you |
That is about it. As some spam is likely to get through anyway, you |
22454 |
might want to have a nifty function to call when you happen to read |
might want to have a nifty function to call when you happen to read |
22684 |
@code{ham-process-destination} or the @code{spam-process-destination} |
@code{ham-process-destination} or the @code{spam-process-destination} |
22685 |
depending on the article's classification. If the |
depending on the article's classification. If the |
22686 |
@code{ham-process-destination} or the @code{spam-process-destination}, |
@code{ham-process-destination} or the @code{spam-process-destination}, |
22687 |
whichever is appropriate, are nil, the article is left in the current |
whichever is appropriate, are @code{nil}, the article is left in the |
22688 |
group. |
current group. |
22689 |
|
|
22690 |
If a spam is found in any group (this can be changed to only non-spam |
If a spam is found in any group (this can be changed to only non-spam |
22691 |
groups with @code{spam-move-spam-nonspam-groups-only}), it is |
groups with @code{spam-move-spam-nonspam-groups-only}), it is |
22697 |
@code{spam-log-to-registry} variable if you want spam to be processed |
@code{spam-log-to-registry} variable if you want spam to be processed |
22698 |
no more than once. Thus, spam is detected and processed everywhere, |
no more than once. Thus, spam is detected and processed everywhere, |
22699 |
which is what most people want. If the |
which is what most people want. If the |
22700 |
@code{spam-process-destination} is nil, the spam is marked as |
@code{spam-process-destination} is @code{nil}, the spam is marked as |
22701 |
expired, which is usually the right thing to do. |
expired, which is usually the right thing to do. |
22702 |
|
|
22703 |
If spam can not be moved - because of a read-only backend such as NNTP, |
If spam can not be moved---because of a read-only backend such as |
22704 |
for example, it will be copied. |
@acronym{NNTP}, for example, it will be copied. |
22705 |
|
|
22706 |
If a ham mail is found in a ham group, as determined by the |
If a ham mail is found in a ham group, as determined by the |
22707 |
@code{ham-marks} parameter, it is processed as ham by the active ham |
@code{ham-marks} parameter, it is processed as ham by the active ham |
22715 |
necessary, which is what most people want. More on this in |
necessary, which is what most people want. More on this in |
22716 |
@xref{Spam ELisp Package Configuration Examples}. |
@xref{Spam ELisp Package Configuration Examples}. |
22717 |
|
|
22718 |
If ham can not be moved - because of a read-only backend such as NNTP, |
If ham can not be moved---because of a read-only backend such as |
22719 |
for example, it will be copied. |
@acronym{NNTP}, for example, it will be copied. |
22720 |
|
|
22721 |
If all this seems confusing, don't worry. Soon it will be as natural |
If all this seems confusing, don't worry. Soon it will be as natural |
22722 |
as typing Lisp one-liners on a neural interface... err, sorry, that's |
as typing Lisp one-liners on a neural interface@dots{} err, sorry, that's |
22723 |
50 years in the future yet. Just trust us, it's not so bad. |
50 years in the future yet. Just trust us, it's not so bad. |
22724 |
|
|
22725 |
@node Spam ELisp Package Filtering of Incoming Mail |
@node Spam ELisp Package Filtering of Incoming Mail |
22740 |
@code{nnimap-split-fancy}, depending on whether you use the nnmail or |
@code{nnimap-split-fancy}, depending on whether you use the nnmail or |
22741 |
nnimap back ends to retrieve your mail. |
nnimap back ends to retrieve your mail. |
22742 |
|
|
22743 |
|
Also, @code{spam-split} will not modify incoming mail in any way. |
22744 |
|
|
22745 |
The @code{spam-split} function will process incoming mail and send the |
The @code{spam-split} function will process incoming mail and send the |
22746 |
mail considered to be spam into the group name given by the variable |
mail considered to be spam into the group name given by the variable |
22747 |
@code{spam-split-group}. By default that group name is @samp{spam}, |
@code{spam-split-group}. By default that group name is @samp{spam}, |
22755 |
work depending on your server's tolerance for strange group names. |
work depending on your server's tolerance for strange group names. |
22756 |
|
|
22757 |
You can also give @code{spam-split} a parameter, |
You can also give @code{spam-split} a parameter, |
22758 |
e.g. @samp{'spam-use-regex-headers} or @samp{"maybe-spam"}. Why is |
e.g. @code{spam-use-regex-headers} or @code{"maybe-spam"}. Why is |
22759 |
this useful? |
this useful? |
22760 |
|
|
22761 |
Take these split rules (with @code{spam-use-regex-headers} and |
Take these split rules (with @code{spam-use-regex-headers} and |
22765 |
nnimap-split-fancy '(| |
nnimap-split-fancy '(| |
22766 |
(any "ding" "ding") |
(any "ding" "ding") |
22767 |
(: spam-split) |
(: spam-split) |
22768 |
;; default mailbox |
;; @r{default mailbox} |
22769 |
"mail") |
"mail") |
22770 |
@end example |
@end example |
22771 |
|
|
22781 |
regex-headers check) will be after the ding rule: |
regex-headers check) will be after the ding rule: |
22782 |
|
|
22783 |
@example |
@example |
22784 |
nnimap-split-fancy '(| |
nnimap-split-fancy |
22785 |
;;; all spam detected by spam-use-regex-headers goes to "regex-spam" |
'(| |
22786 |
(: spam-split "regex-spam" 'spam-use-regex-headers) |
;; @r{all spam detected by @code{spam-use-regex-headers} goes to @samp{regex-spam}} |
22787 |
(any "ding" "ding") |
(: spam-split "regex-spam" 'spam-use-regex-headers) |
22788 |
;;; all other spam detected by spam-split goes to spam-split-group |
(any "ding" "ding") |
22789 |
(: spam-split) |
;; @r{all other spam detected by spam-split goes to @code{spam-split-group}} |
22790 |
;; default mailbox |
(: spam-split) |
22791 |
"mail") |
;; @r{default mailbox} |
22792 |
|
"mail") |
22793 |
@end example |
@end example |
22794 |
|
|
22795 |
This lets you invoke specific @code{spam-split} checks depending on |
This lets you invoke specific @code{spam-split} checks depending on |
22842 |
will be detected later. |
will be detected later. |
22843 |
|
|
22844 |
The format of the spam or ham processor entry used to be a symbol, |
The format of the spam or ham processor entry used to be a symbol, |
22845 |
but now it is a cons cell. See the individual spam processor entries |
but now it is a @sc{cons} cell. See the individual spam processor entries |
22846 |
for more information. |
for more information. |
22847 |
|
|
22848 |
@vindex gnus-spam-newsgroup-contents |
@vindex gnus-spam-newsgroup-contents |
22920 |
determined by either the @code{ham-process-destination} group |
determined by either the @code{ham-process-destination} group |
22921 |
parameter or a match in the @code{gnus-ham-process-destinations} |
parameter or a match in the @code{gnus-ham-process-destinations} |
22922 |
variable, which is a list of regular expressions matched with group |
variable, which is a list of regular expressions matched with group |
22923 |
names (it's easiest to customize this variable with |
names (it's easiest to customize this variable with @kbd{M-x |
22924 |
@code{customize-variable gnus-ham-process-destinations}). Each |
customize-variable @key{RET} gnus-ham-process-destinations}). Each |
22925 |
newsgroup specification has the format (REGEXP PROCESSOR) in a |
group name list is a standard Lisp list, if you prefer to customize |
22926 |
standard Lisp list, if you prefer to customize the variable manually. |
the variable manually. If the @code{ham-process-destination} |
22927 |
The ultimate location is a group name or names. If the |
parameter is not set, ham articles are left in place. If the |
|
@code{ham-process-destination} parameter is not set, ham articles are |
|
|
left in place. If the |
|
22928 |
@code{spam-mark-ham-unread-before-move-from-spam-group} parameter is |
@code{spam-mark-ham-unread-before-move-from-spam-group} parameter is |
22929 |
set, the ham articles are marked as unread before being moved. |
set, the ham articles are marked as unread before being moved. |
22930 |
|
|
22931 |
If ham can not be moved - because of a read-only backend such as NNTP, |
If ham can not be moved---because of a read-only backend such as |
22932 |
for example, it will be copied. |
@acronym{NNTP}, for example, it will be copied. |
22933 |
|
|
22934 |
Note that you can use multiples destinations per group or regular |
Note that you can use multiples destinations per group or regular |
22935 |
expression! This enables you to send your ham to a regular mail |
expression! This enables you to send your ham to a regular mail |
22957 |
the @code{spam-process-destination} group parameter or a match in the |
the @code{spam-process-destination} group parameter or a match in the |
22958 |
@code{gnus-spam-process-destinations} variable, which is a list of |
@code{gnus-spam-process-destinations} variable, which is a list of |
22959 |
regular expressions matched with group names (it's easiest to |
regular expressions matched with group names (it's easiest to |
22960 |
customize this variable with @code{customize-variable |
customize this variable with @kbd{M-x customize-variable @key{RET} |
22961 |
gnus-spam-process-destinations}). Each newsgroup specification has |
gnus-spam-process-destinations}). Each group name list is a standard |
22962 |
the repeated format (REGEXP GROUP) and they are all in a standard Lisp |
Lisp list, if you prefer to customize the variable manually. If the |
|
list, if you prefer to customize the variable manually. The ultimate |
|
|
location is a group name or names. If the |
|
22963 |
@code{spam-process-destination} parameter is not set, the spam |
@code{spam-process-destination} parameter is not set, the spam |
22964 |
articles are only expired. The group name is fully qualified, meaning |
articles are only expired. The group name is fully qualified, meaning |
22965 |
that if you see @samp{nntp:servername} before the group name in the |
that if you see @samp{nntp:servername} before the group name in the |
22966 |
group buffer then you need it here as well. |
group buffer then you need it here as well. |
22967 |
|
|
22968 |
If spam can not be moved - because of a read-only backend such as NNTP, |
If spam can not be moved---because of a read-only backend such as |
22969 |
for example, it will be copied. |
@acronym{NNTP}, for example, it will be copied. |
22970 |
|
|
22971 |
Note that you can use multiples destinations per group or regular |
Note that you can use multiples destinations per group or regular |
22972 |
expression! This enables you to send your spam to multiple @emph{spam |
expression! This enables you to send your spam to multiple @emph{spam |
22982 |
|
|
22983 |
@vindex spam-mark-only-unseen-as-spam |
@vindex spam-mark-only-unseen-as-spam |
22984 |
Set this variable if you want only unseen articles in spam groups to |
Set this variable if you want only unseen articles in spam groups to |
22985 |
be marked as spam. By default, it is set. If you set it to nil, |
be marked as spam. By default, it is set. If you set it to |
22986 |
unread articles will also be marked as spam. |
@code{nil}, unread articles will also be marked as spam. |
22987 |
|
|
22988 |
@vindex spam-mark-ham-unread-before-move-from-spam-group |
@vindex spam-mark-ham-unread-before-move-from-spam-group |
22989 |
Set this variable if you want ham to be unmarked before it is moved |
Set this variable if you want ham to be unmarked before it is moved |
22990 |
out of the spam group. This is very useful when you use something |
out of the spam group. This is very useful when you use something |
22991 |
like the tick mark @samp{!} to mark ham - the article will be placed |
like the tick mark @samp{!} to mark ham---the article will be placed |
22992 |
in your ham-process-destination, unmarked as if it came fresh from |
in your @code{ham-process-destination}, unmarked as if it came fresh |
22993 |
the mail server. |
from the mail server. |
22994 |
|
|
22995 |
@vindex spam-autodetect-recheck-messages |
@vindex spam-autodetect-recheck-messages |
22996 |
When autodetecting spam, this variable tells @code{spam.el} whether |
When autodetecting spam, this variable tells @code{spam.el} whether |
23008 |
|
|
23009 |
From Ted Zlatanov <tzz@@lifelogs.com>. |
From Ted Zlatanov <tzz@@lifelogs.com>. |
23010 |
@example |
@example |
23011 |
|
;; @r{for @code{gnus-registry-split-fancy-with-parent} and spam autodetection} |
23012 |
;; for gnus-registry-split-fancy-with-parent and spam autodetection |
;; @r{see @file{gnus-registry.el} for more information} |
|
;; see gnus-registry.el for more information |
|
23013 |
(gnus-registry-initialize) |
(gnus-registry-initialize) |
23014 |
(spam-initialize) |
(spam-initialize) |
23015 |
|
|
23016 |
;; I like control-S for marking spam |
;; @r{I like @kbd{C-s} for marking spam} |
23017 |
(define-key gnus-summary-mode-map "\C-s" 'gnus-summary-mark-as-spam) |
(define-key gnus-summary-mode-map "\C-s" 'gnus-summary-mark-as-spam) |
23018 |
|
|
23019 |
(setq |
(setq |
23020 |
spam-log-to-registry t ;; for spam autodetection |
spam-log-to-registry t ; @r{for spam autodetection} |
23021 |
spam-use-BBDB t |
spam-use-BBDB t |
23022 |
spam-use-regex-headers t ; catch X-Spam-Flag (SpamAssassin) |
spam-use-regex-headers t ; @r{catch X-Spam-Flag (SpamAssassin)} |
23023 |
;; all groups with "spam" in the name contain spam |
;; @r{all groups with @samp{spam} in the name contain spam} |
23024 |
gnus-spam-newsgroup-contents '(("spam" gnus-group-spam-classification-spam)) |
gnus-spam-newsgroup-contents |
23025 |
;; see documentation for these |
'(("spam" gnus-group-spam-classification-spam)) |
23026 |
|
;; @r{see documentation for these} |
23027 |
spam-move-spam-nonspam-groups-only nil |
spam-move-spam-nonspam-groups-only nil |
23028 |
spam-mark-only-unseen-as-spam t |
spam-mark-only-unseen-as-spam t |
23029 |
spam-mark-ham-unread-before-move-from-spam-group t |
spam-mark-ham-unread-before-move-from-spam-group t |
23030 |
nnimap-split-rule 'nnimap-split-fancy |
nnimap-split-rule 'nnimap-split-fancy |
23031 |
;; understand what this does before you copy it to your own setup! |
;; @r{understand what this does before you copy it to your own setup!} |
23032 |
nnimap-split-fancy '(| |
nnimap-split-fancy '(| |
23033 |
;; trace references to parents and put in their group |
;; @r{trace references to parents and put in their group} |
23034 |
(: gnus-registry-split-fancy-with-parent) |
(: gnus-registry-split-fancy-with-parent) |
23035 |
;; this will catch server-side SpamAssassin tags |
;; @r{this will catch server-side SpamAssassin tags} |
23036 |
(: spam-split 'spam-use-regex-headers) |
(: spam-split 'spam-use-regex-headers) |
23037 |
(any "ding" "ding") |
(any "ding" "ding") |
23038 |
;; note that spam by default will go to "spam" |
;; @r{note that spam by default will go to @samp{spam}} |
23039 |
(: spam-split) |
(: spam-split) |
23040 |
;; default mailbox |
;; @r{default mailbox} |
23041 |
"mail")) |
"mail")) |
23042 |
|
|
23043 |
;; my parameters, set with `G p' |
;; @r{my parameters, set with @kbd{G p}} |
23044 |
|
|
23045 |
;; all nnml groups, and all nnimap groups except |
;; @r{all nnml groups, and all nnimap groups except} |
23046 |
;; "nnimap+mail.lifelogs.com:train" and |
;; @r{@samp{nnimap+mail.lifelogs.com:train} and} |
23047 |
;; "nnimap+mail.lifelogs.com:spam": any spam goes to nnimap training, |
;; @r{@samp{nnimap+mail.lifelogs.com:spam}: any spam goes to nnimap training,} |
23048 |
;; because it must have been detected manually |
;; @r{because it must have been detected manually} |
23049 |
|
|
23050 |
((spam-process-destination . "nnimap+mail.lifelogs.com:train")) |
((spam-process-destination . "nnimap+mail.lifelogs.com:train")) |
23051 |
|
|
23052 |
;; all NNTP groups |
;; @r{all @acronym{NNTP} groups} |
23053 |
;; autodetect spam with the blacklist and ham with the BBDB |
;; @r{autodetect spam with the blacklist and ham with the BBDB} |
23054 |
((spam-autodetect-methods spam-use-blacklist spam-use-BBDB) |
((spam-autodetect-methods spam-use-blacklist spam-use-BBDB) |
23055 |
;; send all spam to the training group |
;; @r{send all spam to the training group} |
23056 |
(spam-process-destination . "nnimap+mail.lifelogs.com:train")) |
(spam-process-destination . "nnimap+mail.lifelogs.com:train")) |
23057 |
|
|
23058 |
;; only some NNTP groups, where I want to autodetect spam |
;; @r{only some @acronym{NNTP} groups, where I want to autodetect spam} |
23059 |
((spam-autodetect . t)) |
((spam-autodetect . t)) |
23060 |
|
|
23061 |
;; my nnimap "nnimap+mail.lifelogs.com:spam" group |
;; @r{my nnimap @samp{nnimap+mail.lifelogs.com:spam} group} |
23062 |
|
|
23063 |
;; this is a spam group |
;; @r{this is a spam group} |
23064 |
((spam-contents gnus-group-spam-classification-spam) |
((spam-contents gnus-group-spam-classification-spam) |
23065 |
|
|
23066 |
;; any spam (which happens when I enter for all unseen messages, |
;; @r{any spam (which happens when I enter for all unseen messages,} |
23067 |
;; because of the gnus-spam-newsgroup-contents setting above), goes to |
;; @r{because of the @code{gnus-spam-newsgroup-contents} setting above), goes to} |
23068 |
;; "nnimap+mail.lifelogs.com:train" unless I mark it as ham |
;; @r{@samp{nnimap+mail.lifelogs.com:train} unless I mark it as ham} |
23069 |
|
|
23070 |
(spam-process-destination "nnimap+mail.lifelogs.com:train") |
(spam-process-destination "nnimap+mail.lifelogs.com:train") |
23071 |
|
|
23072 |
;; any ham goes to my "nnimap+mail.lifelogs.com:mail" folder, but |
;; @r{any ham goes to my @samp{nnimap+mail.lifelogs.com:mail} folder, but} |
23073 |
;; also to my "nnimap+mail.lifelogs.com:trainham" folder for training |
;; @r{also to my @samp{nnimap+mail.lifelogs.com:trainham} folder for training} |
23074 |
|
|
23075 |
(ham-process-destination "nnimap+mail.lifelogs.com:mail" |
(ham-process-destination "nnimap+mail.lifelogs.com:mail" |
23076 |
"nnimap+mail.lifelogs.com:trainham") |
"nnimap+mail.lifelogs.com:trainham") |
23077 |
;; in this group, only '!' marks are ham |
;; @r{in this group, only @samp{!} marks are ham} |
23078 |
(ham-marks |
(ham-marks |
23079 |
(gnus-ticked-mark)) |
(gnus-ticked-mark)) |
23080 |
;; remembers senders in the blacklist on the way out - this is |
;; @r{remembers senders in the blacklist on the way out---this is} |
23081 |
;; definitely not needed, it just makes me feel better |
;; @r{definitely not needed, it just makes me feel better} |
23082 |
(spam-process (gnus-group-spam-exit-processor-blacklist))) |
(spam-process (gnus-group-spam-exit-processor-blacklist))) |
23083 |
|
|
23084 |
;; Later, on the IMAP server I use the "train" group for training |
;; @r{Later, on the @acronym{IMAP} server I use the @samp{train} group for training} |
23085 |
;; SpamAssassin to recognize spam, and the "trainham" group for |
;; @r{SpamAssassin to recognize spam, and the @samp{trainham} group fora} |
23086 |
;; recognizing ham - but Gnus has nothing to do with it. |
;; @r{recognizing ham---but Gnus has nothing to do with it.} |
23087 |
|
|
23088 |
@end example |
@end example |
23089 |
|
|
23090 |
@subsubheading Using @file{spam.el} on an IMAP server with a statistical filter on the server |
@subsubheading Using @file{spam.el} on an IMAP server with a statistical filter on the server |
|
|
|
23091 |
From Reiner Steib <reiner.steib@@gmx.de>. |
From Reiner Steib <reiner.steib@@gmx.de>. |
23092 |
|
|
23093 |
My provider has set up bogofilter (in combination with @acronym{DCC}) on |
My provider has set up bogofilter (in combination with @acronym{DCC}) on |
23125 |
messages are marked as spam (with @code{$}). When I find a false |
messages are marked as spam (with @code{$}). When I find a false |
23126 |
positive, I mark the message with some other ham mark (@code{ham-marks}, |
positive, I mark the message with some other ham mark (@code{ham-marks}, |
23127 |
@ref{Spam ELisp Package Global Variables}). On group exit, those |
@ref{Spam ELisp Package Global Variables}). On group exit, those |
23128 |
messages are copied to both groups, @samp{INBOX} (were I want to have |
messages are copied to both groups, @samp{INBOX} (where I want to have |
23129 |
the article) and @samp{training.ham} (for training bogofilter) and |
the article) and @samp{training.ham} (for training bogofilter) and |
23130 |
deleted from the @samp{spam.detected} folder. |
deleted from the @samp{spam.detected} folder. |
23131 |
|
|
23157 |
(spam-process (gnus-group-spam-exit-processor-report-gmane))) |
(spam-process (gnus-group-spam-exit-processor-report-gmane))) |
23158 |
@end lisp |
@end lisp |
23159 |
|
|
23160 |
Additionally, I use `(setq spam-report-gmane-use-article-number nil)' |
Additionally, I use @code{(setq spam-report-gmane-use-article-number nil)} |
23161 |
because I don't read the groups directly from news.gmane.org, but |
because I don't read the groups directly from news.gmane.org, but |
23162 |
through my local news server (leafnode). I.e. the article numbers are |
through my local news server (leafnode). I.e. the article numbers are |
23163 |
not the same as on news.gmane.org, thus @code{spam-report.el} has to check |
not the same as on news.gmane.org, thus @code{spam-report.el} has to check |
23712 |
Add this symbol to a group's @code{spam-process} parameter by |
Add this symbol to a group's @code{spam-process} parameter by |
23713 |
customizing the group parameter or the |
customizing the group parameter or the |
23714 |
@code{gnus-spam-process-newsgroups} variable. When this symbol is added |
@code{gnus-spam-process-newsgroups} variable. When this symbol is added |
23715 |
to a grup's @code{spam-process} parameter, the ham-marked articles in |
to a group's @code{spam-process} parameter, the ham-marked articles in |
23716 |
@emph{ham} groups will be sent to the SpamOracle as samples of ham |
@emph{ham} groups will be sent to the SpamOracle as samples of ham |
23717 |
messages. Note that this ham processor has no effect in @emph{spam} or |
messages. Note that this ham processor has no effect in @emph{spam} or |
23718 |
@emph{unclassified} groups. |
@emph{unclassified} groups. |
23752 |
@enumerate |
@enumerate |
23753 |
|
|
23754 |
@item |
@item |
23755 |
code |
Code |
23756 |
|
|
23757 |
@lisp |
@lisp |
23758 |
(defvar spam-use-blackbox nil |
(defvar spam-use-blackbox nil |
23760 |
@end lisp |
@end lisp |
23761 |
|
|
23762 |
Add |
Add |
23763 |
@example |
@lisp |
23764 |
(spam-use-blackbox . spam-check-blackbox) |
(spam-use-blackbox . spam-check-blackbox) |
23765 |
@end example |
@end lisp |
23766 |
to @code{spam-list-of-checks}. |
to @code{spam-list-of-checks}. |
23767 |
|
|
23768 |
Add |
Add |
23769 |
@example |
@lisp |
23770 |
(gnus-group-ham-exit-processor-blackbox ham spam-use-blackbox) |
(gnus-group-ham-exit-processor-blackbox ham spam-use-blackbox) |
23771 |
(gnus-group-spam-exit-processor-blackbox spam spam-use-blackbox) |
(gnus-group-spam-exit-processor-blackbox spam spam-use-blackbox) |
23772 |
@end example |
@end lisp |
23773 |
|
|
23774 |
to @code{spam-list-of-processors}. |
to @code{spam-list-of-processors}. |
23775 |
|
|
23776 |
Add |
Add |
23777 |
@example |
@lisp |
23778 |
(spam-use-blackbox spam-blackbox-register-routine |
(spam-use-blackbox spam-blackbox-register-routine |
23779 |
nil |
nil |
23780 |
spam-blackbox-unregister-routine |
spam-blackbox-unregister-routine |
23781 |
nil) |
nil) |
23782 |
@end example |
@end lisp |
23783 |
|
|
23784 |
to @code{spam-registration-functions}. Write the register/unregister |
to @code{spam-registration-functions}. Write the register/unregister |
23785 |
routines using the bogofilter register/unregister routines as a |
routines using the bogofilter register/unregister routines as a |
23786 |
start, or other restister/unregister routines more appropriate to |
start, or other restister/unregister routines more appropriate to |
23787 |
Blackbox. |
Blackbox. |
23788 |
|
|
23789 |
@item |
@item |
23790 |
functionality |
Functionality |
23791 |
|
|
23792 |
Write the @code{spam-check-blackbox} function. It should return |
Write the @code{spam-check-blackbox} function. It should return |
23793 |
@samp{nil} or @code{spam-split-group}, observing the other |
@samp{nil} or @code{spam-split-group}, observing the other |
23806 |
@enumerate |
@enumerate |
23807 |
|
|
23808 |
@item |
@item |
23809 |
code |
Code |
23810 |
|
|
23811 |
Note you don't have to provide a spam or a ham processor. Only |
Note you don't have to provide a spam or a ham processor. Only |
23812 |
provide them if Blackbox supports spam or ham processing. |
provide them if Blackbox supports spam or ham processing. |
23831 |
Gnus parameters |
Gnus parameters |
23832 |
|
|
23833 |
Add |
Add |
23834 |
@example |
@lisp |
23835 |
(const :tag "Spam: Blackbox" (spam spam-use-blackbox)) |
(const :tag "Spam: Blackbox" (spam spam-use-blackbox)) |
23836 |
(const :tag "Ham: Blackbox" (ham spam-use-blackbox)) |
(const :tag "Ham: Blackbox" (ham spam-use-blackbox)) |
23837 |
@end example |
@end lisp |
23838 |
to the @code{spam-process} group parameter in @code{gnus.el}. Make |
to the @code{spam-process} group parameter in @code{gnus.el}. Make |
23839 |
sure you do it twice, once for the parameter and once for the |
sure you do it twice, once for the parameter and once for the |
23840 |
variable customization. |
variable customization. |
23841 |
|
|
23842 |
Add |
Add |
23843 |
@example |
@lisp |
23844 |
(variable-item spam-use-blackbox) |
(variable-item spam-use-blackbox) |
23845 |
@end example |
@end lisp |
23846 |
to the @code{spam-autodetect-methods} group parameter in |
to the @code{spam-autodetect-methods} group parameter in |
23847 |
@code{gnus.el}. |
@code{gnus.el}. |
23848 |
|
|