Email con tu dominio

Desde que comencé la aventura de tener un servidor casero en casa hace ya dos años y medio atrás, siempre me había quedado una espinita clavada: el no disponer de email con mi dominio, es decir, del tipo “usuario@cbelena.es”. Yo realmente tengo más que suficiente con mi cuenta de Gmail y otra de Hotmail, pero mirando de cara a un futuro próximo, siempre queda más profesional darte a conocer con una de estas direcciones personalizadas.

Un poco de historia antes de empezar

Ya en los inicios, tal y como cuento en el post antes enlazado, trasteé con el tema de servidores de correo en mi servidor, y me topé con el problema de que los emails enviados son rechazados por la mayoría de servidores, aludiendo a que provienen de un rango de IPs dinámicas, y eso no les suele gustar nada. En general, si el email enviado no procede de una IP conocida de un ISP profesional, los servidores rechazan el correo. Obviamente, estas medidas se toman para evitar el spam.

En aquellos momentos lo que más me preocupaba respecto a los emails es que no me funcionaban las notificaciones que manda WordPress cada vez que llega un comentario. Según tengo entendido, WordPress confía en que haya un servidor de correo instalado en el sistema operativo y lo llama cada vez que es necesario. Pero como deseché la opción de tener un servidor de correo por lo comentado anteriormente, tuve que apañármelas de otra manera.

Me encontré con dos soluciones: una fácil y una difícil. Parece que en aquella época era un poco masoca y me fui a por la difícil (también aprendí más, por supuesto): editar archivos de la instalación de WordPress, tocando su código y demás. Harto de tener que hacer lo mismo en cada actualización del CMS (se reemplazan los archivos), me cambié a la solución fácil y cómoda: instalar un plugin para WordPress al que tú le indicas un servidor SMTP (el de tu cuenta de Gmail, por ejemplo) y envía los correos necesarios por ahí.

Como no me gustaba mucho la idea de utilizar el SMTP de mi cuenta de Gmail, empleé el que me proporcionaba la empresa donde tengo el dominio contratado. Me dan ese servicio como extra, al igual que un pequeño espacio web, a pesar de sólo tener contratado un plan dominio. El caso es que con este servicio hubiera podido tener una dirección de email con mi dominio, pero había un problema: teniendo el dominio principal configurado con una entrada CNAME (apuntando a la dirección de DynDNS) no me permitía tener el servicio de correo con ellos. Para poder utilizarlo, tuve que crear un subdominio, pero esto ya “ensuciaba” la dirección de email haciéndola más larga y fea.

Dominio

Con esa cuenta es con la que hasta ahora han estado funcionando bastante bien las notificaciones de WordPress, pero el otro día, releyendo por casualidad esta entrada del siempre excelente blog de Vicente Navarro, me detuve en la parte del servidor de correo. No sé muy bien por qué en anteriores lecturas no le había prestado demasiada atención, pero esta vez me animó a indagar nuevamente y a conseguir finalmente tener un email con mi dominio, y que además funcionase en todo el sistema (y no sólo con WordPress), como debería ser lo normal y adecuado.

Como en mi caso no fue tan sencillo como parecía en un principio y me llevó unas cuantas horas investigando para tenerlo todo como yo quería, la finalidad de este post es doble: por una parte, servir como guía a quién me encuentre en buscadores; y por otra, servirme de referencia para que no se me olvide cómo lo hice. Vamos allá pues.

Crear una cuenta de Google Apps

Actualización 08/12/12: Lamentablemente el día 7 de diciembre de 2012 Google anunció que Google Apps dejaba de ser gratuito para nuevos usuarios: a partir de ahora pasará a ser 5 USD por usuario al mes. Para los usuarios que ya usasen el servicio seguirá siendo gratuito. Puede que te interese la alternativa de Microsoft, aunque desconozco si funcionaría para este propósito afortunadamente sí que funciona.

La solución para obtener emails con tu dominio pasa por crearse una cuenta gratuita con Google Apps. Este servicio de Google me sonaba, pero desconocía que se pudiese utilizar para este propósito. Además, pensaba que no habría versión gratuita. Pero sí la hay: hasta 10 cuentas de correo personalizadas, más que de sobra para lo que necesitamos.

Google Apps

