I've used Mail::Bulkmail. I found it a little bit tricky and wasn't impressed with the error handling. If I were doing a mailing list for an empoyer, I would write it so that it could be paused and could resume after errors part way through the list. However, Mail::Bulkmail can go very fast if you need to send the same message to many people and are willing to spend a little time getting it to work.
If you don't want to mess with Mail::Bulkmail, the fastest option by far is to use qmail with the qmail-inject program. I know companies that use this to do their mail with great results. You can find wrappers around qmail-inject at Mail::Transport::Qmail and Mail::Mailer.