The mailserver is Postfix, the file server is samba, the FTP daemon is VsFTPd, imap is courier imap.
Are you a microsoft rep or something? None of this stuff is even remotely "enthusiast".
The Contact manager is just a web-frontend that I made for that sits on top of (and supplements) an existing system (as/400 green screens that they hate).
I'm sorry, but this is kindof insulting. What do you mean "enthusiast DIY"?
So when I started this job (working with large companies) helping out with a co-worker's task I started trying to solve a particular problem the skinflint way, ok we can repurpose this box here to serve a filesystem while the other box is down for the vendor to swap the firmware and then...
My co worker (rightly) pre-empted me and recommended $20,000 of SAN equipment to replace the problematic device.
Neither way is better in the absolute, it's a question of what variable you're optimizing for.
The funny thing is I've been interrupted 3 times while writing this comment, it's ruined my flow and I forget what I was going to write.
Oh yea, I lock myself in an office and close the door when it's time to work on spurts of programming, otherwise I feel burnt out and nothing gets done. I've also got a boss who's capable of doing IT work. Having two of us helps entirely, maybe a $25k a year intern to ease the "my caps lock is broken!" off your plate could help.
But seriously, take your 20% time and don't answer the phone and use it to program. You need your focus time, and then come back and do the rest of your job.