Mandando mails desde localhost (Apache Server + Ubuntu)

Hoy por fin me decidí arreglar el local server para poder mandar mails con php. Tenía ya un tiempo posponiendo ese arreglo, pero estoy trabajando en un proyecto que requiere que se envíen correos mediante php. El problema no es php, ya que nos ofrece una función para hacer esto. El problema es que el server generalmente no está configurado para hacer esto. Los pasos a continuación son para ubuntu 10.10, aun que podrían funcionar en otras versiones, y el servidor Apache y php, en mi caso compilados manualmente.

Lo primero que vamos a hacer es instalar postfix. Para esto hay que abrir el terminal y poner:

apt-get install postfix postfix-doc

Quizá tengas que correr el comando con sudo. En mi caso lo he hecho con sudo:

sudo apt-get install postfix postfix-doc

Al moomento de instalar postfix te va a pedir que lo configures. En mi caso yo escogí la opción internet site y de ahí solo le dí OK a todo hasta que terminó la configuración.

Una vez terminada la configuración, hay que decirle a php que use sendmail para enviar los correos.

Hay que abrir php.ini, en mi caso está en /usr/local/lib/php.ini

Este archivo lo podemos modificar de varias manera, pero a mi me gusta gedit:

gksudo gedit /usr/local/lib/php.ini

Ahí hay que localizar la linea que dice

;sendmail_path =

y hay que cambiarla por esto:

sendmail_path = /usr/sbin/sendmail -t -i

después de estoy hay que reiniciar postfix y apache:

sudo /etc/init.d/postfix restart
sudo /usr/local/apache2/bin/apachectl restart

la segunda linea puede que sea diferente en tu caso, todo depende de como instalaste apache.

Listo, ahora debes poder mandar correos desde tu local server. Inicialmente quise mandar correos a hotmail, pero no funcionó. Viendo el log de posfix me encuentro con esto:

Oct 24 14:58:56 imbuzu-laptop postfix/smtp[29662]: 10BF82AA07B: to=<mymailhere@hotmail.com>, relay=mx1.hotmail.com[65.55.37.88]:25, delay=12, delays=0.1/0.03/11/0.91, dsn=5.0.0, status=bounced (host mx1.hotmail.com[65.55.37.88] said: 550 DY-001 Unfortunately, messages from my.IP.here.oo weren’t sent. Please contact your Internet service provider. You can tell them that Hotmail does not relay dynamically-assigned IP ranges. You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors. (in reply to MAIL FROM command))

 

Eso solo quiere decir que hotmail no acepta correos desde IPs dinámicas, si eres suertudo, tu ISP te ha asignado una IP estática, de otro modo, como yo, tienes una IP dinámica y correos a hotmail no van a llegar. En mi caso estoy usando Gmail que no pone peros.

Espero les sirva.

Para esto me fueron de ayuda los siguientes sitios:

http://serverfault.com/questions/142098/how-to-configure-my-local-server-to-send-email

https://help.ubuntu.com/8.04/serverguide/C/postfix.html (solo la parte del reconfigure. Inicialmente no configuré postfix)

