Puedes hacerlo con un preg_replace. Ésta función lo que hace es sustituir en una cadena de carácteres dado un patrón.
Podría quedar ser algo así:
Código PHP:
$texto_cambiado = preg_replace('/(.*)@([a-zA-Z0-9]+)( |\b)(.*)/iU', '${1}@<a href="bablabla">${2}</a>${3}${4}', $texto_sin_cambiar);
Esto tiene algún problema como que si hay algún email en el mensaje también lo cambiará. Pero como orientación supongo que te vale.
Un saludo!