PHP Autoresponder · 4 min read · Dec 30, 2025

Goldfish, uno script PHP per autoresponder

Goldfish, uno script PHP per autoresponder per le configurazioni “Virtual Users And Domains With Postfix, Courier, MySQL And SquirrelMail” di HowtoForge

Versione 1.0
Autore: Falko Timme

Goldfish è uno script per autoresponder piuttosto semplice (scritto in PHP) per Postfix. Consiste in un solo file PHP che può essere avviato tramite un cronjob. Funziona con i nostri tutorial “Virtual Users And Domains With Postfix, Courier, MySQL And SquirrelMail” (non può essere utilizzato per altre configurazioni, specialmente configurazioni Postfix che non utilizzano un database MySQL).

Non rilascio alcuna garanzia che questo funzionerà per te!

1 Nota preliminare

Presumo che tu abbia già una configurazione funzionante “Virtual Users And Domains With Postfix, Courier, MySQL And SquirrelMail”, ad esempio:

  • Virtual Users And Domains With Postfix, Courier, MySQL And SquirrelMail (Debian Lenny)
  • Virtual Users And Domains With Postfix, Courier, MySQL And SquirrelMail (CentOS 5.3 x86_64)
  • Virtual Users And Domains With Postfix, Courier, MySQL And SquirrelMail (Fedora 10)
  • Virtual Users And Domains With Postfix, Courier, MySQL And SquirrelMail (Ubuntu 8.10)
  • Virtual Users And Domains With Postfix, Courier, MySQL And SquirrelMail (Mandriva 2009.0 i386)

2 Installazione e utilizzo di Goldfish

Prima ci connettiamo al nostro database di posta MySQL e creiamo una tabella aggiuntiva chiamata 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;

Dopo scarichiamo l’ultima versione di goldfish in /tmp e rinominiamo lo script PHP goldfish in 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

Poi apriamo autoresponder.php e regoliamo la sezione di configurazione. Assicurati di inserire i dettagli corretti del database (puoi usare l’utente MySQL mail_admin esistente); nella riga $conf[‘q_mailbox_path’], assicurati di sostituire il nome della tabella view_users con users:

vi autoresponder.php

| [...] ###################################### # Configurazione # ###################################### /* Generale */ $conf['cycle'] = 5 * 60; /* Logging */ $conf['log_file_path'] = "/var/log/goldfish"; $conf['write_log'] = true; /* Informazioni sul database */ $conf['mysql_host'] = "localhost"; $conf['mysql_user'] = "mail_admin"; $conf['mysql_password'] = "mail_admin_password"; $conf['mysql_database'] = "mail"; /* Query del database */ # Questa query deve restituire il percorso (`path`) della corrispondente # maildir-Mailbox con indirizzo email %m $conf['q_mailbox_path'] = "SELECT CONCAT('/home/vmail/', SUBSTRING_INDEX(email,'@',-1), '/', SUBSTRING_INDEX(email,'@',1), '/') as `path` FROM users WHERE `email` = '%m'"; # Questa query deve restituire i seguenti campi dalla tabella autoresponder: `from`, `to`, `email`, `message` dove `enabled` = 2 $conf['q_forwardings'] = "SELECT * FROM `autoresponder` WHERE `enabled` = 1"; # Questa query deve disabilitare ogni voce di autoresponder che è scaduta $conf['q_disable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 0 WHERE `to` < CURDATE();"; # Questa query deve attivare ogni voce di autoresponder che inizia oggi $conf['q_enable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 1 WHERE `from` = CURDATE();"; # Questa query deve restituire il messaggio di una voce di autoresponder identificata dall'email %m $conf['q_messages'] = "SELECT `message` FROM `autoresponder` WHERE `email` = '%m'"; # Questa query deve restituire l'oggetto della voce di autoresponder identificata dall'email %m $conf['q_subject'] = "SELECT `subject` FROM `autoresponder` WHERE `email` = '%m'"; [...] |

Dopo spostiamo autoresponder.php in /usr/local/bin, rendiamolo di proprietà dell’utente e del gruppo vmail, e rendiamolo eseguibile:

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

Ora creiamo il file di log /var/log/goldfish e rendiamolo di proprietà dell’utente e del gruppo vmail:

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

Voglio che autoresponder.php venga eseguito ogni cinque minuti, quindi creo un cron job per esso che sarà eseguito dall’utente vmail:

crontab -u vmail -e

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

Questo è tutto! Ora puoi creare autoresponder nella tabella autoresponder, ad esempio con phpMyAdmin o dalla riga di comando, ad esempio come segue:

mysql -u root -p
USE mail;
INSERT INTO `autoresponder` (`email`, `descname`, `from`, `to`, `message`, `enabled`, `subject`) VALUES('[email protected]', '[email protected] Autoresponder', '2009-06-08', '2009-06-12', 'Sarò assente nella settimana dell'8 giugno con accesso molto limitato all'email.\r\nRisponderò il prima possibile.\r\nGrazie!\r\nFalko', 1, 'Fuori ufficio');
quit;

Questo crea un autoresponder per l’indirizzo email [email protected] che è attivo tra l’8 giugno 2009 e il 12 giugno 2009. Poiché il cron job dell’autoresponder viene eseguito solo ogni cinque minuti, il messaggio dell’autoresponder non verrà inviato immediatamente, ma entro cinque minuti dopo che un’email è stata inviata all’indirizzo [email protected].

Dovresti vedere qualcosa del genere nel file di log /var/log/goldfish ogni volta che un autoresponder viene inviato dall’indirizzo [email protected]:

2009-06-08 07:00:01 Connessione al database stabilita con successo  
2009-06-08 07:00:01 Database selezionato con successo  
2009-06-08 07:00:01 Database aggiornato con successo (voci disabilitate)  
2009-06-08 07:00:01 Database aggiornato con successo (voci abilitate)  
2009-06-08 07:00:01 Directory maildir recuperate con successo  
2009-06-08 07:00:01 Oggetto di [email protected] recuperato con successo  
2009-06-08 07:00:01 Messaggio di [email protected] recuperato con successo  
2009-06-08 07:00:02 --------- Fine esecuzione ------------

3 Link

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.