Kill Bush… Aw, it’s only a game

Since ridding the world of this madman would cost you your liberty and most probably your life, you can, instead, act out your fantasies with the Anti-Bush On-line Video Game.

Posted in Politics, USA | 7 Comments

Flower power

Sarah has put up photos of our recent trip back home to The Netherlands. She’s also included some photos taken in London, where she was on business for a few days leading up to my arrival in Amsterdam.

If you like flowers, you should be particularly sure to look at our Keukenhof gallery. The Keukenhof is a large botanical garden full of beautiful tulips and hundreds of other types of flowers. It’s located in Lisse, about 15km from Leiden.

The Dutch spring really shows off the flowers in all of their natural glory and the photos turned out really well, thanks to the vivid colour pallette option of our digital camera. This is the first time we’ve used it.

Posted in Life | Leave a comment

System upgrade

After upgrading my laptop to Fedora Core 2 earlier this week, it was the turn of my workstation, file server and mail/web server today. The dirty deed is now complete and all of my systems are now finally running a 2.6.x kernel.

When I’ve got a bit more time, I’ll be looking at the possibility of running SELinux on the servers.

Posted in System Administration | Leave a comment

Accounting for spam

Since I wrote about my new anti-spam measures, the spam has been furiously banging up against my virtual front door.

Talking to a colleague on IRC tonight, I was inspired to write a quick Ruby script to report the progress since last Sunday:

#!/usr/bin/ruby -w
 
reject = Hash.new( 0 )
 
while line = ARGF.gets
  case line
  when /un(verified|deliverable) address/
    next
  when /554 Service unavailable.* (blocked using .+?);/
    reject[$1] +=1
  when /NOQUEUE: reject:(?:.+?:.+?: )(.+?)[;:] from/
    reject[$1] +=1
  when /reject: header .+helo=.+?: (.+)$/
    reject[$1] +=1
  end
end
 
total = 0
reject = reject.to_a.sort { |a,b| a[1] <=> b[1] }
reject.each do |x|
  printf( "%-74s%5d\n", x[0], x[1] )
  total += x[1]
end
 
printf( "\n%-74s%5d\n", "Total blocked:", total )

Here are the results:

Bad attachment with file name extension: bat 1
Bad attachment with file name extension: cpl 1
Sender address rejected: need fully-qualified address 2
Sender address rejected: Improper use of SMTP command pipelining 3
Bad attachment with file name extension: exe 5
Bad attachment with file name extension: com 8
Relay access denied 9
Bad attachment with file name extension: scr 12
Bad attachment with file name extension: pif 25
Helo command rejected: Improper use of SMTP command pipelining 27
blocked using sbl-xbl.spamhaus.org 30
Helo command rejected: Host not found 58
Helo command rejected: need fully-qualified hostname 124
blocked using dnsbl.sorbs.net 155
blocked using bl.spamcop.net 290
Sender address rejected: Domain not found 1619
Recipient address rejected: User unknown in local recipient table 6659
Total blocked 9028

All in all, I’m very pleased. Very little spam is making it through now. For the spam that does make it into the system, I also upgraded to a recent CVS snapshot of SpamAssassin this afternoon, so most of it still gets zapped before making it to the in-box of any of my users.

Posted in Ruby, This Site | Leave a comment

Taken for granted

It’s so easy to take the good things in life for granted.

Now, I’m not saying that my job is perfect (shit; no job is perfect), but how many companies will bring in a team of professional mechanics to fix your bike, feed you a barbecued lunch outdoors in the sun, and hire a band to play chilled out ambient music for you while you eat?

And how many companies will do all of that for you on the same day?

The old folk like to tell us that we young folk don’t know we’re born. Although I’m not exactly young any more, I think they’re right. In so many ways, we’ve never had it so good. Sometimes it’s hard to remember that this is a job, not just some place to hang out, eat and chat with friends.

Posted in Google | 1 Comment