You're going to have to remember for each mailing:
- Who it is going to
- What message is being sent
- Who it's been sent to already.
Then your cron script (or persistent server script) can check this data and send them in batches or at a reasonable rate.
If anything fails while you're sending (say the machine needs to be rebooted, or is restarted unexpectedly), you have a record of where you left off so people don't get missed and they don't get sent again.
Bounce processing is an entirely different topic. Typically you'd need to create a mailbox on your server which bounces will arrive in - this is often done automatically in Unix for the user that you're running the web server as (or the user you sent the messages with the envelope sender, if using sendmail -f option as a trusted user).
Then that mailbox should have some filter set up so that a PHP script runs for each message which arrives and:
- Determines whether it is a bounce or not (this is not that easy)
- If it is, tries to determine who it was destined for
- Takes whatever action necessary (e.g. marks their email as bouncing in your database to prevent further messages being sent and notify your admin staff).
Doing all this will involve root access to your mail relaying server, probably. I assume however, that you have that access.
Mark