El 1er problema, pues he visto que ocurre cuando envías el correo haciendote pasar por la misma cuenta de correo que lo recibe.
Por ejemplo, le envio un correo a
[email protected] y envio la cabecera From como
[email protected]
Para el envio de correos cada X tiempo, crea un cronjob que envie Y cantidad de correo en cada corrida y guarde el ULTIMO id enviado en un archivo de texto.