Ciao, attenzione a non confondere... per usare mail() devi avere server di posta altrimenti puoi anche sbatterti per terra ma non funzionerà mai per testare in locale devi per forza appoggiarti all'SMTP del tuo provider
Per inviare mail da php con la funzione mail() ho hai un hosting con servizio mail, oppure niente da fare. In locale devi usare smtp da php
Ripeto: in locale mail() NON funziona...invito ad usare PHPMailer, che tra l'altro ti fa switchare da smtp a mail a sendmail in modo velocissimo...altre strade non le conosco, se non come hai fatto tu: usare mail() sul server e sendmail con SmartHost in locale. Tra l'altro con PHPMailer puoi impostare mittente e quant'altro: è una classe veramente potente.
Gab, ma queste ferrate nozioni le hai trovate nell'uovo di pasqua o te le ha regalate la befana???

quando parli, e per giunta insisti, devi essere MATEMATICAMENTE sicuro di quello che dici!!!

Sui sistemi posix php utilizza sendmail mentre su windows utilizza un relay smtp ovvero si appoggia ad un server che risolve i dns mx per lui ed effettua le spedizioni

Probabilmente la cosa è dovuta proprio alla configurazione come smarthost, potrebbero esserci svariati motivi per il quale non funzioni correttamente (password per l'invio, mittente non riconosciuto [viene utilizzato l'utente di apache se non lo specifici, controlla] e tanta altra roba)
Impostalo come normale server smtp ragiungibile solo su localhost:25 e ti risolvi il problema