* CRM114 Mailfilter and spam.el
@ 2004-04-01 20:54 Adam Sjøgren
2004-04-02 6:22 ` Kai Grossjohann
` (2 more replies)
0 siblings, 3 replies; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-01 20:54 UTC (permalink / raw)
Hi.
So, I've begun to take a stab at switcing from spam-stat.el to CRM114
Mailfilter and spam.el.
I followed the instructions in the documentation of spam.el about how
to add another back end ("Extending the Spam ELisp package"), basing
my additions on the bogofilter stuff, as I guess bogofilter has a
similar interface to CRM114 Mailfilter.
I think I've got the spam.el <-> CRM114 Mailfilter part working. I can
do spam-crm114-score and get the number that mailfilter.crm adds to
the header X-CRM114-Status, and splitting puts email in my spam-group
- learning spam seems to work.
Now I just need to figure out how to configure spam.el to call
mailfilter.crm --learnspam/--learnnonspam at the *appropriate* moments
only.
Boxing with adding crm114 to spam.el has made me a little, uhm, less
motivated to experiment further (I'm bad a elisp and it takes a while
to figure out _how_ to debug that for instance '--fileprefix=
blahblah' is very much different from '--fileprefix=blahblah' to
mailfilter.crm...), so here goes my question:
The documentation for CRM114 underlines heavily and repeatedly that
one should *only* train on failures. So I want to only do
mailfilter.crm --learnspam on spam that was classified as ham by
CRM114, and I want to only do mailfilter.crm --learnnonspam on ham
that was classified by CRM114. No learning in any other case.
Also, I don't really want special "training"-groups.
Ideally I'd like to just have a workflow like this:
* Email comes in, and is split with spam-split. Spam goes into
"nnml:spam", ham goes through my usual, other splitrules (bbdb and
stuff).
* If a spam is misclassified as ham, I would like to mark that
message in some way, so that it is moved to nnml:spam and
mailfilter.crm is called with --learnspam on it.
* If a ham is misclassified as spam, and therefore is split into
nnml:spam, I would like to move it to the correct group and have
mailfilter.crm called on it with --learnnonspam.
* I would like spam.el *never* to mark *any* message as expirable.
That's it. But how?
Best regards,
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-01 20:54 CRM114 Mailfilter and spam.el Adam Sjøgren
@ 2004-04-02 6:22 ` Kai Grossjohann
2004-04-02 16:04 ` Adam Sjøgren
` (3 more replies)
2004-04-02 17:06 ` Ted Zlatanov
2004-04-03 23:59 ` Adam Sjøgren
2 siblings, 4 replies; 35+ messages in thread
From: Kai Grossjohann @ 2004-04-02 6:22 UTC (permalink / raw)
asjo@koldfront.dk (Adam Sjøgren) writes:
> * If a spam is misclassified as ham, I would like to mark that
> message in some way, so that it is moved to nnml:spam and
> mailfilter.crm is called with --learnspam on it.
I think you want to set spam-process-ham-in-spam-groups for this one.
> * If a ham is misclassified as spam, and therefore is split into
> nnml:spam, I would like to move it to the correct group and have
> mailfilter.crm called on it with --learnnonspam.
But I can't find spam-process-spam-in-ham-groups. Hm.
Kai
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-02 6:22 ` Kai Grossjohann
@ 2004-04-02 16:04 ` Adam Sjøgren
2004-04-03 13:28 ` Kai Grossjohann
2004-04-02 16:06 ` Adam Sjøgren
` (2 subsequent siblings)
3 siblings, 1 reply; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-02 16:04 UTC (permalink / raw)
On Fri, 02 Apr 2004 08:22:25 +0200, Kai wrote:
> asjo@koldfront.dk (Adam Sjøgren) writes:
>> * If a spam is misclassified as ham, I would like to mark that
>> message in some way, so that it is moved to nnml:spam and
>> mailfilter.crm is called with --learnspam on it.
> I think you want to set spam-process-ham-in-spam-groups for this
> one.
>> * If a ham is misclassified as spam, and therefore is split into
>> nnml:spam, I would like to move it to the correct group and have
>> mailfilter.crm called on it with --learnnonspam.
> But I can't find spam-process-spam-in-ham-groups. Hm.
Okay, I got it almost working (by reading the documentation one more
time).
My understanding so far is this:
* I want all my groups to be unclassified - because I only want to
train on errors (marking them by hand). I never want to train on
properly classified ham nor spam.
* On the topic that contains all my normal email-groups, I've set
these parameters:
((spam-process
'(spam spam-use-crm114))
(spam-process-destination . "nnml:spam"))
This means that if spam ends up in one of my normal email-groups, I
mark it with M-d ($), and it crm114 is called to learn it as spam,
and it is moved to nnml:spam.
Success! This is what I want, and it works.
* On my nnml:spam-group (where spam is split to, and moved to as per
above) I've set these parameters:
((spam-process
'(ham spam-use-crm114))
(ham-process-destination . "nnml:normal")
(spam-process-destination . "nnml:spam")
(ham-marks
(gnus-ticked-mark))
What I want to achieve with this is: When a ham ends up in nnml:spam,
I tick it (!). When I leave the group, crm114 should learn it as
ham, and the article should be moved to nnml:normal[1].
This only works partially: The ticked articles are processed by
crm114 to be learned as ham (fine), but the articles are not moved
to nnml:normal - they stay in nnml:spam.
(I guess the spam-process-destination should be removed, as it
isn't used).
* My global variables are set like this:
(setq
; Only process each article once:
spam-log-to-registry t
; Only process spam in nonspam groups (i.e. Train On Error only):
spam-move-spam-nonspam-groups-only t
; All my groups are unclassified, I should remove this one:
spam-process-ham-in-spam-groups t
; Process ham in ham and unclassified groups:
spam-process-ham-in-nonham-groups t
; I want ham to be unread when moved out (it never is, but that's
; what I would like if it did move):
spam-mark-ham-unread-before-move-from-spam-group t
; CRM114 Mailfilter (I will submit a patch):
spam-use-crm114 t
spam-crm114-path "/home/asjo/crm114.pl" ; (for debugging)
spam-crm114-database-directory "--fileprefix=/home/asjo/.crm114/")
And I use (: spam-split) in my fancy split-rules.
This is very cool - it's beginning to make sense to me _and_ it almost
works :-)
I've only got the "ham-marked articles in nnml:spam should be moved as
well as processed"-problem left.
Best regards,
Adam
[1]: If the articles I mark as ham in nnml:spam could be 1) learned as
ham by crm114 and then 2) respooled, that would be even better
than 2) moved to nnml:normal.
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-02 6:22 ` Kai Grossjohann
2004-04-02 16:04 ` Adam Sjøgren
@ 2004-04-02 16:06 ` Adam Sjøgren
2004-04-02 17:14 ` Ted Zlatanov
2004-04-03 13:29 ` Kai Grossjohann
2004-04-02 16:10 ` Jody Klymak
2004-04-02 17:07 ` Ted Zlatanov
3 siblings, 2 replies; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-02 16:06 UTC (permalink / raw)
On Fri, 02 Apr 2004 08:22:25 +0200, Kai wrote:
> asjo@koldfront.dk (Adam Sjøgren) writes:
>> * If a spam is misclassified as ham, I would like to mark that
>> message in some way, so that it is moved to nnml:spam and
>> mailfilter.crm is called with --learnspam on it.
> I think you want to set spam-process-ham-in-spam-groups for this
> one.
>> * If a ham is misclassified as spam, and therefore is split into
>> nnml:spam, I would like to move it to the correct group and have
>> mailfilter.crm called on it with --learnnonspam.
> But I can't find spam-process-spam-in-ham-groups. Hm.
Okay, I got it almost working (by reading the documentation one more
time).
My understanding so far is this:
* I want all my groups to be unclassified - because I only want to
train on errors (marking them by hand). I never want to train on
properly classified ham nor spam.
* On the topic that contains all my normal email-groups, I've set
these parameters:
((spam-process
'(spam spam-use-crm114))
(spam-process-destination . "nnml:spam"))
This means that if spam ends up in one of my normal email-groups, I
mark it with M-d ($), and it crm114 is called to learn it as spam,
and it is moved to nnml:spam.
Success! This is what I want, and it works.
* On my nnml:spam-group (where spam is split to, and moved to as per
above) I've set these parameters:
((spam-process
'(ham spam-use-crm114))
(ham-process-destination . "nnml:normal")
(spam-process-destination . "nnml:spam")
(ham-marks
(gnus-ticked-mark))
What I want to achieve with this is: When a ham ends up in nnml:spam,
I tick it (!). When I leave the group, crm114 should learn it as
ham, and the article should be moved to nnml:normal[1].
This only works partially: The ticked articles are processed by
crm114 to be learned as ham (fine), but the articles are not moved
to nnml:normal - they stay in nnml:spam.
(I guess the spam-process-destination should be removed, as it
isn't used).
* My global variables are set like this:
(setq
; Only process each article once:
spam-log-to-registry t
; Only process spam in nonspam groups (i.e. Train On Error only):
spam-move-spam-nonspam-groups-only t
; All my groups are unclassified, I should remove this one:
spam-process-ham-in-spam-groups t
; Process ham in ham and unclassified groups:
spam-process-ham-in-nonham-groups t
; I want ham to be unread when moved out (it never is, but that's
; what I would like if it did move):
spam-mark-ham-unread-before-move-from-spam-group t
; CRM114 Mailfilter (I will submit a patch):
spam-use-crm114 t
spam-crm114-path "/home/asjo/crm114.pl" ; (for debugging)
spam-crm114-database-directory "--fileprefix=/home/asjo/.crm114/")
And I use (: spam-split) in my fancy split-rules.
This is very cool - it's beginning to make sense to me _and_ it almost
works :-)
I've only got the "ham-marked articles in nnml:spam should be moved as
well as processed"-problem left.
Best regards,
Adam
[1]: If the articles I mark as ham in nnml:spam could be 1) learned as
ham by crm114 and then 2) respooled, that would be even better
than 2) moved to nnml:normal.
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-02 6:22 ` Kai Grossjohann
2004-04-02 16:04 ` Adam Sjøgren
2004-04-02 16:06 ` Adam Sjøgren
@ 2004-04-02 16:10 ` Jody Klymak
2004-04-02 17:07 ` Ted Zlatanov
3 siblings, 0 replies; 35+ messages in thread
From: Jody Klymak @ 2004-04-02 16:10 UTC (permalink / raw)
Hello,
>> * If a ham is misclassified as spam, and therefore is split into
>> nnml:spam, I would like to move it to the correct group and have
>> mailfilter.crm called on it with --learnnonspam.
>
> But I can't find spam-process-spam-in-ham-groups. Hm.
I think the equivalent functionality is in:
--8<---------------cut here---------------start------------->8---
If a spam is found in any group (this can be changed to only non-spam
groups with `spam-move-spam-nonspam-groups-only'), it is processed by
the active `spam-processors'
--8<---------------cut here---------------end--------------->8---
Cheers, Jody
--
Jody Klymak http://opg1.ucsd.edu/~jklymak/
mailto:jklymak@ucsd.edu
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-01 20:54 CRM114 Mailfilter and spam.el Adam Sjøgren
2004-04-02 6:22 ` Kai Grossjohann
@ 2004-04-02 17:06 ` Ted Zlatanov
2004-04-02 17:26 ` Adam Sjøgren
2004-04-03 23:59 ` Adam Sjøgren
2 siblings, 1 reply; 35+ messages in thread
From: Ted Zlatanov @ 2004-04-02 17:06 UTC (permalink / raw)
Cc: ding
On Thu, 01 Apr 2004, asjo@koldfront.dk wrote:
> So, I've begun to take a stab at switcing from spam-stat.el to
> CRM114 Mailfilter and spam.el.
Great! Just so you know, I plan to add a better way to add backends
to spam.el; something like (spam-add-statistical-backend) for
instance. It's not going to be ready for a while, but it's been on
my mind.
> Now I just need to figure out how to configure spam.el to call
> mailfilter.crm --learnspam/--learnnonspam at the *appropriate*
> moments only.
Yes, this is very important and I've been trying to get the
gnus-registry to cooperate with spam.el on this.
> * Email comes in, and is split with spam-split. Spam goes into
> "nnml:spam", ham goes through my usual, other splitrules (bbdb
> and stuff).
OK.
> * If a spam is misclassified as ham, I would like to mark that
> message in some way, so that it is moved to nnml:spam and
> mailfilter.crm is called with --learnspam on it.
Set the spam-mark on the message. When you exit the group, the spam
message will be moved to the group named by spam-process-destination
(multiples are OK). Also, the exit spam processor will be invoked on
the spam message - so set your exit spam processor to crm114.
> * If a ham is misclassified as spam, and therefore is split into
> nnml:spam, I would like to move it to the correct group and have
> mailfilter.crm called on it with --learnnonspam.
Set a ham-mark (usually the tick mark) on the message. The ham
message, when you quit the group, will be moved to the
ham-process-destination (which can be multiple groups) and processed
with the ham exit processor.
If you set spam-mark-ham-unread-before-move-from-spam-group, the ham
will also be marked unread before it's moved out of the spam group.
> * I would like spam.el *never* to mark *any* message as expirable.
This is hardcoded right now in
spam-mark-spam-as-expired-and-move-routine:
(gnus-summary-mark-article article gnus-expirable-mark)
but it could be changed. Why would you NOT want to expire spam?
Ted
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-02 6:22 ` Kai Grossjohann
` (2 preceding siblings ...)
2004-04-02 16:10 ` Jody Klymak
@ 2004-04-02 17:07 ` Ted Zlatanov
3 siblings, 0 replies; 35+ messages in thread
From: Ted Zlatanov @ 2004-04-02 17:07 UTC (permalink / raw)
Cc: ding
On Fri, 02 Apr 2004, kai@emptyhost.emptydomain.de wrote:
> asjo@koldfront.dk (Adam Sjøgren) writes:
>
>> * If a spam is misclassified as ham, I would like to mark that
>> message in some way, so that it is moved to nnml:spam and
>> mailfilter.crm is called with --learnspam on it.
>
> I think you want to set spam-process-ham-in-spam-groups for this
> one.
Yes, sorry I forgot to mention that!
>> * If a ham is misclassified as spam, and therefore is split into
>> nnml:spam, I would like to move it to the correct group and have
>> mailfilter.crm called on it with --learnnonspam.
>
> But I can't find spam-process-spam-in-ham-groups. Hm.
I assumed when writing that part of spam.el that no one likes spam in
their ham, whereas some people like ham in the spam.
Ted (I am :)
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-02 16:06 ` Adam Sjøgren
@ 2004-04-02 17:14 ` Ted Zlatanov
2004-04-03 21:10 ` Adam Sjøgren
2004-04-03 13:29 ` Kai Grossjohann
1 sibling, 1 reply; 35+ messages in thread
From: Ted Zlatanov @ 2004-04-02 17:14 UTC (permalink / raw)
Cc: ding
On Fri, 02 Apr 2004, asjo@koldfront.dk wrote:
> This is very cool - it's beginning to make sense to me _and_ it
> almost works :-)
I'm very glad. CRM114 support is sure to be beneficial to other Gnus
users as well!
> I've only got the "ham-marked articles in nnml:spam should be moved
> as well as processed"-problem left.
See spam-ham-copy-or-move-routine for the exact mechanics of this.
I'm pretty sure something is misconfigured, because I move ham out of
my spam groups all the time. But I did not see something obviously
wrong in your setup.
> [1]: If the articles I mark as ham in nnml:spam could be 1) learned
> as ham by crm114 and then 2) respooled, that would be even
> better than 2) moved to nnml:normal.
Try putting 'respool in the ham-process-destination and see if it
works for you. spam-ham-copy-or-move-routine has the code used - it's
not a true respooling, so you may not be happy with it, but it tries
to simulate the respooling.
Ted
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-02 17:06 ` Ted Zlatanov
@ 2004-04-02 17:26 ` Adam Sjøgren
2004-04-02 17:44 ` Ted Zlatanov
0 siblings, 1 reply; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-02 17:26 UTC (permalink / raw)
On Fri, 02 Apr 2004 12:06:04 -0500, Ted wrote:
> On Thu, 01 Apr 2004, asjo@koldfront.dk wrote:
>> So, I've begun to take a stab at switcing from spam-stat.el to
>> CRM114 Mailfilter and spam.el.
> Great! Just so you know, I plan to add a better way to add backends
> to spam.el; something like (spam-add-statistical-backend) for
> instance. It's not going to be ready for a while, but it's been on
> my mind.
Good idea - I've basically copied/search/replaced the bogofilter-parts
for now.
>> * If a ham is misclassified as spam, and therefore is split into
>> nnml:spam, I would like to move it to the correct group and have
>> mailfilter.crm called on it with --learnnonspam.
> Set a ham-mark (usually the tick mark) on the message. The ham
> message, when you quit the group, will be moved to the
> ham-process-destination (which can be multiple groups) and processed
> with the ham exit processor.
This I can't get working (see my previous email with my complete setup
described).
>> * I would like spam.el *never* to mark *any* message as expirable.
> This is hardcoded right now in
> spam-mark-spam-as-expired-and-move-routine:
> (gnus-summary-mark-article article gnus-expirable-mark)
> but it could be changed. Why would you NOT want to expire spam?
(I worked around it by having my nnml:spam be unclassified :-))
I want to keep all email I get - if nothing else for statistical
purposes. (And if some filter turns out to be really, really good when
trained with a billion spam-messages, I'll be ready!)
Thanks for the reply, and spam.el :-),
Adam
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-02 17:26 ` Adam Sjøgren
@ 2004-04-02 17:44 ` Ted Zlatanov
2004-04-03 14:22 ` Adam Sjøgren
0 siblings, 1 reply; 35+ messages in thread
From: Ted Zlatanov @ 2004-04-02 17:44 UTC (permalink / raw)
Cc: ding
On Fri, 02 Apr 2004, asjo@koldfront.dk wrote:
On Fri, 02 Apr 2004 12:06:04 -0500, Ted wrote:
>> Set a ham-mark (usually the tick mark) on the message. The ham
>> message, when you quit the group, will be moved to the
>> ham-process-destination (which can be multiple groups) and
>> processed with the ham exit processor.
>
> This I can't get working (see my previous email with my complete
> setup described).
Like I said, it looks correct to me, can you trace the
spam-ham-copy-or-move-routine function?
>> Why would you NOT want to expire spam?
>
> I want to keep all email I get - if nothing else for statistical
> purposes. (And if some filter turns out to be really, really good
> when trained with a billion spam-messages, I'll be ready!)
Then you can just move all spam to a spam group and set it to never
run the expiry process, no? If you insist on keeping the spam in the
original group I guess I can make that mark configurable... It just
seems like very few people would find it useful, and spam.el has too
many options already.
I find little value in keeping old spam, personally. Old ham is very
valuable, but old spam tends to lose value with time.
Ted
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-02 16:04 ` Adam Sjøgren
@ 2004-04-03 13:28 ` Kai Grossjohann
2004-04-03 14:01 ` Adam Sjøgren
0 siblings, 1 reply; 35+ messages in thread
From: Kai Grossjohann @ 2004-04-03 13:28 UTC (permalink / raw)
asjo@koldfront.dk (Adam Sjøgren) writes:
> ; All my groups are unclassified, I should remove this one:
It seems nnml:spam is classificied as spam?
Kai
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-02 16:06 ` Adam Sjøgren
2004-04-02 17:14 ` Ted Zlatanov
@ 2004-04-03 13:29 ` Kai Grossjohann
2004-04-03 13:49 ` Adam Sjøgren
1 sibling, 1 reply; 35+ messages in thread
From: Kai Grossjohann @ 2004-04-03 13:29 UTC (permalink / raw)
asjo@koldfront.dk (Adam Sjøgren) writes:
> * I want all my groups to be unclassified - because I only want to
> train on errors (marking them by hand). I never want to train on
> properly classified ham nor spam.
I wonder what does the classification of a group have to do with
training?
Kai
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-03 13:29 ` Kai Grossjohann
@ 2004-04-03 13:49 ` Adam Sjøgren
2004-04-06 8:12 ` Kai Grossjohann
0 siblings, 1 reply; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-03 13:49 UTC (permalink / raw)
On Sat, 03 Apr 2004 15:29:03 +0200, Kai wrote:
> asjo@koldfront.dk (Adam Sjøgren) writes:
>> * I want all my groups to be unclassified - because I only want to
>> train on errors (marking them by hand). I never want to train on
>> properly classified ham nor spam.
> I wonder what does the classification of a group have to do with
> training?
A group classified as spam automatically gets unseen or unread
articles marked as spam:
Spam groups have the additional characteristic that, when entered,
any unseen or unread articles (depending on the
`spam-mark-only-unseen-as-spam' variable) will be marked as spam.
Thus, mail split into a spam group gets automatically marked as spam
when you enter the group.
- from "Spam ELisp Package Sequence of Events".
I only want to Train On Error - so I do not want spam that has been
recognized correctly as spam to be processed as spam (passed to crm114
for training).
So, if my spam-group as classified as spam, I have to remove all those
automatically set marks by hand.
Best regards,
Adam
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-03 13:28 ` Kai Grossjohann
@ 2004-04-03 14:01 ` Adam Sjøgren
2004-04-05 13:21 ` Ted Zlatanov
0 siblings, 1 reply; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-03 14:01 UTC (permalink / raw)
On Sat, 03 Apr 2004 15:28:02 +0200, Kai wrote:
> asjo@koldfront.dk (Adam Sjøgren) writes:
>> ; All my groups are unclassified, I should remove this one:
> It seems nnml:spam is classificied as spam?
No, I haven't set a 'spam-content' parameter on the group, and I
haven't set gnus-spam-newsgroup-contents nor spam-junk-mailgroups
either.
Hmm: It seems that spam-junk-mailgroups defaults to: ("spam"
"mail.junk" "poste.pourriel"), yet my nnml:spam group is unclassified
(which is what I want, but not what I expect from reading the docs on
classification:
Gnus learns from the spam you get. You have to collect your spam
in one or more spam groups, and set or customize the variable
`spam-junk-mailgroups' as appropriate. You can also declare groups
to contain spam by setting their group parameter `spam-contents' to
`gnus-group-spam-classification-spam', or by customizing the
corresponding variable `gnus-spam-newsgroup-contents'. The
`spam-contents' group parameter and the
`gnus-spam-newsgroup-contents' variable can also be used to declare
groups as _ham_ groups if you set their classification to
`gnus-group-spam-classification-ham'. If groups are not classified
by means of `spam-junk-mailgroups', `spam-contents', or
`gnus-spam-newsgroup-contents', they are considered _unclassified_.
All groups are unclassified by default.
- from "Spam ELisp Package Global Variables".)
My nnml:spam group really is unclassified:
(spam-group-spam-contents-p "nnml:spam") => nil
but:
(spam-group-spam-contents-p "spam") => ("spam" "mail.junk" "poste.pourriel")
So maybe that explains why my nnml:spam group is unclassied even
though I haven't set spam-junk-mailgroups to nil?
Best regards,
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-02 17:44 ` Ted Zlatanov
@ 2004-04-03 14:22 ` Adam Sjøgren
2004-04-03 14:24 ` Adam Sjøgren
0 siblings, 1 reply; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-03 14:22 UTC (permalink / raw)
On Fri, 02 Apr 2004 12:44:17 -0500, Ted wrote:
> On Fri, 02 Apr 2004, asjo@koldfront.dk wrote:
>> I want to keep all email I get - if nothing else for statistical
>> purposes. (And if some filter turns out to be really, really good
>> when trained with a billion spam-messages, I'll be ready!)
> Then you can just move all spam to a spam group and set it to never
> run the expiry process, no?
I could, but I'm weary of marking things for deletion and then
overriding the deletion with one setting.
(When I mess up that one setting later, I lose stuff - I've done
similar things by accidentally expiring newsspools in INN2 too many
times).
> If you insist on keeping the spam in the original group I guess I
> can make that mark configurable... It just seems like very few
> people would find it useful, and spam.el has too many options
> already.
I agree. Don't make it configurable on my account.
Best regards,
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-03 14:22 ` Adam Sjøgren
@ 2004-04-03 14:24 ` Adam Sjøgren
0 siblings, 0 replies; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-03 14:24 UTC (permalink / raw)
On Sat, 03 Apr 2004 16:22:11 +0200, Adam wrote:
> I could, but I'm weary of marking things for deletion and then
> overriding the deletion with one setting.
No, I'm not. I'm _wary_.
*blush*,
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-02 17:14 ` Ted Zlatanov
@ 2004-04-03 21:10 ` Adam Sjøgren
2004-04-03 21:19 ` Adam Sjøgren
0 siblings, 1 reply; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-03 21:10 UTC (permalink / raw)
On Fri, 02 Apr 2004 12:14:44 -0500, Ted wrote:
>> I've only got the "ham-marked articles in nnml:spam should be moved
>> as well as processed"-problem left.
> See spam-ham-copy-or-move-routine for the exact mechanics of this.
I just tried doing "debug-on-entry" on that fun; ticked a ham in
nnml:spam and exited. The function wasn't called.
I will try to investigate a little more...
Best regards,
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-03 21:10 ` Adam Sjøgren
@ 2004-04-03 21:19 ` Adam Sjøgren
2004-04-03 21:48 ` Adam Sjøgren
0 siblings, 1 reply; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-03 21:19 UTC (permalink / raw)
On Sat, 03 Apr 2004 23:10:46 +0200, Adam wrote:
> On Fri, 02 Apr 2004 12:14:44 -0500, Ted wrote:
>>> I've only got the "ham-marked articles in nnml:spam should be
>>> moved as well as processed"-problem left.
>> See spam-ham-copy-or-move-routine for the exact mechanics of this.
Okay, I found out why. In spam-summary-prepare-exit, almost at the
bottom, spam-ham-move-routine is called if and only if the current
group is classified as a spam-group.
This seems to contradict the documentation, where it says:
So, when you exit a group, the `spam-processors' are applied, if any
are set, and the processed mail is moved to the
`ham-process-destination' or the `spam-process-destination' depending
on the article's classification. If the `ham-process-destination' or
the `spam-process-destination', whichever is appropriate, are `nil',
the article is left in the current group.
- Spam ELisp Package Sequence of Events
The documentation doesn't mention the codes requirement that the group
be classified as spam for ham to be moved.
I think the code should change, what do you think?
Best regards,
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-03 21:19 ` Adam Sjøgren
@ 2004-04-03 21:48 ` Adam Sjøgren
2004-04-03 21:58 ` Adam Sjøgren
0 siblings, 1 reply; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-03 21:48 UTC (permalink / raw)
On Sat, 03 Apr 2004 23:19:22 +0200, Adam wrote:
> On Sat, 03 Apr 2004 23:10:46 +0200, Adam wrote:
>> On Fri, 02 Apr 2004 12:14:44 -0500, Ted wrote:
>>>> I've only got the "ham-marked articles in nnml:spam should be
>>>> moved as well as processed"-problem left.
>>> See spam-ham-copy-or-move-routine for the exact mechanics of this.
I'm stepping through it with edebug-defun, and I don't understand
quite how it all fits together. It looks like "todo" is first set to a
list of the article numbers to process, but then set to nil:
(defun spam-ham-copy-or-move-routine (copy groups)
(gnus-summary-kill-process-mark)
(let ((todo (spam-list-articles gnus-newsgroup-articles 'ham))
(backend-supports-deletions
(gnus-check-backend-function
'request-move-article gnus-newsgroup-name))
(respool-method (gnus-find-method-for-group gnus-newsgroup-name))
article mark todo deletep respool)
When I step through it "todo" is (43567) at first, but if I look at
todo later on, it's nil.
I'm wondering about the last quoted line above "article mark todo
deletep respool" - maybe todo shouldn't be there? Please advise.
(My lack of elisp grasp shows again :-))
Best regards,
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-03 21:48 ` Adam Sjøgren
@ 2004-04-03 21:58 ` Adam Sjøgren
0 siblings, 0 replies; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-03 21:58 UTC (permalink / raw)
[-- Attachment #1: Type: text/plain, Size: 479 bytes --]
On Sat, 03 Apr 2004 23:48:08 +0200, Adam wrote:
> I'm wondering about the last quoted line above "article mark todo
> deletep respool" - maybe todo shouldn't be there? Please advise.
> (My lack of elisp grasp shows again :-))
It works for me with the attached minimal patch.
Best regards,
Adam
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: move-ham-from-nonham-groups.patch --]
[-- Type: text/x-patch, Size: 981 bytes --]
--- spam.el 2 Apr 2004 19:09:16 -0000 7.27
+++ spam.el 3 Apr 2004 21:54:27 -0000
@@ -776,8 +776,8 @@
(spam-ham-copy-routine
(gnus-parameter-ham-process-destination gnus-newsgroup-name)))
- ;; now move all ham articles out of spam groups
- (when (spam-group-spam-contents-p gnus-newsgroup-name)
+ ;; now move all ham articles out of non-ham groups
+ (when (not (spam-group-ham-contents-p gnus-newsgroup-name))
(gnus-message 5 "Moving ham messages from spam group")
(spam-ham-move-routine
(gnus-parameter-ham-process-destination gnus-newsgroup-name))))
@@ -859,7 +859,7 @@
(gnus-check-backend-function
'request-move-article gnus-newsgroup-name))
(respool-method (gnus-find-method-for-group gnus-newsgroup-name))
- article mark todo deletep respool)
+ article mark deletep respool)
(when (member 'respool groups)
(setq respool t) ; boolean for later
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-01 20:54 CRM114 Mailfilter and spam.el Adam Sjøgren
2004-04-02 6:22 ` Kai Grossjohann
2004-04-02 17:06 ` Ted Zlatanov
@ 2004-04-03 23:59 ` Adam Sjøgren
2004-04-04 1:59 ` Jesper Harder
2 siblings, 1 reply; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-03 23:59 UTC (permalink / raw)
[-- Attachment #1: Type: text/plain, Size: 1048 bytes --]
On Thu, 01 Apr 2004 22:54:06 +0200, Adam wrote:
> So, I've begun to take a stab at switcing from spam-stat.el to
> CRM114 Mailfilter and spam.el.
Attached is a patch for spam.el that adds support for CRM114
Mailfilter (until the general external statistical processor interface
is designed/implemented).
It is basically the bogofilter stuff copied, search/replaced and
modified slightly.
(Included is also the two small changes in the patch in
<87oeq8g1up.fsf@virgil.koldfront.dk>).
To use it, I set this in my .gnus:
spam-use-crm114 t
spam-crm114-path "/usr/share/crm114/mailfilter.crm"
spam-crm114-database-directory "--fileprefix=/home/asjo/.crm114/"
As you can see from the comments, I couldn't figure out how to
automatically add '--fileprefix=' to the database directory when set,
so I took the easy, ugly way out.
Best regards,
Adam
--
"Mr. Cotton's... parrot. Same question." Adam Sjøgren
asjo@koldfront.dk
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: crm114-mailfilter.patch --]
[-- Type: text/x-patch, Size: 14514 bytes --]
*** spam.el 2 Apr 2004 19:09:16 -0000 7.27
--- spam.el 3 Apr 2004 23:55:02 -0000
***************
*** 263,268 ****
--- 263,273 ----
:type 'boolean
:group 'spam)
+ (defcustom spam-use-crm114 nil
+ "Whether CRM114 Mailfilter should be used by `spam-split'."
+ :type 'boolean
+ :group 'spam)
+
(defcustom spam-install-hooks (or
spam-use-dig
spam-use-gmane-xref
***************
*** 281,287 ****
spam-use-BBDB-exclusive
spam-use-ifile
spam-use-stat
! spam-use-spamoracle)
"Whether the spam hooks should be installed.
Default to t if one of the spam-use-* variables is set."
:group 'spam
--- 286,293 ----
spam-use-BBDB-exclusive
spam-use-ifile
spam-use-stat
! spam-use-spamoracle
! spam-use-crm114)
"Whether the spam hooks should be installed.
Default to t if one of the spam-use-* variables is set."
:group 'spam
***************
*** 515,520 ****
--- 521,573 ----
:type 'string
:group 'spam-spamassassin)
+ (defgroup spam-crm114 nil
+ "Spam CRM114 Mailfilter configuration."
+ :group 'spam)
+
+ (defcustom spam-crm114-path (executable-find "mailfilter.crm")
+ "File path of the CRM114 Mailfilter executable program."
+ :type '(choice (file :tag "Location of CRM114 Mailfilter")
+ (const :tag "CRM114 Mailfilter is not installed"))
+ :group 'spam-crm114)
+
+ (defcustom spam-crm114-header "X-CRM114-Status"
+ "The header that CRM114 Mailfilter inserts in messages."
+ :type 'string
+ :group 'spam-crm114)
+
+ (defcustom spam-crm114-spam-switch "--learnspam"
+ "The switch that CRM114 Mailfilter uses to register spam messages."
+ :type 'string
+ :group 'spam-crm114)
+
+ (defcustom spam-crm114-ham-switch "--learnnonspam"
+ "The switch that CRM114 Mailfilter uses to register ham messages."
+ :type 'string
+ :group 'spam-crm114)
+
+ (defcustom spam-crm114-spam-strong-switch "--UNKNOWN"
+ "The switch that CRM114 Mailfilter uses to unregister ham messages."
+ :type 'string
+ :group 'spam-crm114)
+
+ (defcustom spam-crm114-ham-strong-switch "--UNKNOWN"
+ "The switch that CRM114 Mailfilter uses to unregister spam messages."
+ :type 'string
+ :group 'spam-crm114)
+
+ (defcustom spam-crm114-positive-spam-header "^SPAM"
+ "The regex on `spam-crm114-header' for positive spam identification."
+ :type 'regexp
+ :group 'spam-crm114)
+
+ (defcustom spam-crm114-database-directory nil
+ "Directory path of the CRM114 Mailfilter databases."
+ :type '(choice (directory
+ :tag "Location of the CRM114 Mailfilter database directory")
+ (const :tag "Use the default"))
+ :group 'spam-crm114)
+
;;; Key bindings for spam control.
(gnus-define-keys gnus-summary-mode-map
***************
*** 605,610 ****
--- 658,664 ----
(gnus-group-spam-exit-processor-stat spam spam-use-stat)
(gnus-group-spam-exit-processor-spamoracle spam spam-use-spamoracle)
(gnus-group-spam-exit-processor-spamassassin spam spam-use-spamassassin)
+ (gnus-group-spam-exit-processor-crm114 spam spam-use-crm114)
(gnus-group-ham-exit-processor-ifile ham spam-use-ifile)
(gnus-group-ham-exit-processor-bogofilter ham spam-use-bogofilter)
(gnus-group-ham-exit-processor-stat ham spam-use-stat)
***************
*** 612,618 ****
(gnus-group-ham-exit-processor-BBDB ham spam-use-BBDB)
(gnus-group-ham-exit-processor-copy ham spam-use-ham-copy)
(gnus-group-ham-exit-processor-spamassassin ham spam-use-spamassassin)
! (gnus-group-ham-exit-processor-spamoracle ham spam-use-spamoracle))
"The `spam-list-of-processors' list.
This list contains pairs associating a ham/spam exit processor
variable with a classification and a spam-use-* variable.")
--- 666,673 ----
(gnus-group-ham-exit-processor-BBDB ham spam-use-BBDB)
(gnus-group-ham-exit-processor-copy ham spam-use-ham-copy)
(gnus-group-ham-exit-processor-spamassassin ham spam-use-spamassassin)
! (gnus-group-ham-exit-processor-spamoracle ham spam-use-spamoracle)
! (gnus-group-ham-exit-processor-crm114 ham spam-use-crm114))
"The `spam-list-of-processors' list.
This list contains pairs associating a ham/spam exit processor
variable with a classification and a spam-use-* variable.")
***************
*** 657,662 ****
--- 712,720 ----
(defun spam-group-spam-processor-spamoracle-p (group)
(spam-group-processor-p group 'gnus-group-spam-exit-processor-spamoracle))
+ (defun spam-group-spam-processor-crm114-p (group)
+ (spam-group-processor-p group 'gnus-group-spam-exit-processor-crm114))
+
(defun spam-group-ham-processor-bogofilter-p (group)
(spam-group-processor-p group 'gnus-group-ham-exit-processor-bogofilter))
***************
*** 678,683 ****
--- 736,744 ----
(defun spam-group-ham-processor-spamoracle-p (group)
(spam-group-processor-p group 'gnus-group-ham-exit-processor-spamoracle))
+ (defun spam-group-ham-processor-crm114-p (group)
+ (spam-group-processor-p group 'gnus-group-ham-exit-processor-crm114))
+
(defun spam-report-articles-gmane (n)
"Report the current message as spam.
Respects the process/prefix convention."
***************
*** 686,691 ****
--- 747,753 ----
(gnus-summary-remove-process-mark article)
(spam-report-gmane article)))
+ ; asjo: Perhaps add spam-crm114-score here? How?
(defun spam-generic-score ()
(interactive)
"Invoke whatever scoring method we can."
***************
*** 718,724 ****
(new-articles (spam-list-articles
gnus-newsgroup-articles
classification))
! (changed-articles (spam-set-difference new-articles old-articles)))
;; now that we have the changed articles, we go through the processors
(dolist (processor-param spam-list-of-processors)
(let ((processor (nth 0 processor-param))
--- 780,786 ----
(new-articles (spam-list-articles
gnus-newsgroup-articles
classification))
! (changed-articles (gnus-set-difference new-articles old-articles)))
;; now that we have the changed articles, we go through the processors
(dolist (processor-param spam-list-of-processors)
(let ((processor (nth 0 processor-param))
***************
*** 776,783 ****
(spam-ham-copy-routine
(gnus-parameter-ham-process-destination gnus-newsgroup-name)))
! ;; now move all ham articles out of spam groups
! (when (spam-group-spam-contents-p gnus-newsgroup-name)
(gnus-message 5 "Moving ham messages from spam group")
(spam-ham-move-routine
(gnus-parameter-ham-process-destination gnus-newsgroup-name))))
--- 838,845 ----
(spam-ham-copy-routine
(gnus-parameter-ham-process-destination gnus-newsgroup-name)))
! ;; now move all ham articles out of non-ham groups
! (when (not (spam-group-ham-contents-p gnus-newsgroup-name))
(gnus-message 5 "Moving ham messages from spam group")
(spam-ham-move-routine
(gnus-parameter-ham-process-destination gnus-newsgroup-name))))
***************
*** 785,804 ****
(setq spam-old-ham-articles nil)
(setq spam-old-spam-articles nil))
- (defun spam-set-difference (list1 list2)
- "Return a set difference of LIST1 and LIST2.
- When either list is nil, the other is returned."
- (if (and list1 list2)
- ;; we have two non-nil lists
- (progn
- (dolist (item (append list1 list2))
- (when (and (memq item list1) (memq item list2))
- (setq list1 (delq item list1))
- (setq list2 (delq item list2))))
- (append list1 list2))
- ;; if either of the lists was nil, return the other one
- (if list1 list1 list2)))
-
(defun spam-mark-junk-as-spam-routine ()
;; check the global list of group names spam-junk-mailgroups and the
;; group parameters
--- 847,852 ----
***************
*** 859,865 ****
(gnus-check-backend-function
'request-move-article gnus-newsgroup-name))
(respool-method (gnus-find-method-for-group gnus-newsgroup-name))
! article mark todo deletep respool)
(when (member 'respool groups)
(setq respool t) ; boolean for later
--- 907,913 ----
(gnus-check-backend-function
'request-move-article gnus-newsgroup-name))
(respool-method (gnus-find-method-for-group gnus-newsgroup-name))
! article mark deletep respool)
(when (member 'respool groups)
(setq respool t) ; boolean for later
***************
*** 1006,1012 ****
(spam-use-spamassassin-headers . spam-check-spamassassin-headers)
(spam-use-spamassassin . spam-check-spamassassin)
(spam-use-bogofilter-headers . spam-check-bogofilter-headers)
! (spam-use-bogofilter . spam-check-bogofilter))
"The spam-list-of-checks list contains pairs associating a
parameter variable with a spam checking function. If the
parameter variable is true, then the checking function is called,
--- 1054,1061 ----
(spam-use-spamassassin-headers . spam-check-spamassassin-headers)
(spam-use-spamassassin . spam-check-spamassassin)
(spam-use-bogofilter-headers . spam-check-bogofilter-headers)
! (spam-use-bogofilter . spam-check-bogofilter)
! (spam-use-crm114 . spam-check-crm114))
"The spam-list-of-checks list contains pairs associating a
parameter variable with a spam checking function. If the
parameter variable is true, then the checking function is called,
***************
*** 1028,1034 ****
spam-use-bogofilter
spam-use-blackholes
spam-use-spamassassin
! spam-use-spamoracle)
"The spam-list-of-statistical-checks list contains all the mail
splitters that need to have the full message body available.
Note that you should fetch extra headers if you don't like this,
--- 1077,1084 ----
spam-use-bogofilter
spam-use-blackholes
spam-use-spamassassin
! spam-use-spamoracle
! spam-use-crm114)
"The spam-list-of-statistical-checks list contains all the mail
splitters that need to have the full message body available.
Note that you should fetch extra headers if you don't like this,
***************
*** 1209,1215 ****
(spam-use-bogofilter spam-bogofilter-register-ham-routine
spam-bogofilter-register-spam-routine
spam-bogofilter-unregister-ham-routine
! spam-bogofilter-unregister-spam-routine))
"The spam-registration-functions list contains pairs
associating a parameter variable with the ham and spam
registration functions, and the ham and spam unregistration
--- 1259,1270 ----
(spam-use-bogofilter spam-bogofilter-register-ham-routine
spam-bogofilter-register-spam-routine
spam-bogofilter-unregister-ham-routine
! spam-bogofilter-unregister-spam-routine)
! (spam-use-crm114 spam-crm114-register-ham-routine
! spam-crm114-register-spam-routine
! ;; does CRM114 Mailfilter support unregistration?
! nil
! nil))
"The spam-registration-functions list contains pairs
associating a parameter variable with the ham and spam
registration functions, and the ham and spam unregistration
***************
*** 2162,2167 ****
--- 2217,2307 ----
(defun spam-spamassassin-unregister-ham-routine (articles)
(spam-spamassassin-register-with-sa-learn articles nil t))
+ \f
+ ;;;; CRM114 Mailfilter
+ (defun spam-check-crm114-headers (&optional score)
+ (let ((header (message-fetch-field spam-crm114-header))
+ (spam-split-group (if spam-split-symbolic-return
+ 'spam
+ spam-split-group)))
+ (when header ; return nil when no header
+ (if score ; scoring mode
+ (if (string-match "( pR: \\([0-9.-]+\\)" header)
+ (match-string 1 header)
+ "0")
+ ;; spam detection mode
+ (when (string-match spam-crm114-positive-spam-header
+ header)
+ spam-split-group)))))
+
+ ;; return something sensible if the score can't be determined
+ (defun spam-crm114-score ()
+ "Get the CRM114 Mailfilter pR"
+ (interactive)
+ (save-window-excursion
+ (gnus-summary-show-article t)
+ (set-buffer gnus-article-buffer)
+ (let ((score (or (spam-check-crm114-headers t)
+ (spam-check-crm114 t))))
+ (gnus-summary-show-article)
+ (message "pR: %s" score)
+ (or score "0"))))
+
+ (defun spam-check-crm114 (&optional score)
+ "Check the CRM114 Mailfilter backend for the classification of this message"
+ (let ((article-buffer-name (buffer-name))
+ (db spam-crm114-database-directory)
+ return)
+ (with-temp-buffer
+ (let ((temp-buffer-name (buffer-name)))
+ (save-excursion
+ (set-buffer article-buffer-name)
+ (apply 'call-process-region
+ (point-min) (point-max)
+ spam-crm114-path
+ nil temp-buffer-name nil
+ (if db `("", db) `("")))) ; asjo: I don't know how to do this right.
+ ; I'd like to add --fileprefix=db if
+ ; db is set.
+ (setq return (spam-check-crm114-headers score))))
+ return))
+
+ (defun spam-crm114-register-with-crm114 (articles
+ spam
+ &optional unregister)
+ "Register an article, given as a string, as spam or non-spam."
+ (dolist (article articles)
+ (let ((article-string (spam-get-article-as-string article))
+ (db spam-crm114-database-directory)
+ (switch (if unregister
+ (if spam
+ spam-crm114-spam-strong-switch
+ spam-crm114-ham-strong-switch)
+ (if spam
+ spam-crm114-spam-switch
+ spam-crm114-ham-switch))))
+ (when (stringp article-string)
+ (with-temp-buffer
+ (insert article-string)
+
+ (apply 'call-process-region
+ (point-min) (point-max)
+ spam-crm114-path
+ nil nil nil switch
+ (if db `("", db) `("")))))))) ; asjo: See above.
+
+ (defun spam-crm114-register-spam-routine (articles &optional unregister)
+ (spam-crm114-register-with-crm114 articles t unregister))
+
+ (defun spam-crm114-unregister-spam-routine (articles)
+ (spam-crm114-register-spam-routine articles t))
+
+ (defun spam-crm114-register-ham-routine (articles &optional unregister)
+ (spam-crm114-register-with-crm114 articles nil unregister))
+
+ (defun spam-crm114-unregister-ham-routine (articles)
+ (spam-crm114-register-ham-routine articles t))
+
\f
;;;; Hooks
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-03 23:59 ` Adam Sjøgren
@ 2004-04-04 1:59 ` Jesper Harder
2004-04-04 13:07 ` Adam Sjøgren
0 siblings, 1 reply; 35+ messages in thread
From: Jesper Harder @ 2004-04-04 1:59 UTC (permalink / raw)
asjo@koldfront.dk (Adam Sjøgren) writes:
> + (if db `("", db) `("")))) ; asjo: I don't know how to do this right.
> + ; I'd like to add --fileprefix=db if
> + ; db is set.
Do you mean:
(defun spam-check-crm114 (&optional score)
"Check the CRM114 Mailfilter back end for the classification of this message."
(let ((article-buffer-name (buffer-name))
(db spam-crm114-database-directory))
(with-temp-buffer
(let ((temp-buffer-name (buffer-name)))
(with-current-buffer article-buffer-name
(apply 'call-process-region
(point-min) (point-max)
spam-crm114-path
nil temp-buffer-name nil
(when db (list (concat "--fileprefix=" db)))))
(spam-check-crm114-headers score)))))
[untested!]
> + (defcustom spam-crm114-path (executable-find "mailfilter.crm")
> + "File path of the CRM114 Mailfilter executable program."
> + :type '(choice (file :tag "Location of CRM114 Mailfilter")
> + (const :tag "CRM114 Mailfilter is not installed"))
> + :group 'spam-crm114)
This isn't a very good name[1]. I think `spam-crm114-program' would
be clearer.
[1] From the GNU coding standards:
Please do not use the term ``pathname'' that is used in Unix
documentation; use ``file name'' (two words) instead. We use the
term ``path'' only for search paths, which are lists of directory
names.
--
Jesper Harder <http://purl.org/harder/>
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-04 1:59 ` Jesper Harder
@ 2004-04-04 13:07 ` Adam Sjøgren
2004-04-05 13:24 ` Ted Zlatanov
2004-04-06 21:36 ` Adam Sjøgren
0 siblings, 2 replies; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-04 13:07 UTC (permalink / raw)
On Sun, 04 Apr 2004 03:59:53 +0200, Jesper wrote:
> asjo@koldfront.dk (Adam Sjøgren) writes:
>> + (if db `("", db) `("")))) ; asjo: I don't know how to do this
[...]
> Do you mean:
[...]
> (when db (list (concat "--fileprefix=" db)))))
Yes, I think so. I didn't encounter the `-syntax before.
> [untested!]
I will test, thanks!
>> + (defcustom spam-crm114-path (executable-find "mailfilter.crm") +
>> "File path of the CRM114 Mailfilter executable program."
[...]
> This isn't a very good name[1]. I think `spam-crm114-program' would
> be clearer.
Agreed. It was copied from spam-bogofilter-path. For what it's worth,
there are also spam-ifile-path, spam-spamassasin-path and
spam-sa-learn-path there - so it is consistent with the naming in
spam.el.
Best regards,
--
"Some people like cupcakes better. Adam Sjøgren
I for one care less for them!" asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-03 14:01 ` Adam Sjøgren
@ 2004-04-05 13:21 ` Ted Zlatanov
0 siblings, 0 replies; 35+ messages in thread
From: Ted Zlatanov @ 2004-04-05 13:21 UTC (permalink / raw)
Cc: ding
On Sat, 03 Apr 2004, asjo@koldfront.dk wrote:
> Hmm: It seems that spam-junk-mailgroups defaults to: ("spam"
> "mail.junk" "poste.pourriel"), yet my nnml:spam group is
> unclassified (which is what I want, but not what I expect from
> reading the docs on classification:
The docs are not clear on when a regex is expected, and when an exact
match is expected. spam-junk-mailgroups expects an exact match.
Also, it's a variable I would like to deprecate, since its job is
done by other mechanisms already.
Ted
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-04 13:07 ` Adam Sjøgren
@ 2004-04-05 13:24 ` Ted Zlatanov
2004-04-05 15:50 ` Jesper Harder
2004-04-06 21:36 ` Adam Sjøgren
1 sibling, 1 reply; 35+ messages in thread
From: Ted Zlatanov @ 2004-04-05 13:24 UTC (permalink / raw)
Cc: ding
On Sun, 04 Apr 2004, asjo@koldfront.dk wrote:
On Sun, 04 Apr 2004 03:59:53 +0200, Jesper wrote:
>
>> This isn't a very good name[1]. I think `spam-crm114-program' would
>> be clearer.
>
> Agreed. It was copied from spam-bogofilter-path. For what it's
> worth, there are also spam-ifile-path, spam-spamassasin-path and
> spam-sa-learn-path there - so it is consistent with the naming in
> spam.el.
That's my fault. I can change the variable names but it will break
backwards compatibility. Any opinions?
(wishing for a :deprecated option in defcustom)
Thanks
Ted
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-05 13:24 ` Ted Zlatanov
@ 2004-04-05 15:50 ` Jesper Harder
0 siblings, 0 replies; 35+ messages in thread
From: Jesper Harder @ 2004-04-05 15:50 UTC (permalink / raw)
Ted Zlatanov <tzz@lifelogs.com> writes:
> On Sun, 04 Apr 2004, asjo@koldfront.dk wrote:
>
>> Agreed. It was copied from spam-bogofilter-path. For what it's
>> worth, there are also spam-ifile-path, spam-spamassasin-path and
>> spam-sa-learn-path there - so it is consistent with the naming in
>> spam.el.
>
> That's my fault. I can change the variable names but it will break
> backwards compatibility. Any opinions?
I suppose you could do something like this to keep compatibility:
(defvar spam-ifile-path nil)
(make-obsolete-variable 'spam-ifile-path 'spam-ifile-program)
(defcustom spam-ifile-program (or spam-ifile-path
(executable-find "ifile"))
`defvaralias' would be nicer, but it's not in Emacs 21.3.
--
Jesper Harder <http://purl.org/harder/>
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-03 13:49 ` Adam Sjøgren
@ 2004-04-06 8:12 ` Kai Grossjohann
2004-04-06 21:40 ` Adam Sjøgren
0 siblings, 1 reply; 35+ messages in thread
From: Kai Grossjohann @ 2004-04-06 8:12 UTC (permalink / raw)
asjo@koldfront.dk (Adam Sjøgren) writes:
> I only want to Train On Error - so I do not want spam that has been
> recognized correctly as spam to be processed as spam (passed to crm114
> for training).
>
> So, if my spam-group as classified as spam, I have to remove all those
> automatically set marks by hand.
You could also tell the nnml:spam group not to send spam to crm114,
but to just delete it. I think that works by changing the spam exit
processor group parameter.
I have these parameters on nnml:spam:
((spam-contents gnus-group-spam-classification-spam)
(spam-process
((spam spam-use-bogofilter)
(ham spam-use-bogofilter)))
(ham-process-destination . respool)
(ham-marks
(gnus-read-mark gnus-ticked-mark)))
which means that I want to run bogofilter on the stuff from that
group, which is the opposite of what you want.
Kai
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-04 13:07 ` Adam Sjøgren
2004-04-05 13:24 ` Ted Zlatanov
@ 2004-04-06 21:36 ` Adam Sjøgren
2004-05-20 18:39 ` Ted Zlatanov
1 sibling, 1 reply; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-06 21:36 UTC (permalink / raw)
[-- Attachment #1: Type: text/plain, Size: 371 bytes --]
On Sun, 04 Apr 2004 15:07:34 +0200, Adam wrote:
>> [untested!]
> I will test, thanks!
Works great, thanks again.
Attached is a patch with the changes you suggested incorporated.
Best regards,
--
"Do not feed the oysters under the clouds" Adam Sjøgren
asjo@koldfront.dk
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: crm114-mailfilter-2.patch --]
[-- Type: text/x-patch, Size: 10232 bytes --]
Index: spam.el
===================================================================
RCS file: /usr/local/cvsroot/gnus/lisp/spam.el,v
retrieving revision 7.27
diff -u -r7.27 spam.el
--- spam.el 2 Apr 2004 19:09:16 -0000 7.27
+++ spam.el 6 Apr 2004 21:34:42 -0000
@@ -263,6 +263,11 @@
:type 'boolean
:group 'spam)
+(defcustom spam-use-crm114 nil
+ "Whether CRM114 Mailfilter should be used by `spam-split'."
+ :type 'boolean
+ :group 'spam)
+
(defcustom spam-install-hooks (or
spam-use-dig
spam-use-gmane-xref
@@ -281,7 +286,8 @@
spam-use-BBDB-exclusive
spam-use-ifile
spam-use-stat
- spam-use-spamoracle)
+ spam-use-spamoracle
+ spam-use-crm114)
"Whether the spam hooks should be installed.
Default to t if one of the spam-use-* variables is set."
:group 'spam
@@ -515,6 +521,53 @@
:type 'string
:group 'spam-spamassassin)
+(defgroup spam-crm114 nil
+ "Spam CRM114 Mailfilter configuration."
+ :group 'spam)
+
+(defcustom spam-crm114-program (executable-find "mailfilter.crm")
+ "File path of the CRM114 Mailfilter executable program."
+ :type '(choice (file :tag "Location of CRM114 Mailfilter")
+ (const :tag "CRM114 Mailfilter is not installed"))
+ :group 'spam-crm114)
+
+(defcustom spam-crm114-header "X-CRM114-Status"
+ "The header that CRM114 Mailfilter inserts in messages."
+ :type 'string
+ :group 'spam-crm114)
+
+(defcustom spam-crm114-spam-switch "--learnspam"
+ "The switch that CRM114 Mailfilter uses to register spam messages."
+ :type 'string
+ :group 'spam-crm114)
+
+(defcustom spam-crm114-ham-switch "--learnnonspam"
+ "The switch that CRM114 Mailfilter uses to register ham messages."
+ :type 'string
+ :group 'spam-crm114)
+
+(defcustom spam-crm114-spam-strong-switch "--UNKNOWN"
+ "The switch that CRM114 Mailfilter uses to unregister ham messages."
+ :type 'string
+ :group 'spam-crm114)
+
+(defcustom spam-crm114-ham-strong-switch "--UNKNOWN"
+ "The switch that CRM114 Mailfilter uses to unregister spam messages."
+ :type 'string
+ :group 'spam-crm114)
+
+(defcustom spam-crm114-positive-spam-header "^SPAM"
+ "The regex on `spam-crm114-header' for positive spam identification."
+ :type 'regexp
+ :group 'spam-crm114)
+
+(defcustom spam-crm114-database-directory nil
+ "Directory path of the CRM114 Mailfilter databases."
+ :type '(choice (directory
+ :tag "Location of the CRM114 Mailfilter database directory")
+ (const :tag "Use the default"))
+ :group 'spam-crm114)
+
;;; Key bindings for spam control.
(gnus-define-keys gnus-summary-mode-map
@@ -605,6 +658,7 @@
(gnus-group-spam-exit-processor-stat spam spam-use-stat)
(gnus-group-spam-exit-processor-spamoracle spam spam-use-spamoracle)
(gnus-group-spam-exit-processor-spamassassin spam spam-use-spamassassin)
+ (gnus-group-spam-exit-processor-crm114 spam spam-use-crm114)
(gnus-group-ham-exit-processor-ifile ham spam-use-ifile)
(gnus-group-ham-exit-processor-bogofilter ham spam-use-bogofilter)
(gnus-group-ham-exit-processor-stat ham spam-use-stat)
@@ -612,7 +666,8 @@
(gnus-group-ham-exit-processor-BBDB ham spam-use-BBDB)
(gnus-group-ham-exit-processor-copy ham spam-use-ham-copy)
(gnus-group-ham-exit-processor-spamassassin ham spam-use-spamassassin)
- (gnus-group-ham-exit-processor-spamoracle ham spam-use-spamoracle))
+ (gnus-group-ham-exit-processor-spamoracle ham spam-use-spamoracle)
+ (gnus-group-ham-exit-processor-crm114 ham spam-use-crm114))
"The `spam-list-of-processors' list.
This list contains pairs associating a ham/spam exit processor
variable with a classification and a spam-use-* variable.")
@@ -657,6 +712,9 @@
(defun spam-group-spam-processor-spamoracle-p (group)
(spam-group-processor-p group 'gnus-group-spam-exit-processor-spamoracle))
+(defun spam-group-spam-processor-crm114-p (group)
+ (spam-group-processor-p group 'gnus-group-spam-exit-processor-crm114))
+
(defun spam-group-ham-processor-bogofilter-p (group)
(spam-group-processor-p group 'gnus-group-ham-exit-processor-bogofilter))
@@ -678,6 +736,9 @@
(defun spam-group-ham-processor-spamoracle-p (group)
(spam-group-processor-p group 'gnus-group-ham-exit-processor-spamoracle))
+(defun spam-group-ham-processor-crm114-p (group)
+ (spam-group-processor-p group 'gnus-group-ham-exit-processor-crm114))
+
(defun spam-report-articles-gmane (n)
"Report the current message as spam.
Respects the process/prefix convention."
@@ -686,6 +747,7 @@
(gnus-summary-remove-process-mark article)
(spam-report-gmane article)))
+; asjo: Perhaps add spam-crm114-score here? How?
(defun spam-generic-score ()
(interactive)
"Invoke whatever scoring method we can."
@@ -776,8 +838,8 @@
(spam-ham-copy-routine
(gnus-parameter-ham-process-destination gnus-newsgroup-name)))
- ;; now move all ham articles out of spam groups
- (when (spam-group-spam-contents-p gnus-newsgroup-name)
+ ;; now move all ham articles out of non-ham groups
+ (when (not (spam-group-ham-contents-p gnus-newsgroup-name))
(gnus-message 5 "Moving ham messages from spam group")
(spam-ham-move-routine
(gnus-parameter-ham-process-destination gnus-newsgroup-name))))
@@ -859,7 +921,7 @@
(gnus-check-backend-function
'request-move-article gnus-newsgroup-name))
(respool-method (gnus-find-method-for-group gnus-newsgroup-name))
- article mark todo deletep respool)
+ article mark deletep respool)
(when (member 'respool groups)
(setq respool t) ; boolean for later
@@ -1006,7 +1068,8 @@
(spam-use-spamassassin-headers . spam-check-spamassassin-headers)
(spam-use-spamassassin . spam-check-spamassassin)
(spam-use-bogofilter-headers . spam-check-bogofilter-headers)
- (spam-use-bogofilter . spam-check-bogofilter))
+ (spam-use-bogofilter . spam-check-bogofilter)
+ (spam-use-crm114 . spam-check-crm114))
"The spam-list-of-checks list contains pairs associating a
parameter variable with a spam checking function. If the
parameter variable is true, then the checking function is called,
@@ -1028,7 +1091,8 @@
spam-use-bogofilter
spam-use-blackholes
spam-use-spamassassin
- spam-use-spamoracle)
+ spam-use-spamoracle
+ spam-use-crm114)
"The spam-list-of-statistical-checks list contains all the mail
splitters that need to have the full message body available.
Note that you should fetch extra headers if you don't like this,
@@ -1209,7 +1273,12 @@
(spam-use-bogofilter spam-bogofilter-register-ham-routine
spam-bogofilter-register-spam-routine
spam-bogofilter-unregister-ham-routine
- spam-bogofilter-unregister-spam-routine))
+ spam-bogofilter-unregister-spam-routine)
+ (spam-use-crm114 spam-crm114-register-ham-routine
+ spam-crm114-register-spam-routine
+ ;; does CRM114 Mailfilter support unregistration?
+ nil
+ nil))
"The spam-registration-functions list contains pairs
associating a parameter variable with the ham and spam
registration functions, and the ham and spam unregistration
@@ -2162,6 +2231,89 @@
(defun spam-spamassassin-unregister-ham-routine (articles)
(spam-spamassassin-register-with-sa-learn articles nil t))
+\f
+;;;; CRM114 Mailfilter
+(defun spam-check-crm114-headers (&optional score)
+ (let ((header (message-fetch-field spam-crm114-header))
+ (spam-split-group (if spam-split-symbolic-return
+ 'spam
+ spam-split-group)))
+ (when header ; return nil when no header
+ (if score ; scoring mode
+ (if (string-match "( pR: \\([0-9.-]+\\)" header)
+ (match-string 1 header)
+ "0")
+ ;; spam detection mode
+ (when (string-match spam-crm114-positive-spam-header
+ header)
+ spam-split-group)))))
+
+;; return something sensible if the score can't be determined
+(defun spam-crm114-score ()
+ "Get the CRM114 Mailfilter pR"
+ (interactive)
+ (save-window-excursion
+ (gnus-summary-show-article t)
+ (set-buffer gnus-article-buffer)
+ (let ((score (or (spam-check-crm114-headers t)
+ (spam-check-crm114 t))))
+ (gnus-summary-show-article)
+ (message "pR: %s" score)
+ (or score "0"))))
+
+(defun spam-check-crm114 (&optional score)
+ "Check the CRM114 Mailfilter backend for the classification of this message"
+ (let ((article-buffer-name (buffer-name))
+ (db spam-crm114-database-directory)
+ return)
+ (with-temp-buffer
+ (let ((temp-buffer-name (buffer-name)))
+ (save-excursion
+ (set-buffer article-buffer-name)
+ (apply 'call-process-region
+ (point-min) (point-max)
+ spam-crm114-program
+ nil temp-buffer-name nil
+ (when db (list (concat "--fileprefix=" db)))))
+ (setq return (spam-check-crm114-headers score))))
+ return))
+
+(defun spam-crm114-register-with-crm114 (articles
+ spam
+ &optional unregister)
+ "Register an article, given as a string, as spam or non-spam."
+ (dolist (article articles)
+ (let ((article-string (spam-get-article-as-string article))
+ (db spam-crm114-database-directory)
+ (switch (if unregister
+ (if spam
+ spam-crm114-spam-strong-switch
+ spam-crm114-ham-strong-switch)
+ (if spam
+ spam-crm114-spam-switch
+ spam-crm114-ham-switch))))
+ (when (stringp article-string)
+ (with-temp-buffer
+ (insert article-string)
+
+ (apply 'call-process-region
+ (point-min) (point-max)
+ spam-crm114-program
+ nil nil nil
+ (when db (list switch (concat "--fileprefix=" db)))))))))
+
+(defun spam-crm114-register-spam-routine (articles &optional unregister)
+ (spam-crm114-register-with-crm114 articles t unregister))
+
+(defun spam-crm114-unregister-spam-routine (articles)
+ (spam-crm114-register-spam-routine articles t))
+
+(defun spam-crm114-register-ham-routine (articles &optional unregister)
+ (spam-crm114-register-with-crm114 articles nil unregister))
+
+(defun spam-crm114-unregister-ham-routine (articles)
+ (spam-crm114-register-ham-routine articles t))
+
\f
;;;; Hooks
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-06 8:12 ` Kai Grossjohann
@ 2004-04-06 21:40 ` Adam Sjøgren
0 siblings, 0 replies; 35+ messages in thread
From: Adam Sjøgren @ 2004-04-06 21:40 UTC (permalink / raw)
On Tue, 06 Apr 2004 10:12:57 +0200, Kai wrote:
> asjo@koldfront.dk (Adam Sjøgren) writes:
>> I only want to Train On Error - so I do not want spam that has been
>> recognized correctly as spam to be processed as spam (passed to
>> crm114 for training).
>> So, if my spam-group as classified as spam, I have to remove all
>> those automatically set marks by hand.
> You could also tell the nnml:spam group not to send spam to crm114,
> but to just delete it. I think that works by changing the spam exit
> processor group parameter.
Ah, yes.
Except that I'm weird in that I don't want my spam marked as
expirable/deleted.
Best regards,
Adam
--
"Uden Torleif var det blevet en calzone!" Adam Sjøgren
asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-04-06 21:36 ` Adam Sjøgren
@ 2004-05-20 18:39 ` Ted Zlatanov
2004-05-20 19:19 ` Adam Sjøgren
0 siblings, 1 reply; 35+ messages in thread
From: Ted Zlatanov @ 2004-05-20 18:39 UTC (permalink / raw)
Cc: ding
Adam,
I comitted your patch, assuming your papers are on file (it's been a
while since we discussed this). The two spam.el hunks below didn't
belong in the patch, I think, and I didn't consider them carefully so
let me know if I should. Also, I added a scoring function for CRM114
to spam-generic-score and fixed a few small problems.
Thanks
Ted
@@ -776,8 +838,8 @@
(spam-ham-copy-routine
(gnus-parameter-ham-process-destination gnus-newsgroup-name)))
- ;; now move all ham articles out of spam groups
- (when (spam-group-spam-contents-p gnus-newsgroup-name)
+ ;; now move all ham articles out of non-ham groups
+ (when (not (spam-group-ham-contents-p gnus-newsgroup-name))
(gnus-message 5 "Moving ham messages from spam group")
(spam-ham-move-routine
(gnus-parameter-ham-process-destination gnus-newsgroup-name))))
@@ -859,7 +921,7 @@
(gnus-check-backend-function
'request-move-article gnus-newsgroup-name))
(respool-method (gnus-find-method-for-group gnus-newsgroup-name))
- article mark todo deletep respool)
+ article mark deletep respool)
(when (member 'respool groups)
(setq respool t) ; boolean for later
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-05-20 18:39 ` Ted Zlatanov
@ 2004-05-20 19:19 ` Adam Sjøgren
2004-05-22 23:44 ` Lars Magne Ingebrigtsen
2004-05-26 16:23 ` Ted Zlatanov
0 siblings, 2 replies; 35+ messages in thread
From: Adam Sjøgren @ 2004-05-20 19:19 UTC (permalink / raw)
On 20 May 2004 14:39:25 -0400, Ted wrote:
> Adam, I comitted your patch, assuming your papers are on file (it's
> been a while since we discussed this).
Alas, they're not, yet. I've done almost nothing in elisp before, and
only sent an email to FSF a couple of days ago when Lars posted the
procedure publicly.
(I think the FSF is hiding how to do this quite aptly; I did go and
look for it at their website a while back without finding any
instructions. Maybe I was just being stupid.)
> The two spam.el hunks below didn't belong in the patch, I think, and
> I didn't consider them carefully so let me know if I should.
Please do consider them - or just say why you think they shouldn't go
in.
The first patch changes the behaviour as the comment change says -
instead of only moving ham articles out of spam-groups, it moves ham
articles out of non-ham-groups.
This makes sense in my setup, because I do not want to declare my
nnml:spam-group as spam (I do not want spam marked as expired
automatically), so I leave it as unclassified (so it's non-ham, but
not spam).
(Oh, the following call to gnus-message should be modified as well, to
reflect the change, if you deem it acceptable).
Would it break anyone elses setup?
When I mark an article as ham in an unclassified group, what would I
be trying to tell Gnus/spam.el if not "please move it to a/the
ham-group"?
(This is not a retorical question; I know people have very different
ideas of how they want to handle their mix of ham'n'spam.)
@@ -776,8 +838,8 @@
(spam-ham-copy-routine
(gnus-parameter-ham-process-destination gnus-newsgroup-name)))
- ;; now move all ham articles out of spam groups
- (when (spam-group-spam-contents-p gnus-newsgroup-name)
+ ;; now move all ham articles out of non-ham groups
+ (when (not (spam-group-ham-contents-p gnus-newsgroup-name))
(gnus-message 5 "Moving ham messages from spam group")
(spam-ham-move-routine
(gnus-parameter-ham-process-destination gnus-newsgroup-name))))
spam.el doesn't work for me without the second, following, patch,
which I basically thought was a typo-correction; alas I'm only
starting to learn elisp, so I may very well be wrong.
@@ -859,7 +921,7 @@
(gnus-check-backend-function
'request-move-article gnus-newsgroup-name))
(respool-method (gnus-find-method-for-group gnus-newsgroup-name))
- article mark todo deletep respool)
+ article mark deletep respool)
(when (member 'respool groups)
(setq respool t) ; boolean for later
> Also, I added a scoring function for CRM114 to spam-generic-score
> and fixed a few small problems.
Cool!
Best regards,
--
"Some people like cupcakes better. Adam Sjøgren
I for one care less for them!" asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-05-20 19:19 ` Adam Sjøgren
@ 2004-05-22 23:44 ` Lars Magne Ingebrigtsen
2004-05-23 13:44 ` Adam Sjøgren
2004-05-26 16:23 ` Ted Zlatanov
1 sibling, 1 reply; 35+ messages in thread
From: Lars Magne Ingebrigtsen @ 2004-05-22 23:44 UTC (permalink / raw)
asjo@koldfront.dk (Adam Sjøgren) writes:
> (I think the FSF is hiding how to do this quite aptly; I did go and
> look for it at their website a while back without finding any
> instructions. Maybe I was just being stupid.)
I think it's policy -- the copyright assignment request is supposed
to be sent out by maintainers to contributors when someone
contributes, and not the other way around. For some reason or
other. :-)
--
(domestic pets only, the antidote for overdose, milk.)
larsi@gnus.org * Lars Magne Ingebrigtsen
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-05-22 23:44 ` Lars Magne Ingebrigtsen
@ 2004-05-23 13:44 ` Adam Sjøgren
0 siblings, 0 replies; 35+ messages in thread
From: Adam Sjøgren @ 2004-05-23 13:44 UTC (permalink / raw)
On Sun, 23 May 2004 01:44:03 +0200, Lars wrote:
> I think it's policy -- the copyright assignment request is supposed
> to be sent out by maintainers to contributors when someone
> contributes, and not the other way around. For some reason or other.
> :-)
Ah, I see. I guess it makes sense, although it is a little
counter-intuitive for people of a slightly more timid disposition.
Best regards,
--
"Stop blowing holes in my ship!" Adam Sjøgren
asjo@koldfront.dk
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-05-20 19:19 ` Adam Sjøgren
2004-05-22 23:44 ` Lars Magne Ingebrigtsen
@ 2004-05-26 16:23 ` Ted Zlatanov
2004-05-26 20:30 ` Adam Sjøgren
1 sibling, 1 reply; 35+ messages in thread
From: Ted Zlatanov @ 2004-05-26 16:23 UTC (permalink / raw)
Cc: ding
On Thu, 20 May 2004, asjo@koldfront.dk wrote:
> The first patch changes the behaviour as the comment change says -
> instead of only moving ham articles out of spam-groups, it moves ham
> articles out of non-ham-groups.
>
> This makes sense in my setup, because I do not want to declare my
> nnml:spam-group as spam (I do not want spam marked as expired
> automatically), so I leave it as unclassified (so it's non-ham, but
> not spam).
I think, as I mentioned, that spam-process-ham-in-nonham-groups
is the solution to your request.
> spam.el doesn't work for me without the second, following, patch,
> which I basically thought was a typo-correction; alas I'm only
> starting to learn elisp, so I may very well be wrong.
You're right, and I didn't catch it earlier. Looks like Emacs
Lisp allows you to declare a variable twice in the same let
binding. Weird. Fixed in CVS, thanks!
Ted
^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: CRM114 Mailfilter and spam.el
2004-05-26 16:23 ` Ted Zlatanov
@ 2004-05-26 20:30 ` Adam Sjøgren
0 siblings, 0 replies; 35+ messages in thread
From: Adam Sjøgren @ 2004-05-26 20:30 UTC (permalink / raw)
On 26 May 2004 12:23:18 -0400, Ted wrote:
> I think, as I mentioned, that spam-process-ham-in-nonham-groups is
> the solution to your request.
It is, thanks!
>> spam.el doesn't work for me without the second, following, patch,
>> which I basically thought was a typo-correction; alas I'm only
>> starting to learn elisp, so I may very well be wrong.
> You're right, and I didn't catch it earlier. Looks like Emacs Lisp
> allows you to declare a variable twice in the same let binding.
> Weird. Fixed in CVS, thanks!
Cool.
Best regards,
--
"I've used about 20 operating systems in my career and Adam Sjøgren
written two. I've programmed in over 40 languages. asjo@koldfront.dk
I've tasted about 75 flavors of ice cream. Limiting me
to one of each would be a pity."
^ permalink raw reply [flat|nested] 35+ messages in thread
end of thread, other threads:[~2004-05-26 20:30 UTC | newest]
Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-04-01 20:54 CRM114 Mailfilter and spam.el Adam Sjøgren
2004-04-02 6:22 ` Kai Grossjohann
2004-04-02 16:04 ` Adam Sjøgren
2004-04-03 13:28 ` Kai Grossjohann
2004-04-03 14:01 ` Adam Sjøgren
2004-04-05 13:21 ` Ted Zlatanov
2004-04-02 16:06 ` Adam Sjøgren
2004-04-02 17:14 ` Ted Zlatanov
2004-04-03 21:10 ` Adam Sjøgren
2004-04-03 21:19 ` Adam Sjøgren
2004-04-03 21:48 ` Adam Sjøgren
2004-04-03 21:58 ` Adam Sjøgren
2004-04-03 13:29 ` Kai Grossjohann
2004-04-03 13:49 ` Adam Sjøgren
2004-04-06 8:12 ` Kai Grossjohann
2004-04-06 21:40 ` Adam Sjøgren
2004-04-02 16:10 ` Jody Klymak
2004-04-02 17:07 ` Ted Zlatanov
2004-04-02 17:06 ` Ted Zlatanov
2004-04-02 17:26 ` Adam Sjøgren
2004-04-02 17:44 ` Ted Zlatanov
2004-04-03 14:22 ` Adam Sjøgren
2004-04-03 14:24 ` Adam Sjøgren
2004-04-03 23:59 ` Adam Sjøgren
2004-04-04 1:59 ` Jesper Harder
2004-04-04 13:07 ` Adam Sjøgren
2004-04-05 13:24 ` Ted Zlatanov
2004-04-05 15:50 ` Jesper Harder
2004-04-06 21:36 ` Adam Sjøgren
2004-05-20 18:39 ` Ted Zlatanov
2004-05-20 19:19 ` Adam Sjøgren
2004-05-22 23:44 ` Lars Magne Ingebrigtsen
2004-05-23 13:44 ` Adam Sjøgren
2004-05-26 16:23 ` Ted Zlatanov
2004-05-26 20:30 ` Adam Sjøgren
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).