We send all of our outgoing message to a queue first, so they
are all in a database table to start.
We then have a scheduled task that takes those messages and
throttles outgoing as well as prioritize oneoffs and make sure
duplicates don't go out. You then only have one place to deal with
cfmail, all other places are inserts into the database. Cfmail
allows you to specify outgoing servers in the tag and not just the
administrator, so I’d set the outgoing mail servers here,
maybe pulled from the database along with the message, so each
doamin can have their own outgoing email server.
If they send less than 500 messages a day, you could set up
email servers with gmail’s account for domains and send it
through their email server. If you send more than that per domain,
then you should look at PowerMTA ($3k) or StrongMail ($20k).
Do not try to include any tracking images as these get
flagged as bulk email. You also need to test the message and make
sure it does not “appear” as SPAM. I’ve seen
integation with Spam Assasin to test message prior to sending, so
you might want to look around for that.