I don't know what the specific implementation of each company is, but having a separate program for email delivery makes the most sense compared to using qmail or any other off the shelf MTA. There is most likely an MTA that is used to receive mail, but a separate program can be used to deliver mail from the same machine. There is a Javamail API, for example, which has been open sourced and can be used to deliver email from any java program. Threading is an important issue here since it is possible to have as many open connections as you want to deliver mail, but you would not want all of your open threads to be attempting to send emails to one domain all at once. Reputation determines how many emails get accepted or are bounced.