El Count(*)
le devuelve una fila que contiene el número de filas como valor.
Usando mysql_num_rows($result)
en realidad estás contando la cantidad de filas del Count(*)
resultado que realmente es uno .
Cámbialo por:
$result = mysql_query("SELECT * FROM smf_personal_messages", $link);
$num_rows = mysql_num_rows($result);
O simplemente use el Count(*)
valor (que probablemente sea mejor ya que cuenta en la base de datos y no recupera toda la tabla) usando mysql_fetch_array
.