832 |
|
|
833 |
Filtering Spam Using The Spam ELisp Package |
Filtering Spam Using The Spam ELisp Package |
834 |
|
|
835 |
* Spam ELisp Package Sequence of Events:: |
* Spam ELisp Package Sequence of Events:: |
836 |
* Spam ELisp Package Filtering of Incoming Mail:: |
* Spam ELisp Package Filtering of Incoming Mail:: |
837 |
* Spam ELisp Package Global Variables:: |
* Spam ELisp Package Global Variables:: |
838 |
* Spam ELisp Package Configuration Examples:: |
* Spam ELisp Package Configuration Examples:: |
839 |
* Blacklists and Whitelists:: |
* Blacklists and Whitelists:: |
840 |
* BBDB Whitelists:: |
* BBDB Whitelists:: |
841 |
* Gmane Spam Reporting:: |
* Gmane Spam Reporting:: |
842 |
* Anti-spam Hashcash Payments:: |
* Anti-spam Hashcash Payments:: |
843 |
* Blackholes:: |
* Blackholes:: |
844 |
* Regular Expressions Header Matching:: |
* Regular Expressions Header Matching:: |
845 |
* Bogofilter:: |
* Bogofilter:: |
846 |
* ifile spam filtering:: |
* ifile spam filtering:: |
847 |
* spam-stat spam filtering:: |
* spam-stat spam filtering:: |
848 |
* SpamOracle:: |
* SpamOracle:: |
849 |
* Extending the Spam ELisp package:: |
* Extending the Spam ELisp package:: |
850 |
|
|
851 |
Filtering Spam Using Statistics with spam-stat |
Filtering Spam Using Statistics with spam-stat |
852 |
|
|
1393 |
Most common Unix news readers use a shared startup file called |
Most common Unix news readers use a shared startup file called |
1394 |
@file{.newsrc}. This file contains all the information about what |
@file{.newsrc}. This file contains all the information about what |
1395 |
groups are subscribed, and which articles in these groups have been |
groups are subscribed, and which articles in these groups have been |
1396 |
read. |
read. |
1397 |
|
|
1398 |
Things got a bit more complicated with @sc{gnus}. In addition to |
Things got a bit more complicated with @sc{gnus}. In addition to |
1399 |
keeping the @file{.newsrc} file updated, it also used a file called |
keeping the @file{.newsrc} file updated, it also used a file called |
3008 |
hear a beep when you enter a group, you could put something like |
hear a beep when you enter a group, you could put something like |
3009 |
@code{(dummy-variable (ding))} in the parameters of that group. |
@code{(dummy-variable (ding))} in the parameters of that group. |
3010 |
@code{dummy-variable} will be set to the (meaningless) result of the |
@code{dummy-variable} will be set to the (meaningless) result of the |
3011 |
@code{(ding)} form. |
@code{(ding)} form. |
3012 |
|
|
3013 |
Alternatively, since the VARIABLE becomes local to the group, this |
Alternatively, since the VARIABLE becomes local to the group, this |
3014 |
pattern can be used to temporarily change a hook. For example, if the |
pattern can be used to temporarily change a hook. For example, if the |
3984 |
8: comp.binaries.fractals |
8: comp.binaries.fractals |
3985 |
13: comp.sources.unix |
13: comp.sources.unix |
3986 |
452: alt.sex.emacs |
452: alt.sex.emacs |
3987 |
@end group |
@end group |
3988 |
@end example |
@end example |
3989 |
|
|
3990 |
The @samp{Emacs} topic has the topic parameter @code{(score-file |
The @samp{Emacs} topic has the topic parameter @code{(score-file |
13293 |
By default the splitting codes @acronym{MIME} decodes headers so you |
By default the splitting codes @acronym{MIME} decodes headers so you |
13294 |
can match on non-@acronym{ASCII} strings. The |
can match on non-@acronym{ASCII} strings. The |
13295 |
@code{nnmail-mail-splitting-charset} variable specifies the default |
@code{nnmail-mail-splitting-charset} variable specifies the default |
13296 |
charset for decoding. The behaviour can be turned off completely by |
charset for decoding. The behavior can be turned off completely by |
13297 |
binding @code{nnmail-mail-splitting-decodes} to @code{nil}, which is |
binding @code{nnmail-mail-splitting-decodes} to @code{nil}, which is |
13298 |
useful if you want to match articles based on the raw header data. |
useful if you want to match articles based on the raw header data. |
13299 |
|
|
14011 |
|
|
14012 |
@table @code |
@table @code |
14013 |
|
|
14014 |
@item group |
@item group |
14015 |
If the split is a string, that will be taken as a group name. Normal |
If the split is a string, that will be taken as a group name. Normal |
14016 |
regexp match expansion will be done. See below for examples. |
regexp match expansion will be done. See below for examples. |
14017 |
|
|
16297 |
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 |
16298 |
(almost) the same as the @code{ftp} @file{~/.netrc} file. See the |
(almost) the same as the @code{ftp} @file{~/.netrc} file. See the |
16299 |
variable @code{nntp-authinfo-file} for exact syntax; also see |
variable @code{nntp-authinfo-file} for exact syntax; also see |
16300 |
@ref{NNTP}. An example of an .authinfo line for an IMAP server, is: |
@ref{NNTP}. An example of an .authinfo line for an IMAP server, is: |
16301 |
|
|
16302 |
@example |
@example |
16303 |
machine students.uio.no login larsi password geheimnis port imap |
machine students.uio.no login larsi password geheimnis port imap |
16635 |
|
|
16636 |
@acronym{IMAP} is a complex protocol, more so than @acronym{NNTP} or |
@acronym{IMAP} is a complex protocol, more so than @acronym{NNTP} or |
16637 |
@acronym{POP3}. Implementation bugs are not unlikely, and we do our |
@acronym{POP3}. Implementation bugs are not unlikely, and we do our |
16638 |
best to fix them right away. If you encounter odd behaviour, chances |
best to fix them right away. If you encounter odd behavior, chances |
16639 |
are that either the server or Gnus is buggy. |
are that either the server or Gnus is buggy. |
16640 |
|
|
16641 |
If you are familiar with network protocols in general, you will |
If you are familiar with network protocols in general, you will |
16650 |
@vindex imap-log |
@vindex imap-log |
16651 |
Because the protocol dump, when enabled, generates lots of data, it is |
Because the protocol dump, when enabled, generates lots of data, it is |
16652 |
disabled by default. You can enable it by setting @code{imap-log} as |
disabled by default. You can enable it by setting @code{imap-log} as |
16653 |
follows: |
follows: |
16654 |
|
|
16655 |
@lisp |
@lisp |
16656 |
(setq imap-log t) |
(setq imap-log t) |
18726 |
@table @dfn |
@table @dfn |
18727 |
@item If I read an article while plugged, do they get entered into the Agent? |
@item If I read an article while plugged, do they get entered into the Agent? |
18728 |
|
|
18729 |
@strong{No}. If you want this behaviour, add |
@strong{No}. If you want this behavior, add |
18730 |
@code{gnus-agent-fetch-selected-article} to |
@code{gnus-agent-fetch-selected-article} to |
18731 |
@code{gnus-select-article-hook}. |
@code{gnus-select-article-hook}. |
18732 |
|
|
21012 |
|
|
21013 |
Gnus usually moves point to a pre-defined place on each line in most |
Gnus usually moves point to a pre-defined place on each line in most |
21014 |
buffers. By default, point move to the first colon character on the |
buffers. By default, point move to the first colon character on the |
21015 |
line. You can customize this behaviour in three different ways. |
line. You can customize this behavior in three different ways. |
21016 |
|
|
21017 |
You can move the colon character to somewhere else on the line. |
You can move the colon character to somewhere else on the line. |
21018 |
|
|
22361 |
@samp{vmadmin.com}. If you get 200 messages about @samp{VIAGRA}, you |
@samp{vmadmin.com}. If you get 200 messages about @samp{VIAGRA}, you |
22362 |
discard all messages with @samp{VIAGRA} in the message. If you get |
discard all messages with @samp{VIAGRA} in the message. If you get |
22363 |
lots of spam from Bulgaria, for example, you try to filter all mail |
lots of spam from Bulgaria, for example, you try to filter all mail |
22364 |
from Bulgarian IPs. |
from Bulgarian IPs. |
22365 |
|
|
22366 |
This, unfortunately, is a great way to discard legitimate e-mail. The |
This, unfortunately, is a great way to discard legitimate e-mail. The |
22367 |
risks of blocking a whole country (Bulgaria, Norway, Nigeria, China, |
risks of blocking a whole country (Bulgaria, Norway, Nigeria, China, |
22704 |
group. |
group. |
22705 |
|
|
22706 |
@menu |
@menu |
22707 |
* Spam ELisp Package Sequence of Events:: |
* Spam ELisp Package Sequence of Events:: |
22708 |
* Spam ELisp Package Filtering of Incoming Mail:: |
* Spam ELisp Package Filtering of Incoming Mail:: |
22709 |
* Spam ELisp Package Global Variables:: |
* Spam ELisp Package Global Variables:: |
22710 |
* Spam ELisp Package Configuration Examples:: |
* Spam ELisp Package Configuration Examples:: |
22711 |
* Blacklists and Whitelists:: |
* Blacklists and Whitelists:: |
22712 |
* BBDB Whitelists:: |
* BBDB Whitelists:: |
22713 |
* Gmane Spam Reporting:: |
* Gmane Spam Reporting:: |
22714 |
* Anti-spam Hashcash Payments:: |
* Anti-spam Hashcash Payments:: |
22715 |
* Blackholes:: |
* Blackholes:: |
22716 |
* Regular Expressions Header Matching:: |
* Regular Expressions Header Matching:: |
22717 |
* Bogofilter:: |
* Bogofilter:: |
22718 |
* ifile spam filtering:: |
* ifile spam filtering:: |
22719 |
* spam-stat spam filtering:: |
* spam-stat spam filtering:: |
22720 |
* SpamOracle:: |
* SpamOracle:: |
22721 |
* Extending the Spam ELisp package:: |
* Extending the Spam ELisp package:: |
22722 |
@end menu |
@end menu |
22723 |
|
|
22724 |
@node Spam ELisp Package Sequence of Events |
@node Spam ELisp Package Sequence of Events |
22725 |
@subsubsection Spam ELisp Package Sequence of Events |
@subsubsection Spam ELisp Package Sequence of Events |
23174 |
;; @r{any ham goes to my @samp{nnimap+mail.lifelogs.com:mail} folder, but} |
;; @r{any ham goes to my @samp{nnimap+mail.lifelogs.com:mail} folder, but} |
23175 |
;; @r{also to my @samp{nnimap+mail.lifelogs.com:trainham} folder for training} |
;; @r{also to my @samp{nnimap+mail.lifelogs.com:trainham} folder for training} |
23176 |
|
|
23177 |
(ham-process-destination "nnimap+mail.lifelogs.com:mail" |
(ham-process-destination "nnimap+mail.lifelogs.com:mail" |
23178 |
"nnimap+mail.lifelogs.com:trainham") |
"nnimap+mail.lifelogs.com:trainham") |
23179 |
;; @r{in this group, only @samp{!} marks are ham} |
;; @r{in this group, only @samp{!} marks are ham} |
23180 |
(ham-marks |
(ham-marks |
23215 |
(spam-contents gnus-group-spam-classification-ham)) |
(spam-contents gnus-group-spam-classification-ham)) |
23216 |
@end lisp |
@end lisp |
23217 |
|
|
23218 |
@itemize |
@itemize |
23219 |
|
|
23220 |
@item @b{The Spam folder:} |
@item @b{The Spam folder:} |
23221 |
|
|
23308 |
added to a group's @code{spam-process} parameter, the senders of |
added to a group's @code{spam-process} parameter, the senders of |
23309 |
spam-marked articles will be added to the blacklist. |
spam-marked articles will be added to the blacklist. |
23310 |
|
|
23311 |
@emph{WARNING} |
@emph{WARNING} |
23312 |
|
|
23313 |
Instead of the obsolete |
Instead of the obsolete |
23314 |
@code{gnus-group-spam-exit-processor-blacklist}, it is recommended |
@code{gnus-group-spam-exit-processor-blacklist}, it is recommended |
23327 |
whitelist. Note that this ham processor has no effect in @emph{spam} |
whitelist. Note that this ham processor has no effect in @emph{spam} |
23328 |
or @emph{unclassified} groups. |
or @emph{unclassified} groups. |
23329 |
|
|
23330 |
@emph{WARNING} |
@emph{WARNING} |
23331 |
|
|
23332 |
Instead of the obsolete |
Instead of the obsolete |
23333 |
@code{gnus-group-ham-exit-processor-whitelist}, it is recommended |
@code{gnus-group-ham-exit-processor-whitelist}, it is recommended |
23393 |
BBDB. Note that this ham processor has no effect in @emph{spam} |
BBDB. Note that this ham processor has no effect in @emph{spam} |
23394 |
or @emph{unclassified} groups. |
or @emph{unclassified} groups. |
23395 |
|
|
23396 |
@emph{WARNING} |
@emph{WARNING} |
23397 |
|
|
23398 |
Instead of the obsolete |
Instead of the obsolete |
23399 |
@code{gnus-group-ham-exit-processor-BBDB}, it is recommended |
@code{gnus-group-ham-exit-processor-BBDB}, it is recommended |
23420 |
|
|
23421 |
Gmane can be found at @uref{http://gmane.org}. |
Gmane can be found at @uref{http://gmane.org}. |
23422 |
|
|
23423 |
@emph{WARNING} |
@emph{WARNING} |
23424 |
|
|
23425 |
Instead of the obsolete |
Instead of the obsolete |
23426 |
@code{gnus-group-spam-exit-processor-report-gmane}, it is recommended |
@code{gnus-group-spam-exit-processor-report-gmane}, it is recommended |
23589 |
added to a group's @code{spam-process} parameter, spam-marked articles |
added to a group's @code{spam-process} parameter, spam-marked articles |
23590 |
will be added to the Bogofilter spam database. |
will be added to the Bogofilter spam database. |
23591 |
|
|
23592 |
@emph{WARNING} |
@emph{WARNING} |
23593 |
|
|
23594 |
Instead of the obsolete |
Instead of the obsolete |
23595 |
@code{gnus-group-spam-exit-processor-bogofilter}, it is recommended |
@code{gnus-group-spam-exit-processor-bogofilter}, it is recommended |
23606 |
of non-spam messages. Note that this ham processor has no effect in |
of non-spam messages. Note that this ham processor has no effect in |
23607 |
@emph{spam} or @emph{unclassified} groups. |
@emph{spam} or @emph{unclassified} groups. |
23608 |
|
|
23609 |
@emph{WARNING} |
@emph{WARNING} |
23610 |
|
|
23611 |
Instead of the obsolete |
Instead of the obsolete |
23612 |
@code{gnus-group-ham-exit-processor-bogofilter}, it is recommended |
@code{gnus-group-ham-exit-processor-bogofilter}, it is recommended |
23693 |
added to a group's @code{spam-process} parameter, the spam-marked |
added to a group's @code{spam-process} parameter, the spam-marked |
23694 |
articles will be added to the spam-stat database of spam messages. |
articles will be added to the spam-stat database of spam messages. |
23695 |
|
|
23696 |
@emph{WARNING} |
@emph{WARNING} |
23697 |
|
|
23698 |
Instead of the obsolete |
Instead of the obsolete |
23699 |
@code{gnus-group-spam-exit-processor-stat}, it is recommended |
@code{gnus-group-spam-exit-processor-stat}, it is recommended |
23710 |
of non-spam messages. Note that this ham processor has no effect in |
of non-spam messages. Note that this ham processor has no effect in |
23711 |
@emph{spam} or @emph{unclassified} groups. |
@emph{spam} or @emph{unclassified} groups. |
23712 |
|
|
23713 |
@emph{WARNING} |
@emph{WARNING} |
23714 |
|
|
23715 |
Instead of the obsolete |
Instead of the obsolete |
23716 |
@code{gnus-group-ham-exit-processor-stat}, it is recommended |
@code{gnus-group-ham-exit-processor-stat}, it is recommended |
23802 |
to a group's @code{spam-process} parameter, spam-marked articles will be |
to a group's @code{spam-process} parameter, spam-marked articles will be |
23803 |
sent to SpamOracle as spam samples. |
sent to SpamOracle as spam samples. |
23804 |
|
|
23805 |
@emph{WARNING} |
@emph{WARNING} |
23806 |
|
|
23807 |
Instead of the obsolete |
Instead of the obsolete |
23808 |
@code{gnus-group-spam-exit-processor-spamoracle}, it is recommended |
@code{gnus-group-spam-exit-processor-spamoracle}, it is recommended |
23819 |
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 |
23820 |
@emph{unclassified} groups. |
@emph{unclassified} groups. |
23821 |
|
|
23822 |
@emph{WARNING} |
@emph{WARNING} |
23823 |
|
|
23824 |
Instead of the obsolete |
Instead of the obsolete |
23825 |
@code{gnus-group-ham-exit-processor-spamoracle}, it is recommended |
@code{gnus-group-ham-exit-processor-spamoracle}, it is recommended |
23914 |
provide them if Blackbox supports spam or ham processing. |
provide them if Blackbox supports spam or ham processing. |
23915 |
|
|
23916 |
Also, ham and spam processors are being phased out as single |
Also, ham and spam processors are being phased out as single |
23917 |
variables. Instead the form @code{'(spam spam-use-blackbox)} or |
variables. Instead the form @code{'(spam spam-use-blackbox)} or |
23918 |
@code{'(ham spam-use-blackbox)} is favored. For now, spam/ham |
@code{'(ham spam-use-blackbox)} is favored. For now, spam/ham |
23919 |
processor variables are still around but they won't be for long. |
processor variables are still around but they won't be for long. |
23920 |
|
|
26140 |
@kbd{J r} in the server buffer. Gnus will not download articles into |
@kbd{J r} in the server buffer. Gnus will not download articles into |
26141 |
the Agent cache, unless you instruct it to do so, though, by using |
the Agent cache, unless you instruct it to do so, though, by using |
26142 |
@kbd{J u} or @kbd{J s} from the Group buffer. You revert to the old |
@kbd{J u} or @kbd{J s} from the Group buffer. You revert to the old |
26143 |
behaviour of having the Agent disabled with @code{(setq gnus-agent |
behavior of having the Agent disabled with @code{(setq gnus-agent |
26144 |
nil)}. Note that putting @code{(gnus-agentize)} in @file{~/.gnus.el} |
nil)}. Note that putting @code{(gnus-agentize)} in @file{~/.gnus.el} |
26145 |
is not needed any more. |
is not needed any more. |
26146 |
|
|
26280 |
system. While the variable is called @code{canlock-password}, it is not |
system. While the variable is called @code{canlock-password}, it is not |
26281 |
security sensitive data. Publishing your canlock string on the web |
security sensitive data. Publishing your canlock string on the web |
26282 |
will not allow anyone to be able to anything she could not already do. |
will not allow anyone to be able to anything she could not already do. |
26283 |
The behaviour can be changed by customizing @code{message-insert-canlock}. |
The behavior can be changed by customizing @code{message-insert-canlock}. |
26284 |
|
|
26285 |
@item |
@item |
26286 |
Gnus supports server-side mail filtering using Sieve. |
Gnus supports server-side mail filtering using Sieve. |
26380 |
@item |
@item |
26381 |
The default for @code{message-forward-show-mml} changed to symbol @code{best}. |
The default for @code{message-forward-show-mml} changed to symbol @code{best}. |
26382 |
|
|
26383 |
The behaviour for the @code{best} value is to show @acronym{MML} (i.e., |
The behavior for the @code{best} value is to show @acronym{MML} (i.e., |
26384 |
convert to @acronym{MIME}) when appropriate. @acronym{MML} will not be |
convert to @acronym{MIME}) when appropriate. @acronym{MML} will not be |
26385 |
used when forwarding signed or encrypted messages, as the conversion |
used when forwarding signed or encrypted messages, as the conversion |
26386 |
invalidate the digital signature. |
invalidate the digital signature. |
26905 |
edebug. Debugging Lisp code is documented in the Elisp manual |
edebug. Debugging Lisp code is documented in the Elisp manual |
26906 |
(@pxref{Debugging, , Debugging Lisp Programs, elisp, The GNU Emacs |
(@pxref{Debugging, , Debugging Lisp Programs, elisp, The GNU Emacs |
26907 |
Lisp Reference Manual}). To get you started with edebug, consider if |
Lisp Reference Manual}). To get you started with edebug, consider if |
26908 |
you discover some weird behaviour when pressing @kbd{c}, the first |
you discover some weird behavior when pressing @kbd{c}, the first |
26909 |
step is to do @kbd{C-h k c} and click on the hyperlink (Emacs only) in |
step is to do @kbd{C-h k c} and click on the hyperlink (Emacs only) in |
26910 |
the documentation buffer that leads you to the function definition, |
the documentation buffer that leads you to the function definition, |
26911 |
then press @kbd{M-x edebug-defun RET} with point inside that function, |
then press @kbd{M-x edebug-defun RET} with point inside that function, |