All in the <head>

– Ponderings & code by Drew McLellan –

– Live from The Internets since 2003 –



3 January 2004

I’m please to be able to announce the early stages of a PHP project that I’ve been working on. Mailio is a simple web mail client, designed primarily for use by kids, but I’m sure it could have a number of uses where a really simple, stripped down web mail client is needed. The concept is that it enables children to use email to communicate uninhibited, keeping away the dangers of viruses, spam and poor judgment. Mailio also serves as a useful introduction to email. The interface is really stripped-down and basic, but is based on a typical desktop email client, making it an effective training tool for youngsters.

Through the use of a parentally-controlled white list, users (the kids) can only send and receive mail from known addresses. Anything else is filtered away for the parent or guardian to review. This offers parents the comfort of knowing that the only people the child is emailing are the people they’ve personally added to the white list. For known pests, there’s a blacklist too.

Technically speaking, it’s all written in PHP with XML for data storage – there’s no database. It operates using a basic POP3 email account, just like any other mail client. I’ve tried to make it pretty portable, so that it should run on a standard Linux or Windows hosting account. Each email is stored as a separate XML document (transformed for display with XSLT) so that should the user decide to move to a different mail client the data should all be really easily accessible.

Aside from its obvious use for children, you can switch off all the filtering and use it as a basic web mail client. It’s so easy to install (just drop a few files onto your web server and set the POP details) that it makes a good option if your ISP doesn’t provide web mail but, for example, you need to keep an eye on your mail from work. There’s no complex configuration and interaction needed between your web and mail servers – Mailio just uses standard POP3 and gets on with it.

At the moment it’s in what I guess you would call alpha. I’ve got the first working version together and have unleashed it on The Small Person for whom it was developed. She’s six and she loves it. She’s also fearless and complains like hell when things break. A typical end user. In the near future I’ll be looking for folks to help test this if they’re brave enough.

So, check it out. It’s all at

- Drew McLellan


  1. § bdash: This looks like a very interesting project. From the screenshots, it looks simple to use and easy on the eye. The concept of storing the emails in XML files and using XSLT to transform them for display is an interesting way of approaching the problem.

    Another possible use would be for ’older’ people that haven’t grown up with computers. A large number of people over the age of about 50 are nervous when using computer, fearing that they may break something. An email client like Mailio that removes all but the core features would be an ideal introduction to the world of email for those people.
  2. § Alex H.: An 8-year-old that has taken a look at the screenshots thinks the pixel font you’re using is too small ;)
  3. § Jemal: Very nice - my nine-year-old could really use something like that. Ever thought of doing it in XUL? =-)
  4. § Bob: Bravo! Nicely done!
  5. § Mike: Fantastic, I’ve signed up.

    It could be useful for a couple of clients too - will it handle attachments and stop them from sending me 120MB TIFFs?

  6. § Amit Karmakar: All the best Drew, I am sure this would be a very handy too. I have already referred this to a very good friend of mine who has a lot to do with Kids and learning for kids. I am hoping she might try your online tool ad ask some kids to sign in.

    However, on another level the use of the word ’whitelist’ is rather discriminatory and it perpetrates discrimination. More so when you are dealing with kids.
  7. § Nancy Barbee: This looks very interesting Drew and I intend to use it as soon as it is made available. In fact, if you need additional testers I’d like to offer my Technology Club. They are a group of 4th and 5th grade gifted students and I can tell you would be extremely honest in their judgements. Just a thought. Do let me know when it is ready for use.

    I too agree with Amit. Hopefully, we can get away from referring to good things as ”white” only.
  8. § Rachel: I’m a little confused as to how ’whitelist’ perpetrates discrimination ... it’s a commonly used term for such a list in this type of application and a very new term at that - seeming to apply more or less exclusively to circumstances such as this rather than having any historical usage.

    Word Spy - whitelist - white list
  9. § Drew: Thanks for the feedback, guys. As Rachel says, ’whitelist’ is a standard, established term. However, from within Mailio it simply presents itself as the user’s address book (and is referred to in that way), so I’m not too worried at the moment.
  10. § jason hoffman: I’ve never heard of whitelist or blacklist used in terms of race. At least not in the States. Historically, whitelisting comes from the NYSE’s daily list of transactions (published on white instead of yellow paper) and the Consumer League’s ”whitelist” of good employers, it was in reponse to employers ”blacklisting” members of unions.

    Ah, and thanks for the mailio work. It’s exactly what I was looking for my daughter.
  11. § Massimo Foti: Sounds very interesting (my daughter is 6 too). Just one question, is XSLT support part of the standard PHP distro? Since I use PHP only once a year, or even less, I am not sure...
  12. § Drew: XSLT has worked with a simple dl(’’); function call on each system I have tested on.
    It worked on a default Mac OS X Panther install, as well as the Debian servers and hosting accounts I have (PHP 4.1.2).

    So, I’m hopeful. I guess testing with a wider user base will help iron out problems like that which are dependant on an individual hostmaster’s whim.
  13. § jason hoffman: I have a dedicated server running FreeBSD 5 and PHP 4.3.4 as an Apache2 module. XLST and XML are compiled in. Let me know if you want any space.
  14. § Tom: Looking good, Drew :) From reading the comments, there looks to be plenty of interest!

    Keep up the good work, as always.


Work With Me logo

At we build custom content management systems, ecommerce solutions and develop web apps.

Follow me


  • Web Standards Project
  • Britpack
  • 24 ways

Perch - a really little cms

About Drew McLellan

Photo of Drew McLellan

Drew McLellan (@drewm) has been hacking on the web since around 1996 following an unfortunate incident with a margarine tub. Since then he’s spread himself between both front- and back-end development projects, and now is Director and Senior Web Developer at in Maidenhead, UK (GEO: 51.5217, -0.7177). Prior to this, Drew was a Web Developer for Yahoo!, and before that primarily worked as a technical lead within design and branding agencies for clients such as Nissan, Goodyear Dunlop, Siemens/Bosch, Cadburys, ICI Dulux and Somewhere along the way, Drew managed to get himself embroiled with Dreamweaver and was made an early Macromedia Evangelist for that product. This lead to book deals, public appearances, fame, glory, and his eventual downfall.

Picking himself up again, Drew is now a strong advocate for best practises, and stood as Group Lead for The Web Standards Project 2006-08. He has had articles published by A List Apart, Adobe, and O’Reilly Media’s, mostly due to mistaken identity. Drew is a proponent of the lower-case semantic web, and is currently expending energies in the direction of the microformats movement, with particular interests in making parsers an off-the-shelf commodity and developing simple UI conventions. He writes here at all in the head and, with a little help from his friends, at 24 ways.