DSPAM case sensitivity

I use DSPAM to handle my spam checking and have been quite happy with it as it normally delivers >99.9% hit rate.

In the last few weeks the amount of spam in my INBOX had been getting progressively worse to the point where I noticed no spam whatsoever was making its way into my spam folder.

Looking through my logs I eventually found the following

May 10 10:03:03 fozzie dspam[30287]: Unable to find a valid signature. Aborting.
May 10 10:03:03 fozzie dspam[30287]: process_message returned error -5.  dropping message.

I process my spam by using a mutt macro which bounces emails to johnf-spam at inodes dot org. This then passes the email to DSPAM which reclassifies it. It does this by looking at a header it added to the email.

X-DSPAM-Signature: 464400d0223642194712985

However these were appearing in my INBOX as

X-Dspam-Signature: 464400d0223642194712985

I use procmail and a perl script to pre-process some of my email and it uses Mail::Internet which in turn uses Mail::Header. It bestows this piece of wisdom upon the world.

# attempt to change the case of a tag to that required by RFC822. That
# being all characters are lowercase except the first of each word. Also
# if the word is an `acronym' then all characters are uppercase. We decide
# a word is an acronym if it does not contain a vowel.

sub _tag_case

Now I can’t see where in RFC822 it specifies this but in section B.2 it does specify

Upper and lower case are not dis-tinguished when comparing field-names.

So on that basis I choose to blame DSPAM and applied the following diff

diff -ur dspam-3.8.0.orig/src/dspam.c dspam-3.8.0/src/dspam.c
--- dspam-3.8.0.orig/src/dspam.c        2006-12-13 02:33:45.000000000 +1100
+++ dspam-3.8.0/src/dspam.c     2007-05-11 16:25:11.000000000 +1000
@@ -2165,7 +2165,7 @@
           while(node_header != NULL) {
             head = (ds_header_t) node_header->ptr;
             if (head->heading && 
-                !strcmp(head->heading, "X-DSPAM-Signature")) {
+                !strcasecmp(head->heading, "X-DSPAM-Signature")) {
               if (!strncmp(head->data, SIGNATURE_BEGIN, 

Now to work out the best way to push that upstream.


We’ve just hit 250 registrations for linux.conf.au, only 5 days to go before early bird registrations close.

So here are some interesting stats of the attendee breakdown so far:

By Country

Country Number
Brazil 1
Canada 1
France 1
Ireland 1
Liberia 1
Nigeria 1
China 1
Singapore 1
Spain 1
UK 1
Croatia 4
Germany 4
Japan 4
Romania 9
New Zealand 13
USA 18
Australia 188

Australia by state

State Number
NT 1
WA 19
QLD 20
SA 20
ACT 23
VIC 24
NSW 77

LCA2007 Paper Review

The seven review team met all day Saturday to work out which of the almost 300 submissions were going to make it into the conference.

I had created some statistics based on the reviews the team had performed, this helped the team easily pick the coolest papers and the mildly cool for inclusion and exclusion. Which then left the difficult job of sorting through the ones in the middle.

The hardest job was rejecting papers, even though the team had to pick 80 out of 300 papers I can easily say that the quality of what was rejected was exceptional. They would almost all be included if we could hold a 3 week conference.

Here is some info from those on the review team on how to make sure your paper is near the top of the list.

Of course what would statistics be without pretty graphs, I’ve posted daily and cumulative submissions graphs. As expected this proves that people always leave things till the last minute, and sometime a little bit later than that đŸ™‚

One enterprising individual even tried to submit something yesterday!


linux.conf.au 2007 Technical Guru

Most people probably aren’t aware that a few months ago I became Head Technical Guru as part of the seven team organising linux.conf.au 2007. All blame for this shall lie solely with Pia.

<Pia> Hey John are you still interested in helping out with the conference?
<John> Yeah sure
<Pia> Cool. Can you come to a meeting tonight at my place?
<John@meeting> Pia, why are you writing my name down on the seven page?

The next months are going to be pretty interesting. Those who know me well will know it’s not like I had much else going on :).

Basically it’s my job to organise all the technical infrastructure and make sure it works, this includes

  • Internet Connectivity
  • Wireless Access
  • AV Team – Streaming, Publishing of videos etc (This team is being run by Silvia)
  • Random other servers for things like the website, IRC, portal etc

In the next few weeks I’ll be gearing up towards a much clearer plan as to what actually needs doing and then I’ll be looking for volunteers so if you are interested in helping out whether it be during the conference setting things up or during the lead up hacking on code to make all the infrastructure work then please let me know.