No entiendo eso de que se muestre correctamente en Linux. ¿Qué quieres decir, que se muestra bien en la terminal o en un navegador web?
Y una curiosidad: ¿por qué envías el correo en formato HTML?
En cuanto al problema de cambiar los finales de línea por <br> hay dos opciones:
La primera, es que es un problema derivado de meter un texto formateado en un formato HTML. La solución obvia es encuadrar el texto formateado entre marcas
<pre> ... </pre> con lo que en la página se mostrará con el estilo del texto original.
En cuanto a la segunda solución es la que comentas: hacer la sustitución de los finales de línea por <br>. Lo malo es que el motor de HTML seguirá sin respetar el resto de caracteres en blanco. De todas formas, será algo así (no probado):
Using perl Syntax Highlighting
$pagina =~ s/\n/<br>/simog;Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4