18 thoughts on “Mandando mails desde localhost (Apache Server + Ubuntu)

  1. Hola Buzu, me podrías echar un cable con unos ToolTips? Es lo mismo que ayudaste a arreglar en otra web (respondiendo en un post) y bueno, a este código no le he podido quitar ese “defecto” que trae de casa.

    Y nada, enhorabuena por tu blog, me ha servido bastante para comprender unas cosillas. Hasta luego.

    1. Hola, que codigo es? y que quieres hacer? Disculpa paero la verdad es que no recuerdo de que tool tips me hablas.

      1. Gracias por responderme 🙂 bueno, te paso el link y me comentas.

        Sinceramente no se si esto es SPAM, no quiero ningún problema, borralo sin problema el link que te paso.

        http://xyberneticos.com/index.php/2007/08/31/sweet-titles-bonitos-tooltips-semi-transparente-para-nuestros-enlaces/

        Ayudaste a un chico con unos ToolTips y este me funciona pero no consigo ponerlo de tal manera que el ToolTip salga desde una imagen, al intentar ponerlo desde imagen me sale bien pero abajo de lo que escribo me sale la URL de la imagen dentro del tooltip y bueno, eso era. Si ves que no, no pasa nada, gracias de antemano.

        Saludos.

        P.D. Recurro a ti porque veo que eres bueno en este tema y compartes cosas, a lo mejor podría ser un post de este blog, que al menos a mí me ha ayudado mucho en temas de páginas web.

      2. Si lo que quieres es borrar el enlace, fijate en la linea 77 del script. Ahí es donde se agrega el enlace.

  2. Hola Buzu, espero no quitarte tiempo valioso, es que me olvidé una cosa, te muestro como ejemplo el ToolTip ya aplicado a lo que necesito, si no te importa:
    http://darken.servebeer.com/enlaces/tooltip/tooltip.php

    Y aquí te subo el archivo exacto que estoy usando junto a los dos archivos *.js:
    http://www.megaupload.com/?d=O371LCY2

    El problema reside en que, la URL de la imagen de la cuál quiero que salga el ToolTip, aparece dentro del ToolTip. Pero lo peor creo yo no es eso amigo, es que solo ocurre en FireFox y en Chrome, en IE no sale la URL de la imagen. Como imaginarás, esas modificaciones chapuzas las he echo yo con mi nivel medio-bajo de html y php, y yo creo que algo se me escapa. El ToolTip en si, tal y como está en la web de su creador funciona perfectamente en los 3 navegadores que nombré, al yo modificar el código para que salga el ToolTip desde una imagen, la URL de la imagen que utilizo, aparece dentro del ToolTip.

    Perdona las molestias que te pueda ocasionar, y gracias nuevamente.

    1. Como te dije, en la linea 77 del script original es donde se agrega el enlace. No ses que es lo que tu modificaste del script, pero bueno, la solución sigue siendo la misma. Borra esto
      if ( anch.nodeName.toLowerCase() == ‘a’ ) {

      addy = (anch.href.length > 25 ? anch.href.toString().substring(0,25)+”…” : anch.href);

      var access = ( anch.accessKey ? ‘ [‘+anch.accessKey+’] ‘ : ” );

      } else {

      addy = anch.firstChild.nodeValue;

      }

      1. Perdona por haber tardado en responder, lo he solucionado con una ayuda que hay en el mismo post del ToolTip, concretamente esto:

        Para los que no han podido quitar la URL del tooltip, basta con cambiar:
        div#toolTip p em {
        display: block;
        margin-top:3px;
        color:#f60;
        font-style:normal;
        font-weight:bold;
        }

        Por:

        div#toolTip p em {
        display: none;
        }

        Y lo que hacen es ocultarl el em, que es la parte que trae la URL.

        Otra idea que tengo, es que se podría cambiando esta linea del js:
        this.tip.innerHTML = “”+anch.getAttribute(‘tip’)+””+access+addy+””;
        Por algo asi:
        this.tip.innerHTML = “”+anch.getAttribute(‘tip’)+””;
        Y asi no se genera el que es lo que trae la URL…

        Opté por usar la primera solución, espero que eso no conlleve a futuros errores en el ToolTip, muchas gracias amigo y espero que tengas mucha suerte con el blog que a muchos nos es de gran ayuda.

        Saludos.

      2. DaRKeN, lo estás haciendo mal. Te voy a decir tu error en ambas opciones.

        En tu primer opción solo estás ocultando la parte que no quieres. Eso es precisamente lo que quiere lograr, que no se vea esa parte. El problema es que no tiene sentido generar un contenido para después ocultarlo. Imagina que hay 200 enlaces en una página y todos ellos usan ese tooltip. Estas corriendo una pieza del script para nada. Eso no es algo inteligente.

        En la segunda opción el error es el mismo, generar una parte del código que nunca se va a usar.

        En ambos casos estás desperdiciando recursos que el cliente podría usar en otra cosa o simplemente tenerlos disponibles. Es más, pudiera ser que tu mismo estés limitando los recursos de algún otro script en tu mismo sitio que si los necesita pero que no los puede usar por que están siendo usados por una pieza de código que no vas a usar en ningún momento.

        Desgraciadamente haz escogido el peor de ambos casos ya que no solo generas el texto que no quieres, sino que lo usas. Estás poniendo el texto en el tooltip para luego simplemente darle más trabajo al navegador buscando y escondiendo dicho texto.

        Como vez tu solución no es la mejor. Lo que tienes que hacer en casos como este, es cortar el problema de raíz. En otras palabras, borrar el código que no se va a usar. Lo que yo te dije que hicieras es el primer paso en la dirección correcta.

  3. Eso era lo que realmente necesitaba saber, muchísimas gracias, ahora si, he quitado esa parte del código y funciona de lujo 🙂

    El cambio erróneo que hice en la parte del style, me imagino que podré dejarlo así, sin riesgo a nada no?

    Un saludo y gracias por tu tiempo y compartir lo que conoces.

    1. Si, lo puedes dejar así, pero nuevamente estarías haciendo al navegador trabajar de más. No es realmente malo, pero es mejor si lo quitas.

  4. Excelente post, lo probé desde un sitio con Ip Fija y funciona de maravilla, recibe mail en hotmail. yahoo, gmail y todos, excelente, muchas gracias por tu aporte fue genial.

Comments are closed.