Hola chicos y chicas, hoy vamos a aprender a configurar el formulario de Matt (FormMail.pl). Ahora puede que esteis muy lejos de conseguirlo pero siguiendo con cuidado una serie de pasos estareis más cerca de conseguirlo.
Ayer fui al Matt’s Script Archive a por el FormMail para hacer unos formularios de contacto para Sekano Triops, Jardín Natural y Sekano Blogs. Ya lo instale en 2000 en alguna de mis viejas webs ahora medio muertas (BioFaciWeb) pero esta vez me ha resultado más complicado pues la seguridad ha aumentado debido a la avalancha spam que antes apenas era preocupante. Además todavía no me defiendo bien manejando solito un servidor en Linux.
Este sencillo pero exitoso CGI fue escrito en Perl en 1997 y en su versión actual su tamaño sigue siendo muy reducido (28,9 KiB). Para configurarlo sólo hay que modificar un máximo de 4 valores.
Comprobar si CGI está activado en el servidor (y activarlo si no lo está)
Esta instalación es para CentOS y es la más rara. Las rutas de los archivos que intervienen en el buen funcionamiento de FormMail.pl no son las habituales en el resto de Linux como Fedora. Lo primero es comprobar si el servidor permite la ejecución de scripts CGI, ya que esto puede estar desactivado:
En caso de no obtener una respuesta satisfactoria puede aparecer un error 404 (Not Found – The requested URL /cgi-bin//test/test.cgi was not found on this server). Tenemos que activar CGI en Ajustes de Alojamiento Web desde Plesk. Siento no poder explicar otro modo para quien no tenga panel Plesk. La respuesta satisfactoria la reconocereis en seguida (HTTP_USER_AGENT Mozilla/5.0 (X11; U; Linux x86_64; es-ES; rv:1.9.1.7) Gecko/20100106 Ubuntu/9.10 (karmic) Firefox/3.5.7).
Subir FormMail.pl al servidor y configurar los permisos para el archivo
En este punto perdí bastante tiempo porque subía FormMail.pl a una carpeta cgi-bin creada por mi en httpdocs. Hasta que descubrí que la carpeta correcta de cgi-bin ya estaba creada en la raíz del directorio, un nivel por debajo de httpdocs.
Por defecto los archivos subidos al servidor adquieren la combinación 644 de permisos pero esto hay que cambiarlo a 755 para que el script FormMail.pl funcione. Esto significa que todo el mundo (propietario, grupo y público) podrá leer y ejecutar el script.
Como siempre, paso a paso y comprobaciones cuando se pueda. Si la URL anterior os devuelve un error 500 de tipo Internal Server Error (The server encountered an internal error or misconfiguration and was unable to complete your request bla bla bla) es que algo está mal configurado. Revisad la ruta, las mayúsculas, los nombres de archivo y los permisos. Nota: el script funcionará igual tenga extensión pl o cgi.
La respuesta satisfactoria es mucho más agradable pero no significa que todas las pruebas están superadas. Aun pueden fallar varias cosas y no es por ser agorero.
Configurando mailprog en FormMail.pl
FormMail puede funcionar aparentemente con este dato mal configurado. Las comprobaciones Test1 y Test 2 pueden devolver resultados satisfactorios pero no llega nada al correo. Este error es bastante habitual y lo explican en la misma página de Matt. Desde una terminal hay que conectarse al servidor y buscar Hay que usar el comando which sendmail para localizar la ruta de sendmail. En CentOS la ruta de sendmail es /usr/sbin/sendmail con lo que la línea de mailprog nos queda así:
Configurando referers en FormMail.pl
Los referers son los dominios a los que se permite el envio de datos con FormMail.pl. Al principio mucha gente gorroneaba los CGI de otras personas para su propio uso. Esto no es posible con las versiones actuales.
La única complicación es averiguar la IP de nuestro servidor pero si estas leyendo esto no creo que tengas dudas. En Linux abre una terminal y teclea ping tudominio.com. Luego cierra la terminal pero si la dejas abierta acuérdate de detener la orden con CTRL+C. En Windows abre un Command.com desde Inicio > Ejecutar y teclea lo mismo. No hace falta detenerlo pues Windows sólo hace 3 pings y se para sólo.
Sustituye los datos entre paréntesis y no pongas www delante del dominio. Respeta las comillas simples y el script te respetará a ti también. Si quieres usar el mismo FormMail para formularios en varios dominios, esto también se puede hacer. Consulta la documentación o el README descargado junto al FormMail. En mi caso es muy sencillo porque los 3 dominios están en el mismo servidor y tienen la misma IP.
Configurando recipients y valid_ENV en FormMail.pl
Puede dejarse tal y como está la línea por defecto si los receptores de los mensajes son buzones de correo pertenecientes a los dominios incluidos en referers. Para enviar, por ejemplo, correos a quiensea@gmail.com consultar la sintaxis de la documentación.
La última línea editable de FormMail.pl es la que se refiere a valid_ENV. Esta también se suele dejar por defecto. REMOTE_ADDR es para recibir la IP de quien envía el formulario. Esto es relativamente útil ya que nunca vamos a tener que usar esa información pero en ocasiones puede ayudarnos el poder localizar la máquina desde la que se envió tal mensaje. Para conocer más estas environment variables os remito a The CGI Resource Index.
Bueno amigos, esto ha sido todo por hoy. Como ya tenemos un FormMail funcionando a pleno rendimiento, mañana o pasado aprenderemos a preparar un buen formulario para nuestra página web.