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 .