Skip to content

How To Setup Your Own Pop3/IMAP Email Server for Local Development Testing

Updated: at 02:12 PM

For the past few months, I’ve been working on building an HTML5 email web client.  It’s fundamentally server based for gathering email.  That means, when I test, I need to connect my server software to both POP3 and IMAP servers.  I’ve been abusing public email services (names not mentioned) and it has made life a little difficult.  That is also not to mention that I often program away from my office which means I pay hotspot charges that can really mount up quickly.

So, I spent a couple hours this morning setting up a local POP3/IMAP mail server on my windows 7 (OK, actually Windows 8 Preview but the process is the same).


Install HMailServer

Download and install the latest from (I used V5.4)

Add an entry in your c:\windows\system32\drivers\etc\hosts for your local mail server (  mail.local)

In hMailServer admin, add a domain called mail.local and make sure it is enabled


Add some test accounts to hMailServer


In settings, make sure to enable SMTP,POP3 and IMAP


On Advanced, put in your default domain


In advanced smtp make sure to bind to


In Advanced / IP Ranges Put in just your localhost range


Disable auto-ban in Advanced



Install Mozilla Thunderbird Email Client

You need a local client to test with. You can use outlook, or in my case, I used Mozilla’s Thunderbird Email Client.  You can download it from

Simply install and go into account setup and put in your test email (in my case, test2@mail.local, server mail.local)


By default, it puts .mail.local into the domain names.  Simply get rid of the leading period for both smtp and pop3 as follows. Push re-test and you will show successful.


You can now send and receive mail locally in your mozilla thunderbird email client (or any other email client you install locally)


That’s it!  You’ve setup your own mail server that only listens on your localhost port.  You may need to disable your firewall for local connections.  I’m not sure if that is necessary.

Check out the ORM (Object Relational Mapper) PRISMA. The database access method I use in all my projects