Twitter Weekly Updates for 2009-10-18

  • Wondering what it means if a shop window mannequin has plasters on her wrists…. #
  • Perhaps I now know what it's like for my wife when I go mountain biking or something for a day and she's left stranded in some strange town. #
  • Final day of le leche league conference (breast feeding etc etc). Here's to hoping a day in soft play doesn't kill my brain #
  • Just saw a van take out a cyclist. He seems alright thankfully. Bike + windscreen didn't fare too well though. #
  • I wonder how long a ball pit and garage will keep rowan occupied? #
  • At le leche league conference #lll #alfreton #breastfeeding #
  • Discovers /* lol version of getHasProfile() */ public function canHasProfile() { return $this->getHasProfile() } #php #lolcat #codehumor #
  • I'm fleeing London…. So long suckers. Till wednesday next week anyway…. #
  • First BBC php zend framework course nearly over. Stupid Internet connection causing grief :/ #
  • I have difficulty in believing m&s's green plan b crap when it feels like I'm roasted by a heater above the door on entry. #
  • Train (hopefully) hurtling towards London; three days of tension await. GnR's Estranged seems to be helping. #ihatemonday #
  • RT @codinghorror Some people, when confronted with a discussion problem, think "I know, I'll use threads!" Now they have two problems. #
  • Looking forward to sleep…. #

Twitter Weekly Updates for 2009-10-11

  • Kidderminster's sainsburys customers at least don't look like zombies…. Manchester's asda ones definately did yesterday #
  • Perhaps it's Related to my coke (a-cola) binge? #
  • What maniac has replaced my bladder with a womans???? #
  • Listening to v loud music to stay awake while driving :-/ #
  • Toddler vomit… Hmm #
  • guess i won't be making the half marathon tomorrow thanks to my evil sister in law tempting me with beer and keeping me up till midnight :-/ #
  • Here's hoping we miss the rioters. #phpnw09 #Manchester #
  • Hmm expression web 3 superpreview looks perhaps useful. #phpnw09 wish they'd talked about this before the end #Microsoft #browser #ie #
  • Wish this Microsoft sales pitch would end. At least the ms presenter hates ie6. #phpnw09 #
  • "We never turn people away unless it's a retarded idea." Thx @scottmac. #phpnw09 (re contributions to etc) #
  • Plenty of jokes from @scottmac (ming(e)) etc. Good fun so far! #phpnw09 in reply to scottmac #
  • Xdebug talk excellent. Thanks @derickr #phpnw09 #
  • RT @skoop the #phpnw09 lunch was made of pure WIN! awesome work @phpnw ditto. Great food. #
  • Scaling web pages … Good start .. #phpnw09 #
  • Don't all developers use a vcs now ? #phpnw09 #
  • Excellent first talk – thanks @kevlinhenney #phpnw09 #
  • The moral dilemma of eating baby killing nestle chocolate …. When given it in a goodie bag. Hmm #phpnw09 #
  • The journey starts #phpnw09 #
  • is lusting after a cup of hot chocolate ( it feels cold today ) #
  • RT @sil Oh. My. God. #fb (the pain!) #
  • Cake Friday …. Again. #
  • Toddler slept well (through to 8pm to 6:30 ish) …. Coincidence that I put him to sleep ? #
  • Clearly I'm showing my age by listening to proper guns and roses and it reminding me of school 14 years ago #
  • Death^h^h fun fair slowly arriving in bromsgrove #
  • The sound of rain seems so almost strange. It's been dry for ages it seems. #
  • Tonight's experiment – late dinner and toddler appetite – is later better? #
  • Clearly not moving any time soon. Everyone walking around on the road or going for a wee. Should've left the road 400metres back at banbury #
  • Stupid m40 northbound (after babury) brokeness. #


Rowan’s talking is finally progressing quite well – I think he’s finally figured out that he has to talk to us if he wants “stuff” (more please; please more) and he’s beginning to use more syllabals and string words together (piece of toast, hello daddy, bye daddy). There are loads of sounds he can’t (seemingly) make yet – so some words miss the first letter or two (e.g. nny for Jenny).

He’s also starting to push other kids over; [un]fortunately he’s relatively big compared to many of his peers – so there isn’t much chance of someone pushing him over in return.

Holiday pour moi?

We seem to be contemplating the idea of going abroad over Christmas – it’s always a slightly stressful time of the year, and it also coincides with about the only quiet time of the year I get (with Pale Purple). And I’ve sort of promised Kat a holiday in return for putting up with quite a busy October/November.

Unfortunately going anywhere involves air travel, which is sort of against Katherine’s eco-push.

So, we may not be here over Christmas. Perhaps my stingy side will kick in and rebel against the fact prices appear to double for the Christmas week (or halve if we leave it to the middle of January).

I couldn’t face the prospect of seeing Butlins again … so it has to be somewhere different if we go anywhere.

Perhaps we should just visit somewhere like Canada/America instead. Not that I have any idea of the costs involved.