¿Pero qué es Google Apps? Google Apps está pensado para empresas y organizaciones que prefieren utilizar los servicios de Google, pero con la diferencia de tenerlo todo personalizado para su empresa, incluyendo administrar a usuarios, grupos, etc. De ahí el poder utilizar direcciones de correo acabadas en @tudominio.com. Eso es a grandes rasgos, pero aquí tienes una explicación mejor. Un ejemplo práctico es poder utilizar a Gmail con todas sus funcionalidades en vez de los usualmente horrendos y poco usables clientes webmail para empresas que circulan por ahí.

Crearse una cuenta es muy fácil: ve a esta dirección e introduce tu dominio (sin las www). Rellena el resto de datos y ya la tienes. Ahora ya puedes iniciar sesión con los datos que has puesto y accederás al panel de control. Antes de poder configurar el correo, tienes que verificar que el dominio es tuyo. Te dan varias formas de hacerlo, y es bastante inmediato. Lo más sencillo es seguir el asistente que tienes en el apartado Establecimiento.

Una vez validado, si continuas, verás que para poder utilizar el servicio de correo te piden crear un registro MX que apunte a una dirección que ellos te piden. Aquí es donde vino mi primer problema: al igual que me pasaba antes, no podía cambiar nada que no fuera el registro CNAME. Para poder cambiar los registros MX tenía que cambiar a la opción DNS (ver la imagen de arriba), y en vez de dar la dirección de DynDNS, dar directamente mi IP pública como un registro A. Obviamente, no podía permitirme ese lujo porque mi IP no es fija. No sé cómo será en otras empresas, pero así de limitado es donde estoy actualmente. Sin poder configurar eso estaba perdido, pero entonces me dio por mirar la configuración que tenía en DynDNS y me fijé en un campo al que nunca le había dado mucha importancia: MX Hostname. Supongo que servicios similares, como No-IP, tendrán algo parecido.

DynDNS

Por suerte ahí pude poner la dirección que te piden (aspmx.l.google.com) y una vez se actualizó (puede tardar algunas horas hasta que el cambio sea efectivo), ya pude continuar con el asistente de Google Apps.

Para comprobar que se ha hecho efectivo el registro MX puedes escribir en una terminal lo siguiente:

nslookup
set querytype=MX
tudominio.com

Y si lo que te devuelve es algo así como lo siguiente:

[...]
Non-authoritative answer:
tudominio.com      canonical name = tuhost.dyndns.org.
tuhost.dyndns.org      mail exchanger = 10 aspmx.l.google.com.

Entonces ya está todo correcto. El asistente de Google Apps también comprueba esto por ti, pero no está de más conocer este comando.

El resto de pasos del asistente no son muy relevantes para este tutorial, a excepción de poder configurar un subdominio como la URL a través a la que accedes a tu nueva cuenta de correo, como por ejemplo correo.tudominio.com, para no tener que recordar la dirección que te dan por defecto, que es más larga y complicada de recordar.

Google Apps 2

Ahora que ya puedes acceder al correo, verás que es igual que tu cuenta de Gmail, incluidos los más de 10 GB de capacidad ;-)

Con esto ya tienes medio camino recorrido, ahora pasamos a configurar la parte de nuestro servidor casero para que emplee esta nueva cuenta para enviar los emails.

Configurar nuestro servidor con sSMTP

Mi segundo problema fue que no hubo manera de hacer funcionar correctamente el servidor Exim, el empleado en el mini tutorial referente al correo del blog de Vicente. Busqué alternativas, y apareció sSMTP como mi salvador. Considerablemente más fácil de configurar que Exim, me funcionó a la primera gracias a una respuesta de Server Fault, una página del mismo grupo de Stack Overflow y con idéntico funcionamiento, pero orientada a sysadmins y problemas con servidores en vez de preguntas de programación. Digamos que son la versión seria de Yahoo Respuestas.

Instalarlo es tan fácil como escribir en la terminal:

sudo apt-get install ssmtp

Y configurarlo tampoco tiene mucho misterio. Sólo hay que modificar unas pocas líneas del fichero /etc/ssmtp/ssmtp.conf de tal forma que quede así:

root=tuusuario@tudominio.com
mailhub=smtp.gmail.com:587
UseSTARTTLS=yes
UseTLS=yes
AuthUser=tuusuario@tudominio.com
AuthPass=tucontraseña
FromLineOverride=yes

