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.
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.
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.
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.
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.