Living Rainforest

On Sunday, while Kat was at some organic gardening thing, Rowan and I went to the Living Rainforest (which is vaguely near J13 of the M4). Due to a failure to read on my behalf, we first headed towards RG10 0TN using the GPS, discovered this clearly wasn’t the right place and then headed to RG18 0TN…. only 30 something miles away. Thankfully Rowan was good natured and the day wasn’t a total loss.

The living rainforest was a lot smaller than I’d expected, but Rowan found some mud to play with and door way flaps to keep running through, so he was quite happy.

Some pictures are here

On the way home, the stupid M40 was somewhat broken, and what should have been an hour and a half journey turned into 3 hours+.

Twitter Weekly Updates for 2009-10-04

  • Watches rowan playing hockey with a stick and conker #
  • Note to employee – don't leave xdebu auto profiling all requests. 18gb and a full disk result #
  • At least I made some good progress with my training material prep today. #
  • Pizza express-hut for tea then. #
  • Py #
  • HMRC has a sense of humour via @drbexl #
  • Redditch and Bromsgrove LUG Curry+Beer – B97 5QB @ 19:00
    #redditch #bromsgrove #geek #linux #lug See #
  • from "why do churches spend millions on abstinence lessons when a WoW account is $15/mnth + better record of ensuring virginity." #
  • Cake Thursday arrives… There are only 3 of us… Thx @aypok #
  • Created @phpwm for #phpwm related stuff yesterday. #php #birmingham #programming #
  • Surprised there are still new strawberries growing in the garden. The toddler enjoyed them for breakfast. #
  • Is being fed shreddies and stuff by The Toddler. Fat Daddy! Always eating. #
  • Wonders why Twitter never remembers him. #
  • Fscking fsck hurry up!! #
  • Gets the feeling he shouldn't be allowed to code as he crashes $computer #
  • Typical. I can't leave bed as the toddler is lying on me, and my headphones are downstairs….(desire to listen to classic guns and roses). #

Using Growl for host notifications on the iphone

Growl Prowl for host/status notifications on your iphone (bye bye SMS messages)

We’ve used SMS notifications for some time to notify me when something breaks on one of the servers we manage/look after. SMS is good, but here’s something better.

While I was wondering how many credits I have left with Kapow, Peter suggested we use Growl and iPhone push notifications instead. A quick investigation showed we can…. (Growl notifications are push and free… which appeals to me).

