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 -pUSE 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/binchown 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/goldfishautoresponder.phpを5分ごとに実行したいので、vmailユーザーによって実行されるcronジョブを作成します:
crontab -u vmail -e| */5 * * * * /usr/local/bin/autoresponder.php |
これで完了です!autoresponderテーブルにオートレスポンダーを作成できます。例えば、phpMyAdminやコマンドラインで次のようにします:
mysql -u root -pUSE 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 リンク
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。