I run one using MySQL as the database. I looked at the file based approaches and decided they offered too little flexibility for too much hassle so might as well go to a DB for storage. Besides it’s much easier to manage a DB with a GUI or web interface than files.
You can find the details for setting such a server at workaround.org (for Debian, but principles also valid for any other distro)
BTW, recent dovecots can be auth proxies for postfix which simplifies setup, you don’t need cyrus sasl for this.