2010/01/23

Resolviendo el Mercury de XAMPP

XAMPP es un conveniente paquete que contiene Apache, PHP, MySQL y otros programas para facilitar la instalación y uso de un entorno de desarrollo PHP. Lo vengo usando satisfactoriamente desde hace varios meses. Sin embargo, me enfrasqué en un problema cuando necesité usar el Mercury que trae incluido para enviar emails. Aparentemente no funcionaba. Buscando y navegando mucho por internet, encontré estas páginas que me ayudaron a resolver el problema:
El primer enlace da una secuencia detallada de pasos. Muchos comentan que les funcionó muy bien, pero yo tuve un problema. Veía que las ventanas de los varios monitores que muestra Mercury decían offline, y un comando "telnet localhost 25" ejecutado en la consola me devolvía "Could not open connection to the host, on port 25".
Entonces, encontré el segundo enlace, donde un forista comentaba que los mensajes de offline se debían a un bug del módulo MercuryX y se debía deshabilitar. Así lo hice y, al reiniciar, el administrador de Mercury funcionó :-D, se enviaron los mensajes de prueba que tenía atascados e incluso pude hacer una prueba usando el telnet.

Resúmen de pasos

La idea del relay es usar un servidor SMTP externo, como el de GMail, para que Mercury envíe el correo a través de él. En teoría sería posible también usar un SMTP en localhost, pero como algunos proveedores no permiten que sus usuarios envíen correo de ese modo, el uso del relay parece más general.
En el archivo xampp/php/php.ini, ubicar las líneas correspondientes a [mail function] y editarlas para que quede algo como:

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = postmaster@localhost

A continuación, configurar Mercury. En el administrador de Mercury (que se abre al pulsar su botón Admin en el panel de control de XAMPP), entrar a las opción de menú indicadas por cada título y realizar los cambios que se indican:

Configuration/Protocol modules...

Note que se han desahabilitado MercuryE y MercuryX, y se ha habilitado Mercury C.


Luego de desactivar/activar módulos es necesario reiniciar Mercury (salir del administrador y volver a entrar).


Configuration/Mercury core module...

 

Configuration/MercuryS SMTP server

El nombre en "Announce..." puede ser cualquiera. El IP es el del localhost (la página dice que usar el IP de la intranet, 192.168.x.x, no le funcionó).

 
Aquí se modifica la restricción para que se permita conexiones en el rango 127.0.0.1-127.0.0.1
Pero el punto más importante es desmarcar la casilla "Do not permit SMTP relaying of non-local-email"

Configuration/MercuryC SMTP client

Aquí indico que se use el SMTP server de gmail, según las recomendaciones de su página y usando el puerto 587 para SSL con STARTTLS. Si es su caso, verifique que el nombre de usuario incluya @gmail.com

Configuration/Manage local users

Se agrega el usuario postmaster, con privilegio de administrador.

