Cómo configurar el envío de emails desde Asterisk
Es una pregunta bastante común y pese a que su respuesta es la misma, voy intentar dejarlo tan claro como sea posible.
Asterisk es una aplicación, como cualquier otra que corra bajo Linux, y por lo tanto sigue una norma que siguen todas las aplicaciones en Linux: Asterisk NO ENVIA EMAILS, si no que se comunica con el servidor SMTP que tengamos instalado en nuestro sistema local y es este el que envía el email. Incluso si queremos utilizar un servidor remoto con una cuenta, el procedimiento sigue siendo el mismo.
Por este motivo, y por que todas las aplicaciones en linux funcionan prácticamente igual (apache, pureftpd, syslog, etc…) suelen darle los emails que quieren enviar a una aplicación bastante conocida: SendMail.
SendMail es un servidor de envío de emails (SMTP) y fue uno de los primeros y más avanzados servidores de este tipo, pero su poca fiabilidad (demasiados bugs para los administradores de redes) unido a su complejidad si queríamos configurar un servidor serio, hizo que apareciesen otros servidores SMTP más ligeros, simples y rápidos que Sendmail.
No obstante, todos los sistemas continúan intentando enviar emails dejándolos a Sendmail y es por esto por lo que los nuevos y más sencillos servidores SMTP utilizan un truco para hacerse pasar por Sendmail y poder «suplantarlo», esto es, crean un enlace simbólico en el sistema con el nombre «sendmail», de manera que cuando una aplicación intenta acceder a «sendmail», realmente quien contesta es esta aplicación. 🙂
Como ya he comentado, casi todas las aplicaciones que tienen la necesidad o la opción de enviar emails utilizan el servidor SMTP local, esto ha hecho que muchas distribuciones, para facilitar la configuración y envío de emails, instalen por defecto algunos sustitutos de sendmail como por ejemplo exim o postfix son las más conocidas.
El principal problema de utilizar el servidor SMTP local es el proveedor: Debido al aumento de correos SPAM, los proveedores y los servidores de correo que van a recepcionar tu email comprobarán si realmente el servidor del que procede el email es realmente un servidor «oficial» o bien un servidor que se dedica a enviar SPAM, y como el servidor local no es realmente un servidor en toda regla (no tiene registros MX en el DNS de algún dominio, tiene una dirección IP dinámica, o ha sido utilizado por otro spamer) es por lo que se aconseja encarecidamente utilizar una cuenta de algún servidor de emails ya verificado y seguro.
Posiblemente, tras la instalación de nuestra distribución preferida, podremos enviar emails con el comando:
echo «Prueba de email» |mail -s «Prueba de email» miUsuario@miDominio.com
Pero cuando hayamos enviado varios de este tipo y empecemos a confiarnos, veremos como nuestro cliente de correo empezará a considerarlo spam, o puede que ni llegue. Es entonces cuando tendremos que configurar nuestro servidor SMTP local para que envíe los emails mediante una cuenta autentificada.
Para el ejemplo de configuración voy a hacerlo con Exim (el servidor que viene por defecto con Debian), quizá sea uno de los más sencillos de configurar y de manejar, aunque personalmente siempre he preferido Qmail por ser mucho más seguro, no obstante, como nuestro objetivo no es configurar un servidor de correos en toda regla, vamos a hacerlo con Exim (versión 4) que es la que trae Debian (y Ubuntu) de serie.
Lo primero que tenemos que hacer es asegurarnos que lo tenemos instalado:
apt-get install exim4 exim4-config
Una vez que lo hayamos instalado, aparecerá una pantalla de configuración. Si no aparece, podremos acceder a ella en cualquier momento ejecutando el comando:
dpkg-reconfigure exim4-config
¿Sencillo verdad? 🙂
Será entonces cuando nos pregunte por distintas opciones de configuración:
– ¿Quiere utilizar archivos separados para la configuración?
Respondemos SI
– ¿De qué forma queremos configurar nuestro servidor?
Respondemos «enviar por SMARTHOST, y recibir por SMTP o Fetchmail»
– Escriba el nombre del sistema:
Respondemos con nuestro dominio: miDominio.com
– Escriba la dirección IP desde donde va a atender las conexiones al SMTP:
Respondemos: 127.0.0.1
– Escriba otros servidores destino que el SMTP será aceptado:
Aquí no respondemos nada, lo dejamos en blanco.
– Sistemas a los que reenviar emails ?
No piques, esto también hay que dejarlo en blanco. 😛
– Escribe el sistema que gestionará el correo saliente de este sistema:
(Aquí escribimos nuestro servidor SMTP remoto, por ejemplo…)
smtp.miDominio.com
Si queremos utilizar una cuenta de gmail, el servidor SMTP de gmail hay que especificarlo junto con el puerto que va a utilizar, y sería esto: smtp.gmail.com::587 (ojo que lleva dos simbolos de dos puntos antes del puerto)
– ¿Quiere ocultar el nombre local del sistema local del email saliente?
Pues NO.
– Quiere cachear las peticiones DNS para ahorrar ancho de banda?
Pues NO.
Bien, hasta ahora tenemos algunos parámetros básicos configurados, pero no hemos indicado el usuario ni la contraseña con el que queremos autentificarnos para enviar emails. Si probásemos a enviar emails, seguramente nuestro servidor remoto recibiría un email de un tal root@localhost y nos lo rechazaría. 🙂
Vamos a configurar los datos importantes:
1º. – Editamos el archivo /etc/exim4/passwd.client y escribimos algo como esto:
smtp.miDominio.com:usuario:contraseña
En el caso de que queramos utilizar la cuenta de email, deberíamos poner algo como esto:
gmail-smtp.l.google.com:usuario@gmail.com:contraseña
*.google.com:usuario@gmail.com:contraseña
smtp.gmail.com:usuario@gmail.com:contraseña
De esta manera, sea cual sea el nombre del servidor SMTP que utilicemos en gmail, le enviaremos los parámetros correctos y nos aceptará el envío.
2º.- Protegemos el archivo para que nadie tenga acceso a leer nuestros datos:
chown root:Debian-exim /etc/exim4/passwd.client
3º.- Si estamos configurando nuestra cuenta de Gmail, hay que indicarle (otra vez) que el envío debe hacerlo por el puerto 587 en lugar del estandar (el 25), por lo que tendremos que editar el archivo:
/etc/exim4/conf.d/transport/30_exim4-config_remote_smtp_smarthost
y justo encima de la línea que dice algo como: (hosts_try_auth…) añadir lo siguiente:
port=587
4º.- Por último, vamos a configurar nuestra identificación saliente:
echo «root@localhost: usuario@miDominio.com" >> /etc/exim4/email-addresses
Y listo, lo último que nos queda es recargar la configuración:
ejecutamos: update-exim4.conf (es un comando 🙂
Y probamos a enviar un email como hemos hecho antes…
echo «Prueba de email» |mail -s «Prueba de email» miUsuario@miDominio.com
y veremos cómo nos llega con el usuario y dominio correcto. 😀
Bueno, parece más complicado de lo que realmente es. Una vez que se ha configurado unos cuantos sistemas con esta técnica, se hace todo diréctamente y sin tener que recordar los pasitos.
Una vez tengamos esto hecho y podamos enviar emails con nuestra cuenta oficial, entonces podremos recibir los emails que hayamos configurado en el buzón de voz de Asterisk, o incluso nuestras alertas de arranque de asterisk o incluso enviar faxes mediante Hylafax,…
Más información:
http://www.exim.org/
http://wiki.debian.org/GmailAndExim4
http://wiki.debian.org/PkgExim4