Archive for June, 2009
SpamAssassin
by Nick on Jun.24, 2009, under E-Mail, News
Spam is the bane of all email servers and services. As I wrote in my email entry, I use Maia, which is a frontend to Amavis, which is a daemon that ties various anti-spam and anti-virus programs together. When I originally set things up, I followed a guide on NEOHAPSIS. That guide was written in Russian, but had English examples. Basically, you set up Amavis, have Postfix route mail to it (it acts as an ESMTP server) and Amavis takes care of the rest. My anti-virus program is ClamAV. It works, it’s fairly painless, and simple. My anti-spam choice, SpamAssassin, was not quite as easy.
SpamAssassin is basically a Perl script, maintained by the Apache group, that incorporates various config scripts to filter out spam. There are several modules that you can incorporate, including DKIM checking, URI scanning and, RBL incorporation. You can customize your scoring of each component, making it very flexible. The default modules include SA-Blacklist, a massive blacklist that should not be used. Ever. Disable it, otherwise you will monopolize the CPU on your server. Maia integrates with SpamAssassin very well, allowing for quarantining, with digests and reminders, statistics on each rule for customization, and end user blacklisting/whitelisting, setting up honeypots, among other options. It’s very useful, effective, and not prone to false positives.
VMWare
by Nick on Jun.12, 2009, under Hardware, News
One of Chronophage.net’s servers is virtualized inside of a Dell 1500. It runs like a champ. I think this is the future of hosting, especially with power and cooling costs going up. I should work on my VTSP now. ![]()
Ares.chronophage.net used to be my experimental FreeBSD box. It ran on a T2100 dual-core consumer system with 1.5 gigs of ram and an 80GB harddrive (a freebie that Dell sent to one of my company’s customers, ESATA) The system was slow, unreliable, and prone to crashing. With VMWare, things are scaling really well. The tools were in the ports tree, and it was painless to install. The system converter worked better than expected (since FreeBSD is not officially supported) All in all, this is a successful experiment.
What happens when I program “On the Fly”
by Nick on Jun.11, 2009, under News, Software
So I needed a quick script to query a billing database for DSL users. The user names, of course where horribly inconsistent. I had to use a program that executed a query of the database, as I didn’t have access to the actual database. Oh, and I didn’t know any Perl at the time.
Now, I have a bad habit when writing code for myself, to use ambiguous variable names, and strange loop structures, and no comments. See if you can figure out what’s going on.
Oh, I vow never to write code like this again. ![]()
#!/bin/bash
echo Audit run on $( date )
echo Audit run on $( date ) > notinbilldb.txt
echo
echo
for i in $( cat radiusdump.txt | awk '{print $1}' ); do
t2=""
t2=$( echo $i | sed -e 's/\@.*$//;' | cut -f1 -d . )
t1=$( billdb -s $t2 | grep DSL | awk '{print $3}' | sed -e 's/\.dsl//; s/^dsl//;s/\@.*$//;' )
t3="0"
t4="0"
t5="0"
t6=""
if [ "$t1" = "" ]; then
t1=$( billdb -s $i | grep Email | awk '{print $3}' | sed -e 's/\@.*$//;' )
t5="1"
fi
if [ "$t1" = "" ]; then
echo $i is not in billdb.
echo $i is not in billdb. >> notinbilldb.txt
t4="1"
fi
p=$( echo $i | sed -e 's/\.dsl//; s/^dsl//;s/\@.*$//;' )
k=""
for k in $( echo $t1 ); do
if [ "$p" = "$k" ]; then
if [ "$t5" = "1" ]; then
t6=", but only in email"
fi
echo $i matched $k in billdb$t6.
t3="1"
fi
done
if [ "$t4" = "$t3" ]; then
echo $i is really not in billdb but was close to $t1.
echo $i is really not in billdb but was close to $t1. >> notinbilldb.txt
fi
echo --------------------------------
echo
done
echo
echo Audit completed $( date )
echosudo -u
by Nick on Jun.11, 2009, under News, UNIX 101
Sometimes, especially on X.X upgrades, WordPress Automatic Update does not work.
Oh, it claims to work. But it doesn’t. So you have to upgrade manually. Now, a manual upgrade is trivial in WordPress. Just download the zip (or gzipped tar,) unpack it, copy the files, go to the admin interface, and click two buttons.
But what if you have multiple users, who have WordPress in their home directories? Use sudo!
Sudo is a tool that administrators can use to execute commands as root. However, you can also the -u parameter to execute a command as another user.
So, if I put WordPress in a neutral folder, then I can simply do this:
>sudo -u username cp -r wordpress/* /home/username/www/example.com/
Voila! Nice and easy.
I should script this…

