PHP Script · 4 min read · Dec 30, 2025

Goldfish, Un Script Autorespondeur PHP

Goldfish, Un Script Autorespondeur PHP Pour Les Configurations “Utilisateurs Virtuels Et Domaines Avec Postfix, Courier, MySQL Et SquirrelMail” De HowtoForge

Version 1.0
Auteur : Falko Timme

Goldfish est un script autorespondeur assez simple (écrit en PHP) pour Postfix. Il se compose d’un seul fichier PHP qui peut être lancé via un cronjob. Il fonctionne avec nos tutoriels “Utilisateurs Virtuels Et Domaines Avec Postfix, Courier, MySQL Et SquirrelMail” (il ne peut pas être utilisé pour d’autres configurations, en particulier les configurations Postfix qui n’utilisent pas de base de données MySQL).

Je ne donne aucune garantie que cela fonctionnera pour vous !

1 Remarque Préliminaire

Je suppose que vous avez déjà une configuration fonctionnelle “Utilisateurs Virtuels Et Domaines Avec Postfix, Courier, MySQL Et SquirrelMail”, par exemple :

  • Utilisateurs Virtuels Et Domaines Avec Postfix, Courier, MySQL Et SquirrelMail (Debian Lenny)
  • Utilisateurs Virtuels Et Domaines Avec Postfix, Courier, MySQL Et SquirrelMail (CentOS 5.3 x86_64)
  • Utilisateurs Virtuels Et Domaines Avec Postfix, Courier, MySQL Et SquirrelMail (Fedora 10)
  • Utilisateurs Virtuels Et Domaines Avec Postfix, Courier, MySQL Et SquirrelMail (Ubuntu 8.10)
  • Utilisateurs Virtuels Et Domaines Avec Postfix, Courier, MySQL Et SquirrelMail (Mandriva 2009.0 i386)

2 Installation Et Utilisation De Goldfish

Tout d’abord, nous nous connectons à notre base de données de messagerie MySQL et créons une table supplémentaire appelée 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;

Ensuite, nous téléchargeons la dernière version de goldfish dans /tmp et renommons le script PHP goldfish en 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

Puis nous ouvrons autoresponder.php et ajustons la section Configuration. Assurez-vous de remplir les détails de la base de données corrects (vous pouvez utiliser l’utilisateur MySQL mail_admin existant) ; dans la ligne $conf[‘q_mailbox_path’], assurez-vous de remplacer le nom de la table view_users par users :

vi autoresponder.php

| [...] ###################################### # Configuration # ###################################### /* Général */ $conf['cycle'] = 5 * 60; /* Journalisation */ $conf['log_file_path'] = "/var/log/goldfish"; $conf['write_log'] = true; /* Informations sur la base de données */ $conf['mysql_host'] = "localhost"; $conf['mysql_user'] = "mail_admin"; $conf['mysql_password'] = "mail_admin_password"; $conf['mysql_database'] = "mail"; /* Requêtes de base de données */ # Cette requête doit retourner le chemin (`path`) de la boîte aux lettres maildir correspondante avec l'adresse e-mail %m $conf['q_mailbox_path'] = "SELECT CONCAT('/home/vmail/', SUBSTRING_INDEX(email,'@',-1), '/', SUBSTRING_INDEX(email,'@',1), '/') as `path` FROM users WHERE `email` = '%m'"; # Cette requête doit retourner les champs suivants de la table autoresponder : `from`, `to`, `email`, `message` où `enabled` = 2 $conf['q_forwardings'] = "SELECT * FROM `autoresponder` WHERE `enabled` = 1"; # Cette requête doit désactiver chaque entrée d'autorespondeur qui a pris fin dans le passé $conf['q_disable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 0 WHERE `to` < CURDATE();"; # Cette requête doit activer chaque entrée d'autorespondeur qui commence aujourd'hui $conf['q_enable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 1 WHERE `from` = CURDATE();"; # Cette requête doit retourner le message d'une entrée d'autorespondeur identifiée par l'e-mail %m $conf['q_messages'] = "SELECT `message` FROM `autoresponder` WHERE `email` = '%m'"; # Cette requête doit retourner le sujet de l'entrée d'autorespondeur identifiée par l'e-mail %m $conf['q_subject'] = "SELECT `subject` FROM `autoresponder` WHERE `email` = '%m'"; [...] |

Ensuite, nous déplaçons autoresponder.php vers /usr/local/bin, le faisons appartenir à l’utilisateur et au groupe vmail, et le rendons exécutable :

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

Maintenant, nous créons le fichier journal /var/log/goldfish et le faisons appartenir à l’utilisateur et au groupe vmail :

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

Je veux que autoresponder.php soit exécuté toutes les cinq minutes, donc je crée un cron job pour cela qui sera exécuté par l’utilisateur vmail :

crontab -u vmail -e

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

C’est tout ! Maintenant, vous pouvez créer des autorespondeurs dans la table autoresponder, par exemple avec phpMyAdmin ou en ligne de commande, par exemple comme suit :

mysql -u root -p
USE mail;
INSERT INTO `autoresponder` (`email`, `descname`, `from`, `to`, `message`, `enabled`, `subject`) VALUES('[email protected]', '[email protected] Autorespondeur', '2009-06-08', '2009-06-12', 'Je serai absent la semaine du 8 juin avec un accès très limité à l'email.\r\nJe répondrai dès que possible.\r\nMerci !\r\nFalko', 1, 'Absent du bureau');
quit;

Cela crée un autorespondeur pour l’adresse e-mail [email protected] qui est actif entre le 8 juin 2009 et le 12 juin 2009. Comme le cron job d’autorespondeur n’est exécuté que toutes les cinq minutes, le message d’autorespondeur ne sera pas envoyé immédiatement, mais dans les cinq minutes suivant l’envoi d’un e-mail à l’adresse [email protected].

Vous devriez voir quelque chose comme ceci dans le fichier journal /var/log/goldfish chaque fois qu’un autorespondeur est envoyé depuis l’adresse [email protected] :

2009-06-08 07:00:01 Connexion à la base de données établie avec succès  
2009-06-08 07:00:01 Base de données sélectionnée avec succès  
2009-06-08 07:00:01 Base de données mise à jour avec succès (entrées désactivées)  
2009-06-08 07:00:01 Base de données mise à jour avec succès (entrées activées)  
2009-06-08 07:00:01 Répertoires maildir récupérés avec succès  
2009-06-08 07:00:01 Sujet de [email protected] récupéré avec succès  
2009-06-08 07:00:01 Message de [email protected] récupéré avec succès  
2009-06-08 07:00:02 --------- Fin d'exécution ------------

3 Liens

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.