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

12 Comentarios

  • Lo siento Elio pero esta vez te ha quedado el post un tanto “pobre”. No elegir Postfix como MTA no es un buen consejo 😉

    Por lo demás impecable! Justo la semana pasada hablaba lo mismo con Jon y Saul 😀

    Gracias por ayudar a culturizar a los administradores de Asterisk!!

  • y cómo se envían los emails desde Asterisk?
    …perdón!
    quise decir… cómo le envía Asterisk los emails al demonio de SMTP?

  • Y no olvidaos de añadir la IP del servidor asterisk al registro SPF del dominio. Sino dependiendo del destino, es posible que no llegue el email o se quede en la carpeta de SPAM.

  • Bueno, yo suelo utilizar varios MTA (exim, postfix, incluso sendmail) para servidores con cuentas virtuales y tal suelo usar QMail, pero ya que lo trae Debian de serie consideré explicar cómo se configura el Exim (de paso así me apunto los pasos que siempre se me olvida alguno), todos funcionan bien, ya es cuestión de escoger el que uno prefiera o le sea más sencillo, o más completo, o más… 🙂

    Pablito: Leete el comienzo… Asterisk le da los emails a “sendmail” (por el puerto 25) y este ya se encarga de enviarlo. 🙂

    Toni: Cierto, lo del registro SPF es muy importante para evitar que te consideren Spam. 🙂

  • […] monitorizar algunos servicios básicos e importantes (servidores y servicios varios como web, ftp, correo, etc) y como no podía ser de otro modo, también […]

  • […] monitorizar algunos servicios básicos e importantes (servidores y servicios varios como web, ftp, correo, etc) y como no podía ser de otro modo, también […]

  • Hola,
    estoy tratando de usar el SMTP de mi proveedor de servidor de email, el tema que ellos requieren autenticacion, estuve intentando algunas sugerencias que encontre pero aun no logro hacer que mi asterisk envie los email a traves de esa cuenta, alguno de ustedes ya configuro algo asi? podria sugerir me algo?

    gracias

    MIlton

  • segui todos tus pasos al pie de la letra amiga, pero me arrojo el siguiente error al realizar un

    “sudo /etc/init.d/exim4 restart”

    asterisk:~# /etc/init.d/exim4 restart
    Stopping MTA for restart:2009-05-15 11:19:04 Exim configuration error in line 756 of /var/lib/exim4/config.autogenerated.tmp:
    extra characters follow driver name port
    Invalid new configfile /var/lib/exim4/config.autogenerated.tmp, not installing
    /var/lib/exim4/config.autogenerated.tmp to /var/lib/exim4/config.autogenerated

    tengo debian lenny instalado
    saludos

  • Jonathan Dud Rodriguez, el manual tiene un error en esta linea

    “y justo debajo de la línea que dice algo como: (hosts_try_auth…) añadir lo siguiente:
    port=587”

    No debe ser debajo sino antes de esta linea. Agrega la linea antes, seria bueno si pueden corregir el manual esta muy interesante. Como puedo cambiar el From ?

  • que tal el tuto esta exelente pero hice todo el proceso pero no logre enviar correos al exterior y la duda que tengo es si en esta parte
    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

    y en esta otra

    echo “root@localhost: usuario@miDominio.com” >> /etc/exim4/email-addresses

    tengo que poner todo mi correo o como tu lo has puesto se que es una pregunta tonta pero necesaria para mi pues como dicen mejor tonto un momento que para siempre
    gracias por su ayuda

    • La idea es que en el archivo /etc/exim4/email-addresses exista una línea del tipo:
      root@localhost: micuenta@gmail.com
      donde “root@localhost” es el usuario@dominio que va a realizar el envío local del correo.
      Si ejecutas Asterisk con el usuario ‘asterisk’ entonces será ‘asterisk@localhost’ o así…
      🙂

Archivos

© 2014 Sinologic, inc. All rights reserved.

Menú

Redes sociales