Ja bym proponował to zrobić na bazach danych typu mysql bo [jak dla mnie] jest to najprostsze rozwiązanie [ z plikami zawsze miałem dużo problemów

]
przykład na bazie mysql:
tworzysz tabel z przykładowymi polami
od | do | data | tresc | jakies_dodatkowe_pola
no i teraz w panelu usera wywołujesz prostym zapytaniem
[sql:1:55be3a8483]
SELECT * FROM nazwa_tabeli_z_wiadomosciami WHERE do='$zapisana_wczesniej_przy_logowaniu_nazwa_usera';
[/sql:1:55be3a8483]
no i teraz to while'em wypisujesz w (przykładowo) tabeli, dodajesz różne opcje typu odpowiedz, drukuj itp. (ale to jush osobne skrypty) no i masz jush gotowy skrypt 'private message'
mam nadzieje że pomogłem w jakimś tam procencie