My favorite and so far most reliable, if not most convenient, way to achieve that is out of Drupal, actually. If you set it up inside Drupal, and you hit some errors, you never are 100% certain if mail wasn't sent, or just wasn't logged. Or, if logging happens first, you can never know for sure if mail was sent, or was only supposed to be.
The way I prefer to do it is to use external SMTP server for outgoing mail. That way I can be sure all mail I have logged actually was sent from Drupal, and chance I logged all mail are bigger, too. After all, SMTP servers have decades of evolution more than Drupal, or even PHP. Added bonuses include:
- Less CPU and memory use on webserver, because it does not need code for mail log, and this code would be loaded on each uncached request.
- Ability to deliver mail even if recipient's server is temporarily down.
Example
If you have business Gmail, you can use SMTP Authentication Support module to make your site send via Gmail, and you will see mail sent from site in your Sent Mail, just like this:
No special configuration was needed to get this working. You can use full power of Google if you do so: filters, labels, whatever you wish.
If you will use company mail server, just make sure your sysadmin will configure it in similar manner.