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.

Más artículos