Este fichero tiene por defecto permisos de lectura para others, por lo que deberás tomar medidas si compartes tu servidor con otros para que no te vean la contraseña de Google Apps.

¡Y solamente con esto ya tendrías tu servidor de correo funcionando! Puedes probarlo con el comando mail:

echo test | mail -v -s "Probando sSMTP" usuario@dominio.com

Ahora WordPress podrá enviar correos sin necesidad de plugins ni cambios en sus archivos, al igual que cualquier otra notificación que tenga que hacernos el sistema. Además, todos los emails enviados por el servidor se quedan en la carpeta Enviados de la cuenta Gmail de Google Apps.

Crear alias de usuario

En mi caso, para no tenerme que hacer cargo de otra cuenta de correo, configuré la nueva cuenta de Gmail para que reenviara todo correo entrante a mi cuenta normal de Gmail. De igual modo, configuré esta última para poder enviar correos desde mi nueva dirección personalizada. Esto me ocasionaba un problema, pues todo email que mi servidor me enviara a mí mismo, como las notificaciones de comentarios de WordPress, Gmail me lo organiza automáticamente en la carpeta Enviados. Esto es así porque Gmail ve que el campo “De:” es igual a una de las direcciones que tengo configuradas para enviar en mi nombre, e interpreta que lo he mandado yo, cuando en realidad ha sido mi servidor.

Esto me viene perfecto para otra de las cuentas que tengo configurada en mi Gmail, como la de la universidad. Así, cuando por ejemplo envío algún correo a un profesor, me lo mete en Enviados, a pesar de que el remitente no sea mi dirección de Gmail. Pero en el caso que nos ocupa, este hecho nos molesta más que otra cosa. La solución pasa por crear un alias. Veamos cómo.

Accede al panel de control de tu Google Apps y haz clic en el apartado de Organización y usuarios. Luego haz clic en tu usuario y en la ficha Información del usuario verás que hay un apartado llamado Alias. Pulsa en Añadir un alias y dale un nombre a la cuenta que quieras que use tu WordPress para las notificaciones, por ejemplo. Puedes añadir varios alias, según tus necesidades.

Alias

Como bien indica esa pantalla, todos los emails enviados a cualquiera de los alias te llegarán a tu cuenta, pero esa no es realmente la razón por la que los creamos.

Ahora entra en tu Gmail de Google Apps y configúrala para que puedes enviar emails desde el alias (Configuración > Cuentas > Añadir otra dirección de correo tuya):

Alias 2

Y finalmente, en tu servidor casero, edita el fichero /etc/ssmtp/revaliases como sigue:

www-data:wordpress@tudominio.com:smtp.gmail.com:587

De esta manera, cuando el usuario local www-data (el que utiliza Apache, y por lo tanto WordPress) quiera enviar un email, lo hará a través de wordpress@tudominio.com, y no a través de la dirección por defecto (la que pusiste en el fichero ssmtp.conf). Si sólo hiciéramos este último paso, Gmail automáticamente reemplazaría el campo “De:” por el usuario del fichero ssmtp.conf y no habríamos conseguido nada.

Por supuesto, puedes repetir estos pasos para tantos alias quieras tener.

Así hemos conseguido que los correos que envía nuestro WordPress tengan su propio remitente y no se mezclen con los mensajes realmente enviados por nosotros.

En el caso de que quieras empezar de cero con una nueva cuenta de Google Apps y utilizarla a partir de ahora como email principal (en vez de reenviar de la nueva a la vieja como yo, hacerlo al revés, por ejemplo), en vez de crear alias, se me ocurre que crees en Google Apps un nuevo usuario para el servidor, donde tenga su propio buzón de correo.

Por lo tanto, las credenciales que pondrías en el fichero ssmtp.conf no serían las de tu cuenta, sino las del servidor. E igualmente, podrías emplear alias con esta cuenta, pero en este caso ya no sería necesario debido a que no se mezclarían los enviados del servidor por tus propios enviados, al ser cuentas totalmente diferentes.

Creo que esto ha sido todo. La verdad es que creo que ha merecido la pena el esfuerzo; ahora ya sí que estoy satisfecho del todo con lo referente al email (y con mi servidor en general) y le puedo decir adiós a esa espinita que tenía clavada.