PHP Autoresponder · 4 min read · Dec 30, 2025

Goldfish, Un Script Autorespondedor PHP

Goldfish, Un Script Autorespondedor PHP Para Las Configuraciones “Usuarios Virtuales Y Dominios Con Postfix, Courier, MySQL Y SquirrelMail”

Versión 1.0
Autor: Falko Timme

Goldfish es un script autorespondedor bastante simple (escrito en PHP) para Postfix. Consiste en un solo archivo PHP que se puede iniciar a través de un cronjob. Funciona con nuestros tutoriales “Usuarios Virtuales Y Dominios Con Postfix, Courier, MySQL Y SquirrelMail” (no se puede usar para otras configuraciones, especialmente configuraciones de Postfix que no utilizan una base de datos MySQL).

¡No emito ninguna garantía de que esto funcione para ti!

1 Nota Preliminar

Asumo que ya tienes una configuración funcional de “Usuarios Virtuales Y Dominios Con Postfix, Courier, MySQL Y SquirrelMail”, por ejemplo:

  • Usuarios Virtuales Y Dominios Con Postfix, Courier, MySQL Y SquirrelMail (Debian Lenny)
  • Usuarios Virtuales Y Dominios Con Postfix, Courier, MySQL Y SquirrelMail (CentOS 5.3 x86_64)
  • Usuarios Virtuales Y Dominios Con Postfix, Courier, MySQL Y SquirrelMail (Fedora 10)
  • Usuarios Virtuales Y Dominios Con Postfix, Courier, MySQL Y SquirrelMail (Ubuntu 8.10)
  • Usuarios Virtuales Y Dominios Con Postfix, Courier, MySQL Y SquirrelMail (Mandriva 2009.0 i386)

2 Instalando Y Usando Goldfish

Primero nos conectamos a nuestra base de datos de correo MySQL y creamos una tabla adicional llamada autoresponder:

mysql -u root -p
USE mail;
CREATE TABLE `autoresponder` (  
`email` varchar(255) NOT NULL default '',  
`descname` varchar(255) default NULL,  
`from` date NOT NULL default '0000-00-00',  
`to` date NOT NULL default '0000-00-00',  
`message` text NOT NULL,  
`enabled` tinyint(4) NOT NULL default '0',  
`subject` varchar(255) NOT NULL default '',  
PRIMARY KEY (`email`),  
FULLTEXT KEY `message` (`message`)  
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
quit;

Después descargamos la última versión de goldfish a /tmp y renombramos el script PHP de goldfish a autoresponder.php:

cd /tmp  
wget http://remofritzsche.ch/goldfish/download/current.tar.gz  
tar xvfz current.tar.gz  
cd goldfish-002p1/  
mv goldfish-002-p1.php autoresponder.php

Luego abrimos autoresponder.php y ajustamos la sección de Configuración. Asegúrate de llenar los detalles correctos de la base de datos (puedes usar el usuario MySQL mail_admin existente); en la línea $conf[‘q_mailbox_path’], asegúrate de reemplazar el nombre de la tabla view_users con users:

vi autoresponder.php

| [...] ###################################### # Configuración # ###################################### /* General */ $conf['cycle'] = 5 * 60; /* Registro */ $conf['log_file_path'] = "/var/log/goldfish"; $conf['write_log'] = true; /* Información de la base de datos */ $conf['mysql_host'] = "localhost"; $conf['mysql_user'] = "mail_admin"; $conf['mysql_password'] = "mail_admin_password"; $conf['mysql_database'] = "mail"; /* Consultas a la base de datos */ # Esta consulta tiene que devolver la ruta (`path`) del correspondiente # maildir-Mailbox con la dirección de correo electrónico %m $conf['q_mailbox_path'] = "SELECT CONCAT('/home/vmail/', SUBSTRING_INDEX(email,'@',-1), '/', SUBSTRING_INDEX(email,'@',1), '/') as `path` FROM users WHERE `email` = '%m'"; # Esta consulta tiene que devolver los siguientes campos de la tabla autoresponder: `from`, `to`, `email`, `message` donde `enabled` = 2 $conf['q_forwardings'] = "SELECT * FROM `autoresponder` WHERE `enabled` = 1"; # Esta consulta tiene que desactivar cada entrada de autoresponder que terminó en el pasado $conf['q_disable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 0 WHERE `to` < CURDATE();"; # Esta consulta tiene que activar cada entrada de autoresponder que comienza hoy $conf['q_enable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 1 WHERE `from` = CURDATE();"; # Esta consulta tiene que devolver el mensaje de una entrada de autoresponder identificada por el correo electrónico %m $conf['q_messages'] = "SELECT `message` FROM `autoresponder` WHERE `email` = '%m'"; # Esta consulta tiene que devolver el asunto de la entrada de autoresponder identificada por el correo electrónico %m $conf['q_subject'] = "SELECT `subject` FROM `autoresponder` WHERE `email` = '%m'"; [...] |

Después movemos autoresponder.php a /usr/local/bin, lo hacemos propiedad del usuario y grupo vmail, y lo hacemos ejecutable:

mv autoresponder.php /usr/local/bin
chown vmail:vmail /usr/local/bin/autoresponder.php  
chmod 755 /usr/local/bin/autoresponder.php

Ahora creamos el archivo de registro /var/log/goldfish y lo hacemos propiedad del usuario y grupo vmail:

touch /var/log/goldfish  
chown vmail:vmail /var/log/goldfish

Quiero que autoresponder.php se ejecute cada cinco minutos, por lo tanto, creo un trabajo cron para ello que será ejecutado por el usuario vmail:

crontab -u vmail -e

| */5 * * * * /usr/local/bin/autoresponder.php |

¡Eso es todo! Ahora puedes crear autorespondedores en la tabla autoresponder, por ejemplo, con phpMyAdmin o en la línea de comandos, por ejemplo, de la siguiente manera:

mysql -u root -p
USE mail;
INSERT INTO `autoresponder` (`email`, `descname`, `from`, `to`, `message`, `enabled`, `subject`) VALUES('[email protected]', '[email protected] Autorespondedor', '2009-06-08', '2009-06-12', 'Estaré fuera la semana del 8 de junio con acceso muy limitado al correo electrónico.\r\nResponderé tan pronto como sea posible.\r\n¡Gracias!\r\nFalko', 1, 'Fuera de la Oficina');
quit;

Esto crea un autorespondedor para la dirección de correo electrónico [email protected] que está activo entre el 8 de junio de 2009 y el 12 de junio de 2009. Debido a que el trabajo cron del autorespondedor se ejecuta solo cada cinco minutos, el mensaje del autorespondedor no se enviará de inmediato, sino dentro de los cinco minutos posteriores a que se envíe un correo electrónico a la dirección [email protected].

Deberías ver algo como esto en el archivo de registro /var/log/goldfish cada vez que se envía un autorespondedor desde la dirección [email protected]:

2009-06-08 07:00:01 Conexión a la base de datos establecida con éxito  
2009-06-08 07:00:01 Base de datos seleccionada con éxito  
2009-06-08 07:00:01 Base de datos actualizada con éxito (entradas desactivadas)  
2009-06-08 07:00:01 Base de datos actualizada con éxito (entradas habilitadas)  
2009-06-08 07:00:01 Directorios maildir obtenidos con éxito  
2009-06-08 07:00:01 Asunto de [email protected] obtenido con éxito  
2009-06-08 07:00:01 Mensaje de [email protected] obtenido con éxito  
2009-06-08 07:00:02 --------- Fin de la ejecución ------------

3 Enlaces

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.