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 -pUSE 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.phpLuego 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/binchown vmail:vmail /usr/local/bin/autoresponder.php
chmod 755 /usr/local/bin/autoresponder.phpAhora 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/goldfishQuiero 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 -pUSE 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
- Goldfish: http://www.remofritzsche.ch/goldfish/
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.