A quick read, found a command line Python library ( and obviously the Prowl application on the iphone. A one off charge of £1.79, and free notifications for life.

As a further bonus, Growl notifications can have a classification (and associated sound/vibrate on the phone) so I can have e.g. ones from super-important-customer waking me up in the middle of the night with a siren noise, and others silent. Finally, the Prowl client supports the notion of ‘quiet hours’ when it can suppress noises.

Prowl Growl FTW!

Postfixadmin – setup/install guide for virtual mail users on Postfix

This is a re-hash of the various guides I’ve made over the years detailing how to setup a virtual mail server (i.e. one that can handle multiple domains/users).

This guide is based on release 2.3 of Postfixadmin. It’s about the only open source project I contribute to regularly – so I ought to at least make an effort and document it ūüôā


  • Linux Server (Debian, Ubuntu, CentOS, SuSE) or FreeBSD etc
  • PostgreSQL or MySQL database
  • PHP 5.2.x or greater
  • Postfix
  • Courier / Cyrus / Dovecot (as appropriate) (I only use Courier, so am of little help with the others).

Postfixadmin Installation

This assumes version 2.3 or above.

dpkg -i postfixadmin-xxxxx.deb

There are also rpm’s around somewhere for SuSE/RH, a port in FreeBSD or you can install from source.

Using the .deb, the database should be created for you, along with some configuration options being filled in within

  1. Visit setup.php – it will prompt you to create a setup_password, which needs putting into the file
  2. After editing, re-visit setup.php and follow it through – this will create the admin user and setup the initial DB structure
  3. Your database should now be installed
  4. You may wish to edit other settings (e.g. to turn vacation support on/off or to turn xmlrpc support on/off).

If you perform an upgrade of Postfixadmin in the future, all upgrades to the database should be handled automatically through use of ‘upgrade.php’.

Postfix configuration

There are a few changes that need making to Postfix, firstly – it’s necessary to tell it to use a relational database for various lookups (e.g. aliases and mailboxes); it’s also necessary to configure it to support vacation/auto-reply emails – if you require this functionality.

In my case, I run Postfix on Debian Lenny – other platforms may vary slightly. To attempt at being ‘tidy’ the configuration files for PostgreSQL live in /etc/postfix/pgsql.

(If you’re security concious, then you might want to ensure the database ‘postfix’ user only has read permissions)

Note: I’ve not used the proper alias domains stuff yet – if you wish to use it, check the supplied documentation with Postfixadmin (POSTFIX_CONF.txt)


user = postfix
password = something
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = true


user = postfix
password = something
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = true


user = postfix
password = something
hosts = localhost
dbname = postfix
#query = SELECT domain FROM domain WHERE domain='%s'
#optional query to use when relaying for backup MX
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = false and active = true


# Used for QUOTA!
user = postfix
password = something
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s'

(Note: I’ve never used quota support, so I can’t guarantee the above is correct)


user = postfix
password = something
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = true

To /etc/postfix/ add the following :

relay_domains = <whatever may have been here before> proxy:pgsql:/etc/postfix/pgsql/
virtual_alias_maps = proxy:pgsql:/etc/postfix/pgsql/
virtual_mailbox_domains = proxy:pgsql:/etc/postfix/pgsql/
virtual_mailbox_maps = proxy:pgsql:/etc/postfix/pgsql/
virtual_mailbox_base = /var/mail/vmail
virtual_mailbox_limit = 512000000
virtual_minimum_uid = 8
virtual_transport = virtual
virtual_uid_maps = static:8
virtual_gid_maps = static:8
local_transport = virtual
local_recipient_maps = $virtual_mailbox_maps
# this is only needed if you want vacation support -
transport_maps = hash:/etc/postfix/transport

Adding the 'proxy:' to the various lookup lines should improve performance/scalability.

Courier configuration

Courier needs configuring to know how to authorise clients and where to find mailboxes on disk.

/etc/courier/authdaemonrc :

– Enable the appropriate module – e.g.


And then in ‘authpgsqlrc’ contains :

PGSQL_HOST        localhost
PGSQL_PORT        5432
PGSQL_USERNAME        postfix
PGSQL_PASSWORD        something
PGSQL_DATABASE         postfix
PGSQL_UID_FIELD¬†¬† ¬†¬†¬† ¬†‘8’
PGSQL_GID_FIELD¬†¬† ¬†¬†¬† ¬†‘8’
PGSQL_HOME_FIELD¬†¬† ¬†‘/var/mail/vmail’

(As you can see, I’ve elected to store the mail under /var/mail/vmail with file ownerships set to 8:8. Your installation may differ – but obviously ensure this is kept in sync with Postfix’s

This would probably be a good time to test the system to ensure authentication works correctly – create a virtual mailbox through Postfixadmin and tail -f /var/log/mail.log and see if you can login via pop3/imap etc.

SMTP Authentication

This is often useful to allow remote clients to relay through the server – assuming they can prove who they are!

Postfix can use SASL for authentication  Рthis requires SASL to be told to use imap to perform the authentication checks.

File: /etc/sasl/smtpd.conf
pwcheck_method: saslauthd
saslauthd_path: /var/run/saslauthd/mux
log_level: 3
mech_list: PLAIN LOGIN
auxprop_plugin: rimap

On Debian, I have sasl2-bin, libsasl2-modules and libsasl7 packages installed.

You’ll need to edit /etc/default/saslauthd and ensure it has :

OPTIONS=”-c -r¬† -O localhost -m /var/spool/postfix/var/run/saslauthd”

You may also need to explicitly create the above path.

Create /etc/postfix/sasl/smtpd.conf with :

pwcheck_method: saslauthd
saslauthd_path: /var/run/saslauthd/mux
log_level: 3
mech_list: PLAIN LOGIN
auxprop_plugin: rimap

And ensure /etc/postfix/ has :

smtpd_sasl_authenticated_header = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes

And smtpd_sender_restrictions contains ‘permit_sasl_authenticated’


If you wish to allow your users to change their passwords/forwarding settings or vacation/auto-reply settings, a postfixadmin plugin is available for squirrelmail (squirrelmail-postfixadmin). You can download it from

The latest version of the plugin works over XMLRPC and requires very minimal configuration – you’ll need to edit the config file within the plugin to specify the XMLRPC interface URL (http://server/postfixadmin/xmlrpc.php). It’s also necessary to edit the Postfixadmin file to explicitly enable the xmlrpc interface.

Note, when your users go to use the postfixadmin-squirrelmail plugin they will be prompted to enter their mailbox password.

ping! iphone app (sms style messaging)

Discovered ping! (!/Ping!.html) yesterday; it seems quite a cool little app for the iphone – namely (once you know another iphone user has it and their username) it allows you to sms them for free. In non-scientific tests it seems as quick, if not quicker, than our carriers SMS.

I can’t see why (when ping! registers with the server) it can’t disclose your mobile number, and allow that to be your username, it would be so much more obvious than e.g. david-goodwin.

It has pretty much no integration with any of the rest of the iphone – e.g. address book etc, and if you delete a thread you seem to need to remember someone’s ID to message them again.

Then again, it’s free to install, messaging is free, and O2 only give me 500 free texts a month.. which get easily gobbled up when you send a message longer than 10-20 words.

ping! would also be free to text people who are abroad; luckily for them I don’t know anyone abroad with an iphone who I’d want to text much (if any).
Ho hum