PHP スクリプト · 1 min read · Dec 30, 2025

金魚、PHPオートレスポンダースクリプト

金魚、PHPオートレスポンダースクリプト - HowtoForge「Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン」のセットアップ用

バージョン 1.0
著者: Falko Timme

金魚はPostfix用の非常にシンプルなオートレスポンダースクリプト(PHPで記述)です。これは、cronjobを通じて起動できる1つのPHPファイルで構成されています。これは、私たちの「Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン」チュートリアルで動作します(特にMySQLデータベースを使用しないPostfixセットアップには使用できません)。

これがあなたにとって機能するという保証はありません!

1 前提条件

私は、すでに動作している「Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン」セットアップがあると仮定しています。例:

  • Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン(Debian Lenny)
  • Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン(CentOS 5.3 x86_64)
  • Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン(Fedora 10)
  • Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン(Ubuntu 8.10)
  • Postfix、Courier、MySQL、SquirrelMailを使用した仮想ユーザーとドメイン(Mandriva 2009.0 i386)

2 Goldfishのインストールと使用

まず、MySQLメールデータベースに接続し、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;

その後、最新のgoldfishリリースを/tmpにダウンロードし、goldfish PHPスクリプトの名前を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

次に、autoresponder.phpを開き、設定セクションを調整します。正しいデータベースの詳細を入力してください(既存のmail_admin MySQLユーザーを使用できます);$conf[‘q_mailbox_path’]行では、view_usersというテーブル名をusersに置き換えてください:

vi autoresponder.php

| [...] ###################################### # 設定 # ###################################### /* 一般 */ $conf['cycle'] = 5 * 60; /* ロギング */ $conf['log_file_path'] = "/var/log/goldfish"; $conf['write_log'] = true; /* データベース情報 */ $conf['mysql_host'] = "localhost"; $conf['mysql_user'] = "mail_admin"; $conf['mysql_password'] = "mail_admin_password"; $conf['mysql_database'] = "mail"; /* データベースクエリ */ # このクエリは、対応するメールアドレス %m の maildir-Mailbox のパス (`path`) を返す必要があります $conf['q_mailbox_path'] = "SELECT CONCAT('/home/vmail/', SUBSTRING_INDEX(email,'@',-1), '/', SUBSTRING_INDEX(email,'@',1), '/') as `path` FROM users WHERE `email` = '%m'"; # このクエリは、autoresponderテーブルから次のフィールドを返す必要があります:`from`、`to`、`email`、`message` ただし `enabled` = 2 $conf['q_forwardings'] = "SELECT * FROM `autoresponder` WHERE `enabled` = 1"; # このクエリは、過去に終了したすべてのオートレスポンダーエントリを無効にする必要があります $conf['q_disable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 0 WHERE `to` < CURDATE();"; # このクエリは、今日から開始するすべてのオートレスポンダーエントリを有効にする必要があります $conf['q_enable_forwarding'] = "UPDATE `autoresponder` SET `enabled` = 1 WHERE `from` = CURDATE();"; # このクエリは、メール %m で識別されたオートレスポンダーエントリのメッセージを返す必要があります $conf['q_messages'] = "SELECT `message` FROM `autoresponder` WHERE `email` = '%m'"; # このクエリは、メール %m で識別されたオートレスポンダーエントリの件名を返す必要があります $conf['q_subject'] = "SELECT `subject` FROM `autoresponder` WHERE `email` = '%m'"; [...] |

その後、autoresponder.phpを/usr/local/binに移動し、ユーザーとグループvmailの所有にし、実行可能にします:

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

次に、ログファイル/var/log/goldfishを作成し、ユーザーとグループvmailの所有にします:

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

autoresponder.phpを5分ごとに実行したいので、vmailユーザーによって実行されるcronジョブを作成します:

crontab -u vmail -e

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

これで完了です!autoresponderテーブルにオートレスポンダーを作成できます。例えば、phpMyAdminやコマンドラインで次のようにします:

mysql -u root -p
USE mail;
INSERT INTO `autoresponder` (`email`, `descname`, `from`, `to`, `message`, `enabled`, `subject`) VALUES('[email protected]', '[email protected] オートレスポンダー', '2009-06-08', '2009-06-12', '6月8日の週はメールへのアクセスが非常に限られています。
できるだけ早く返信します。
ありがとうございます!
Falko', 1, '不在通知');
quit;

これにより、メールアドレス [email protected] のオートレスポンダーが作成され、2009年6月8日から2009年6月12日までアクティブになります。オートレスポンダーのcronジョブは5分ごとに実行されるため、オートレスポンダーメッセージはすぐには送信されず、[email protected] アドレスにメールが送信されてから5分後に送信されます。

オートレスポンダーが[email protected]アドレスから送信されるたびに、/var/log/goldfishログファイルに次のような内容が表示されるはずです:

2009-06-08 07:00:01 データベースへの接続が正常に確立されました  
2009-06-08 07:00:01 データベースが正常に選択されました  
2009-06-08 07:00:01 データベースが正常に更新されました(無効なエントリ)  
2009-06-08 07:00:01 データベースが正常に更新されました(有効なエントリ)  
2009-06-08 07:00:01 maildirディレクトリが正常に取得されました  
2009-06-08 07:00:01 [email protected] の件名が正常に取得されました  
2009-06-08 07:00:01 [email protected] のメッセージが正常に取得されました  
2009-06-08 07:00:02 --------- 実行終了 ------------

3 リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。