PHP Skript · 4 min read · Dec 30, 2025

Goldfisch, Ein PHP-Autoresponder-Skript

Goldfisch, Ein PHP-Autoresponder-Skript Für Die HowtoForge “Virtuelle Benutzer Und Domains Mit Postfix, Courier, MySQL Und SquirrelMail” Setups

Version 1.0
Autor: Falko Timme

Goldfisch ist ein ziemlich einfaches Autoresponder-Skript (geschrieben in PHP) für Postfix. Es besteht aus nur einer PHP-Datei, die durch einen Cronjob gestartet werden kann. Es funktioniert mit unseren “Virtuelle Benutzer Und Domains Mit Postfix, Courier, MySQL Und SquirrelMail” Tutorials (es kann nicht für andere Setups verwendet werden, insbesondere nicht für Postfix-Setups, die keine MySQL-Datenbank verwenden).

Ich gebe keine Garantie, dass dies für Sie funktioniert!

1 Vorbemerkung

Ich gehe davon aus, dass Sie bereits ein funktionierendes “Virtuelle Benutzer Und Domains Mit Postfix, Courier, MySQL Und SquirrelMail” Setup haben, z.B.:

  • Virtuelle Benutzer Und Domains Mit Postfix, Courier, MySQL Und SquirrelMail (Debian Lenny)
  • Virtuelle Benutzer Und Domains Mit Postfix, Courier, MySQL Und SquirrelMail (CentOS 5.3 x86_64)
  • Virtuelle Benutzer Und Domains Mit Postfix, Courier, MySQL Und SquirrelMail (Fedora 10)
  • Virtuelle Benutzer Und Domains Mit Postfix, Courier, MySQL Und SquirrelMail (Ubuntu 8.10)
  • Virtuelle Benutzer Und Domains Mit Postfix, Courier, MySQL Und SquirrelMail (Mandriva 2009.0 i386)

2 Installation Und Verwendung Von Goldfisch

Zuerst verbinden wir uns mit unserer MySQL-Mail-Datenbank und erstellen eine zusätzliche Tabelle namens 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;

Danach laden wir die neueste Goldfisch-Version nach /tmp herunter und benennen das Goldfisch-PHP-Skript in autoresponder.php um:

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

Dann öffnen wir autoresponder.php und passen den Konfigurationsbereich an. Stellen Sie sicher, dass Sie die richtigen Datenbankdetails ausfüllen (Sie können den vorhandenen mail_admin MySQL-Benutzer verwenden); in der Zeile $conf[‘q_mailbox_path’] stellen Sie sicher, dass Sie den Tabellennamen view_users durch users ersetzen:

vi autoresponder.php

| [...] ###################################### # Konfiguration # ###################################### /* Allgemein */ $conf['cycle'] = 5 * 60; /* Protokollierung */ $conf['log_file_path'] = "/var/log/goldfish"; $conf['write_log'] = true; /* Datenbankinformationen */ $conf['mysql_host'] = "localhost"; $conf['mysql_user'] = "mail_admin"; $conf['mysql_password'] = "mail_admin_password"; $conf['mysql_database'] = "mail"; /* Datenbankabfragen */ # Diese Abfrage muss den Pfad (`path`) des entsprechenden # maildir-Postfachs mit der E-Mail-Adresse %m zurückgeben $conf['q_mailbox_path'] = "SELECT CONCAT('/home/vmail/', SUBSTRING_INDEX(email,'@',-1), '/', SUBSTRING_INDEX(email,'@',1), '/') as `path` FROM users WHERE `email` = '%m'"; # Diese Abfrage muss die folgenden Felder aus der autoresponder-Tabelle zurückgeben: `from`, `to`, `email`, `message` wo `enabled` = 2 $conf['q_forwardings'] = "SELECT * FROM `autoresponder` WHERE `enabled` = 1"; # Diese Abfrage muss jeden Autoresponder-Eintrag deaktivieren, der in der Vergangenheit endet $conf['q_disable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 0 WHERE `to` < CURDATE();"; # Diese Abfrage muss jeden Autoresponder-Eintrag aktivieren, der heute beginnt $conf['q_enable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 1 WHERE `from` = CURDATE();"; # Diese Abfrage muss die Nachricht eines Autoresponder-Eintrags zurückgeben, der durch die E-Mail %m identifiziert wird $conf['q_messages'] = "SELECT `message` FROM `autoresponder` WHERE `email` = '%m'"; # Diese Abfrage muss das Betreff eines Autoresponder-Eintrags zurückgeben, der durch die E-Mail %m identifiziert wird $conf['q_subject'] = "SELECT `subject` FROM `autoresponder` WHERE `email` = '%m'"; [...] |

Danach verschieben wir autoresponder.php nach /usr/local/bin, machen es dem Benutzer und der Gruppe vmail zugeordnet und machen es ausführbar:

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

Jetzt erstellen wir die Protokolldatei /var/log/goldfish und machen sie dem Benutzer und der Gruppe vmail zugeordnet:

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

Ich möchte, dass autoresponder.php alle fünf Minuten ausgeführt wird, daher erstelle ich einen Cronjob dafür, der vom Benutzer vmail ausgeführt wird:

crontab -u vmail -e

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

Das war’s! Jetzt können Sie Autoresponder in der autoresponder-Tabelle erstellen, z.B. mit phpMyAdmin oder über die Befehlszeile, z.B. wie folgt:

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', 'Ich werde in der Woche vom 8. Juni mit sehr eingeschränktem Zugang zu E-Mails abwesend sein.
Ich werde so schnell wie möglich antworten.
Danke!
Falko', 1, 'Abwesenheitsnotiz');
quit;

Dies erstellt einen Autoresponder für die E-Mail-Adresse [email protected], der zwischen dem 8. Juni 2009 und dem 12. Juni 2009 aktiv ist. Da der Autoresponder-Cronjob nur alle fünf Minuten ausgeführt wird, wird die Autoresponder-Nachricht nicht sofort gesendet, sondern innerhalb von fünf Minuten, nachdem eine E-Mail an die Adresse [email protected] gesendet wurde.

Sie sollten etwas wie dies in der Protokolldatei /var/log/goldfish sehen, wann immer ein Autoresponder von der Adresse [email protected] gesendet wird:

2009-06-08 07:00:01 Verbindung zur Datenbank erfolgreich hergestellt  
2009-06-08 07:00:01 Datenbank erfolgreich ausgewählt  
2009-06-08 07:00:01 Datenbank erfolgreich aktualisiert (deaktivierte Einträge)  
2009-06-08 07:00:01 Datenbank erfolgreich aktualisiert (aktivierte Einträge)  
2009-06-08 07:00:01 Erfolgreich maildir-Verzeichnisse abgerufen  
2009-06-08 07:00:01 Erfolgreich Betreff von [email protected] abgerufen  
2009-06-08 07:00:01 Erfolgreich Nachricht von [email protected] abgerufen  
2009-06-08 07:00:02 --------- Ende der Ausführung ------------

3 Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.