36 comentarios:

  1. Probé esta configuración con Windows 7 Home Basic, XAMPP 1.7.1 y funcionaba un rato sí y otras obtenía un mensaje de servicio no disponible. Tanto usando un script PHP como telnet.

    Finalmente, estoy usando FreeSMTP en lugar del Mercury Mail y parece que la vida es más simple :)
    Pueden descargarlo de http://www.softstack.com/freesmtp.html

    ResponderBorrar
  2. Compañero, para serle sincero, soy de esas personas que nunca responden los post de los blogs.

    Pero este me ha ayudado como ningun otro.

    Solo quiero rescatar algo, y es que, al principio, cuando se desactivan/activan los modulos, se debe REINICIAR el Mercury para que los cambios surtan efecto...

    Despues de eso, el manual es PERFECTO amigo, muchas gracias.

    ResponderBorrar
  3. Que bueno que te fue de ayuda, me alegra. Gracias también por la observación, ya la agregué al artículo.

    ResponderBorrar
  4. Excelente post me ayudo a resolver mi problema que tenia gracias!!!! saludos

    ResponderBorrar
  5. Anónimo10:32 p.m.

    Gracias hermano

    ResponderBorrar
  6. Anónimo3:32 p.m.

    Muchísimas gracias!
    Me estaba volviendo loco para que funcione mail(); desde el localhost

    Recomendadísimo

    ResponderBorrar
  7. Anónimo3:57 p.m.

    esta dos tres

    ResponderBorrar
  8. Anónimo9:59 a.m.

    gracias funciono

    ResponderBorrar
  9. Anónimo1:43 a.m.

    Gracias hermano, la verdad ya me iba a rendir con Mercury, entre para probar el FreeSMTP, sin embargo, probé por última vez con este tutorial (ya había probado más de 50 yo creo, todos con la misma carrera del php.ini y el firewall), pero este me solucionó todo. El problema eran los modulos que había que desactivar el Mercury E y el X. ¡¡¡GRACIAS!!!

    ResponderBorrar
  10. Anónimo7:24 p.m.

    GRACIAS. Lo mismo que los anteriores. Tu sí has acertado. Las 50 cosas que había probado anteriormente, no.

    ResponderBorrar
  11. Anónimo10:31 p.m.

    Muchas Gracias, habiado intentado inicialmente con el tutorial
    http://goliatenterrado.es/2009/03/03/configurar-el-mercury32-del-xampp-para-enviar-correos-externos/

    Pero no funcionó y lo combine con este aporte y ahora funciona a la perfeccion, muchisimas gracias

    Que gran aporte...

    ResponderBorrar
  12. gracias hermano me me funcionó a la perfección, pero tengo una duda como uso el Mercury con un dominio propio en vez de gmail por ejemplo

    ResponderBorrar
  13. Buena pregunta. No he resuelto ese caso aún. Si lo resuelvo, tratare de publicarlo también.

    ResponderBorrar
  14. excelente! ahora toca resolver lo del dominio propio, como ser los que se sacan gratuitos del tipo dyn-dns.org o no-ip.org
    muchas gracias ;)

    ResponderBorrar
  15. No puedo leer los mails con el outlook del office, solo con el express. Alguien sabe como solucionar esto por favor?

    ResponderBorrar
  16. Anónimo1:53 p.m.

    gracias!! había algo que me fallaba y lo he repasado como explicas y me funciona bien

    ResponderBorrar
  17. Hola.
    Me funciono para enviar correos a hotmail y demas usando como puente los datos de gmail.

    PERO

    cuando uso otro servidor, por ej, uno de JUST HOST falla la identificiacion.

    Alguna sugerencia???

    ResponderBorrar
  18. Hoy he encontrado que también se puede usar el módulo smtp (SMTP Authentication Support).

    Para más información:
    http://drupal.org/project/smtp

    http://shutterfreak.net/blogs/olivier-biot/2010-06-24/configuring-smtp-server-sending-mail-drupal

    ResponderBorrar
  19. babualbo12:06 a.m.

    Amigo te juro TE AGRADEZCO TU POST... Habia intentado muchas soluciones para enviar correos por localhost, y esta me funciono...

    Muchas, muchas gracias...

    ResponderBorrar
  20. Que bueno que les sea de ayuda. Muchas gracias también por sus comentarios.

    ResponderBorrar
  21. Genial el tutorial...muchas gracias por la ayuda que nos brindaste!!!

    ResponderBorrar
  22. Muchísimas gracias por la info. Me fue de gran ayuda.

    ResponderBorrar
  23. Hice todos los pasos y no me funciono. Tengo 2 correos pendientes y ya me empiezo a frustar. No tengo casi ningun conocimiento en el area informatica y por eso necesito guia.

    En Mercury S SMTP server
    Logging
    - session logging

    Este campo me aparece vacio. Supuse que como dice "session logging" busca la carpeta de session, asi que puse ahí mi direccion en C de la carpeta session:

    c:\\xamp\mercurymail\sessions\mercurys

    En Mercury C SMTP server

    General

    General log file y Session logging directory tambien me aparecen vacios.
    En Log file atine a colocar la carpeta de logs de mercuryc : "c:\\....logs\mercuryc"
    Y en session logging directory lo mismo pern en sesion
    "c:\\...sessions\mercuryc


    Todos los otros pasos los he seguido, pero aún nada.
    Gracias por la respuesta.

    ResponderBorrar
    Respuestas
    1. Anónimo11:54 p.m.

      Me pasa lo mismo encontraste alguna solución?

      Borrar
  24. Muchas Gracias, funciona perfectamente.

    Saludos!!

    ResponderBorrar
  25. Excelente información!!! si se pudieran dar puntos de daria de una escala de 0-10 los 10+2 waaa MUCHAS GRACIAS POR EL APORTE =D ahora a trabajarle cn eso de gmail.. pero el trabajo duro tu ya no los simplificaste

    ResponderBorrar
  26. Anónimo10:48 a.m.

    Amigo, funciona a la perfección desde ya mis felicitaciones y muchas gracias por el tutorial

    ResponderBorrar
  27. Anónimo11:36 a.m.

    Que tal antes que nada felicidades por el tutorial pero tengo un problema en parte de XAMPP 1.7 estado de los servicios el de SMTP Server esta como desactivado ¿no sabes como podria activarlo?

    Gracias

    ResponderBorrar
    Respuestas
    1. No estoy seguro de entender la pregunta... has probado entrar a Configuration/Protocol modules y activar el módulo SMTP Server?

      Borrar
  28. Anónimo4:04 p.m.

    Hola, muchas gracias por tu aporte, es muy bueno...

    Yo tengo un problema al enviar un correo electrónico, en Mercury SMTP Client (relay version) me aparece:
    FAILED
    ERROR FF SERVICING QUEUE JOB

    Esto se debe cuando envío el correo electrónico y lo pone en cola, pero nunca me manda el correo, no se si me puedes ayuda?

    Gracias de ante mano!!!
    Leandro

    ResponderBorrar
  29. Anónimo2:39 p.m.

    Hola!

    Gracias por el aporte, está muy bueno el tutorial..

    Una duda, lo hice tal cual lo tienes y el mail me lo envía perfecto desde el mercury (con Ctrl N) pero cuando quiero enviar con un script de php con la función mail:



    me pone que se envió, pero no llega nada, ni a los no deseados ni nada.. No me marca ningún error, está mal mi script?

    ResponderBorrar
    Respuestas
    1. Hola, no aparece el código de tu script en tu mensaje...
      Pero diría que, además de verificar el código (y que esté activado mostrar los mensajes de error), verifiques en php.ini el bloque [mail function]

      Borrar
  30. Pues a mi me va a medias.
    Desde Mercury si puedo enviar correos pero desde el codigo php no puedo hacerlo.
    Alguien me podria ayudar?

    ResponderBorrar
  31. Hola a mi no me acepta los cambios de activar/desactivar los módulos de Mercury acepto los cambios y reinicio Mercury y los módulos se vuelven a activar como estaban inicialmente haber si me puedes ayudar con esto tengo la versión 4.6 de Mercury.

    ResponderBorrar
  32. Anónimo10:09 p.m.

    ayuda por favor soy novato y tengo este error
    Error: Mercury shutdown unexpectedly.
    10:06:00 p.m. [mercury] This may be due to a blocked port, missing dependencies,
    10:06:00 p.m. [mercury] improper privileges, a crash, or a shutdown by another method.
    10:06:00 p.m. [mercury] Press the Logs button to view error logs and check
    10:06:00 p.m. [mercury] the Windows Event Viewer for more clues
    10:06:00 p.m. [mercury] If you need more help, copy and post this
    10:06:00 p.m. [mercury] entire log window on the forums

    ResponderBorrar