Functia mail() se foloseste de php.ini pentru a fii configurata si are anumite limitari:
1) nu se poate autentifica cu user si parola (relay, pop-before-smtp, etc..) la server-ul care trimite mail
2) nu se poate folosii direct smtp catre zona MX
Deoarece exista aceste limitari, cel mai des si securizat mod de a folosii functia mail(), e sa comunice intranet (in retea, inclusiv localhost) catre un server de bulck mail.
Daca nu dispuneti de un mail server in retea locala, sfatul meu e sa NU folositi functia mail()

Pentru acest caz, aveti tot felul de clase php care va stau la dispozitie, dar aici lucrurile se complica putin, pentru ca trebuie sa stiti ceea ce faceti exact. Cel mai des mod de a folosii o clasa php pentru mail-uri, e metoda relay: se configureaza un mail server din afara retelei locale, cu utilizator si parola (recomand tipul de AUTH sa fie CRAM-MD5 cel putin), iar acesta are rolul de a intermedia mail-urile (relay), un fel de proxy. Un astfel de serviciu e oferit gratuit de catre Gmail, dar are si unele limitari, anume, ca se poate trimite un numar limitat de mail-uri intr-o anumita perioada de timp

Pentru cine e interesat sa trimita multe mail-uri pe zii, recomand un server de bulck mail cu plata, le gasiti pe google la o simpla cautare.
Mai exista inca o posibilitate de a trimite mail fara sa folositi nici un server de mail care intermediaza actiunea, acesta metoda se numeste direct smtp catre zona MX al host-ului client, dar aici intervine problema pierderilor de date cand server-ul client e offline, de aceea server-ele de mail (relay) au implementat serviciul de queue
Sunt multe de discutat pe acesta tema, dar sper ca cel putin v-ati facut o idee in mare despre cum stau treburile la mail:
sender (php script) -> optional, mail server (relay) -> client mail server (inbox)[/b]