Home > desarrollo, Spanish, técnico > Desarrollo web: Como mandar correos con Ubuntu

Desarrollo web: Como mandar correos con Ubuntu

Si usted es desarrollador web y trabaja bajo Ubuntu, a lo menos con PHP y Apache, tendrá el problema a algún punto que quiere probar el envio de correos electrónicos desde su aplicativo web (por ejemplo usando la función mail() de PHP).

Lo más lógico, para un desarrollador PHP, es de usar lo que es la propuesta por default de la configuración PHP: sendmail. Mientras tanto, sendmail tiene muchos detractores, y Wikipedia dice esto:

Sendmail can be difficult to configure. Whereas nearly all popular Unix based server software has human readable configuration files, Sendmail’s configuration is not considered human readable. Instead, the Sendmail authors recommend that administrators learn and use macro language tools, particularly M4 to configure Sendmail. Sendmail is unique amongst Unix based MTAs in this requirement, and no MTA developed since Sendmail requires or recommends the use of macro languages for configuration.

Lo que no esta claro, cuando uno instala sendmail, es que en realidad es un sistema muy poco amigable, que necesita mucha configuración para funcionar bien, y esta configuración es practicamente imposible, como lo indica Wikipedia.

La solución entonces es de usar Exim4, que se puede configurar rapidamente (pero no tan facilmente tampoco).

Para instalar exim4, primero desinstalamos el sendmail

sudo apt-get remove sendmail

El apt-get nos indica que podemos eliminar una serie de paquetes instalados con sendmail, usando el comando

sudo apt-get autoremove

Ahora instalamos exim4

sudo apt-get install exim4

Instala una serie de paquetes ligados. Pero no es todo. Se tiene que configurar, usando

sudo dpkg-reconfigure exim4-config

El programa nos trae en una interfaz terminal en color que nos pide varias preguntas:

  1. OK
  2. Distribución por internet (SMTP)
  3. Nombre del correo sistema: el nombre de la máquina (cualquier nombre, pero evita los caracteres raros)
  4. OK
  5. Direcciones IP: 127.0.0.1
  6. Otros destinos: localhost
  7. Relays: vacío
  8. Relays 2: vacío
  9. OK
  10. Minimisar pedidos DNS: sí (es una máquina de desarrollo, no un servidor)
  11. Formato Maildir (somos desarrolladores, queremos las cosas prácticas)
  12. Separar la configuración: No (no hay mucho configurado de toda forma)
  13. Hecho

Al fin de este proceso y de reiniciar Apache (sudo /etc/init.d/apache2 restart), usar un script PHP que contiene, por ejemplo: mail(‘yo@hotmail.com’,’hola’,’mi mensaje llega’); debería mandar el mensaje correctamente a la cuenta yo@hotmail.com

  1. January 9, 2009 at 4:18 pm

    Esta prueba resultó exitosa para eniar a un correo gmail.
    No logré recibirlo en hotmail ni en el sistema de mi universidad (pucp.edu.pe).

    Deeb ser porque el dominio usado no está verificado.

    En el campo from obtengo: data@adagio-laptop.cybernet.org
    cybernet.org lo inventé, al igual que adagio-laptop que es el hostname de esa pc.

    ¿Podría establecer un usuario específico para que aparezca en el campo FROM? ( debería ser en la funcion mail() )

    ¿Se podría trbajar con exim4 y la funcionalidad completa de enviar mails en un contexto de IP público dinámico, sin un dominio público estádico?

    ¿Se deben realizar configuraciones especiales de MX Records o configuración del MTA?

  2. Dias
    June 23, 2009 at 5:09 am

    Hola, segui tus instrucciones a pie de letra y me dio un error 77:mailto not found al enviar el mail, esto es porque no mencionas que tambien hay que instalar el mailx.

    Salu2 y gracias por la guia.

    • ywarnier
      June 23, 2009 at 1:11 pm

      Creo que estás trabajando en otras condiciones que nosotros. Usas Ubuntu? Donde sale el error 77?

  3. October 5, 2009 at 4:41 pm

    Gracias Yannick

  4. November 13, 2009 at 2:35 pm

    buen post yannick…lo usé para enviar correos a un cliente y…funciona bien

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: