PHP Autoresponder · 4 min read · Dec 30, 2025

Goldfish, Um Script Autoresponder PHP

Goldfish, Um Script Autoresponder PHP Para As Configurações “Usuários Virtuais E Domínios Com Postfix, Courier, MySQL E SquirrelMail” Do HowtoForge

Versão 1.0
Autor: Falko Timme

Goldfish é um script de autoresponder bastante simples (escrito em PHP) para Postfix. Consiste em apenas um arquivo PHP que pode ser iniciado através de um cronjob. Funciona com nossos tutoriais “Usuários Virtuais E Domínios Com Postfix, Courier, MySQL E SquirrelMail” (não pode ser usado para outras configurações, especialmente configurações do Postfix que não utilizam um banco de dados MySQL).

Não dou nenhuma garantia de que isso funcionará para você!

1 Nota Preliminar

Estou assumindo que você já tem uma configuração funcional de “Usuários Virtuais E Domínios Com Postfix, Courier, MySQL E SquirrelMail”, por exemplo:

  • Usuários Virtuais E Domínios Com Postfix, Courier, MySQL E SquirrelMail (Debian Lenny)
  • Usuários Virtuais E Domínios Com Postfix, Courier, MySQL E SquirrelMail (CentOS 5.3 x86_64)
  • Usuários Virtuais E Domínios Com Postfix, Courier, MySQL E SquirrelMail (Fedora 10)
  • Usuários Virtuais E Domínios Com Postfix, Courier, MySQL E SquirrelMail (Ubuntu 8.10)
  • Usuários Virtuais E Domínios Com Postfix, Courier, MySQL E SquirrelMail (Mandriva 2009.0 i386)

2 Instalando E Usando Goldfish

Primeiro, conectamos ao nosso banco de dados de email MySQL e criamos uma tabela adicional chamada 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;

Depois, baixamos a versão mais recente do goldfish para /tmp e renomeamos o script PHP do goldfish para 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

Em seguida, abrimos autoresponder.php e ajustamos a seção de Configuração. Certifique-se de preencher os detalhes corretos do banco de dados (você pode usar o usuário MySQL mail_admin existente); na linha $conf[‘q_mailbox_path’], certifique-se de substituir o nome da tabela view_users por users:

vi autoresponder.php

| [...] ###################################### # Configuração # ###################################### /* Geral */ $conf['cycle'] = 5 * 60; /* Registro */ $conf['log_file_path'] = "/var/log/goldfish"; $conf['write_log'] = true; /* Informações do banco de dados */ $conf['mysql_host'] = "localhost"; $conf['mysql_user'] = "mail_admin"; $conf['mysql_password'] = "mail_admin_password"; $conf['mysql_database'] = "mail"; /* Consultas do banco de dados */ # Esta consulta deve retornar o caminho (`path`) do correspondente # maildir-Mailbox com o endereço de 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'"; # Esta consulta deve retornar os seguintes campos da tabela autoresponder: `from`, `to`, `email`, `message` onde `enabled` = 2 $conf['q_forwardings'] = "SELECT * FROM `autoresponder` WHERE `enabled` = 1"; # Esta consulta deve desabilitar cada entrada de autoresponder que terminou no passado $conf['q_disable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 0 WHERE `to` < CURDATE();"; # Esta consulta deve ativar cada entrada de autoresponder que começa hoje $conf['q_enable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 1 WHERE `from` = CURDATE();"; # Esta consulta deve retornar a mensagem de uma entrada de autoresponder identificada pelo email %m $conf['q_messages'] = "SELECT `message` FROM `autoresponder` WHERE `email` = '%m'"; # Esta consulta deve retornar o assunto da entrada de autoresponder identificada pelo email %m $conf['q_subject'] = "SELECT `subject` FROM `autoresponder` WHERE `email` = '%m'"; [...] |

Depois, movemos autoresponder.php para /usr/local/bin, tornamos-o propriedade do usuário e grupo vmail, e o tornamos executável:

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

Agora criamos o arquivo de log /var/log/goldfish e o tornamos propriedade do usuário e grupo vmail:

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

Quero que autoresponder.php seja executado a cada cinco minutos, portanto, crio um cron job para ele que será executado pelo usuário vmail:

crontab -u vmail -e

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

É isso! Agora você pode criar autoresponders na tabela autoresponder, por exemplo, com phpMyAdmin ou na linha de comando, por exemplo, da seguinte forma:

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', 'Estarei fora na semana de 8 de junho com acesso muito limitado ao email.\r\nResponderei o mais rápido possível.\r\nObrigado!\r\nFalko', 1, 'Fora do Escritório');
quit;

Isso cria um autoresponder para o endereço de email [email protected] que está ativo entre 8 de junho de 2009 e 12 de junho de 2009. Como o cron job do autoresponder é executado apenas a cada cinco minutos, a mensagem do autoresponder não será enviada imediatamente, mas dentro de cinco minutos após um email ser enviado para o endereço [email protected].

Você deve ver algo como isto no arquivo de log /var/log/goldfish sempre que um autoresponder for enviado do endereço [email protected]:

2009-06-08 07:00:01 Conexão com o banco de dados estabelecida com sucesso  
2009-06-08 07:00:01 Banco de dados selecionado com sucesso  
2009-06-08 07:00:01 Banco de dados atualizado com sucesso (entradas desabilitadas)  
2009-06-08 07:00:01 Banco de dados atualizado com sucesso (entradas habilitadas)  
2009-06-08 07:00:01 Diretórios maildir recuperados com sucesso  
2009-06-08 07:00:01 Assunto de [email protected] recuperado com sucesso  
2009-06-08 07:00:01 Mensagem de [email protected] recuperada com sucesso  
2009-06-08 07:00:02 --------- Fim da execução ------------

3 Links

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.