This is a C program to do "bulk" mailing. For input, it takes a file of recipient addresses (one address per line) and a message (with headers already attached) to be sent to the recipients. It sorts the recipient list by reversed domain (so similar ones sort together), splits up the recipients into several groups containing no more than N domains each, creates an SMTP envelope for each group of recipients, and feeds that envelope to "/usr/lib/sendmail -bs".
Splitting the envelopes up allows sendmail to perform delivery in parallel, so instead of having one large queue entry (for which sendmail might take awhile to get around to attempting delivery for some recipients), it has several smaller queue entries. Depending on your point-of-view, this can still be considered "cluttering up your mail queue", but it does seem to deliver messages more quickly to most recipients.
The core of this program was extracted from a somewhat strange mailing list manager called na-net; it was designed to efficiently send out mail to 5000 people at a time. I have used this program to attempt delivery of a message to over 12000 recipients around the world, within a few hours. I'm currently using bulk_mailer as a back-end for several mailing lists of modest size.
However, the program is not extensively tested, and may not work well in all environments. (In particular, if your system has per-user process quotas, or a small number of process table entries, you will want to modify this program to recover gracefully.)
There's no warranty on this, but you're welcome to use it if you want.