ever since i was introduced to hMailServer, i've never looked back. it's really nice for it's weight. part of the requirements for it to run is a database server, either MySQL or Microsoft SQL Server ™. when setting up the server, you're allowed to choose whether or not you want to use an external MySQL database server. not using an external database server makes use of the one that comes bundled with the hMailServer package.
with MySQL versions up to 3.x, i worked well with hMailServer. unfortunately, from version 4 upwards, i've struggled with using hMailServer and MySQL. that's because i generally install MySQL for purposes other than running a mail server. however, the last time i installed hMailServer, i did the usual thing: create a new database for the mail server's use using my existing MySQL server installation. however, for some reason, hMailServer choked on the external database, so i was left with the option of downgrading hMailServer or MySQL. for the first time, i got mad, reinstalled hMailServer and let it use its internal MySQL server. it's nice to know that even though i now have two MySQL server services running on my computer, i can use my existing MySQL server along the one installed with hMailServer.
one thing of note, if you're going to install hMailServer, please note that the username used to authenticate to the mail server must be the full email address, not just the username portion, that is, it needs to be 'email@example.com', not just 'username'. this is something that i've seen trip up new users of hMailServer.