PHP скрипт · 4 min read · Dec 30, 2025
Золотая рыбка, скрипт автописьма на PHP
Золотая рыбка, скрипт автописьма на PHP для настроек “Виртуальные пользователи и домены с Postfix, Courier, MySQL и SquirrelMail”
Версия 1.0
Автор: Фалко Тимме
Золотая рыбка — это довольно простой скрипт автописьма (написанный на PHP) для Postfix. Он состоит всего из одного PHP-файла, который можно запустить через cronjob. Он работает с нашими учебниками “Виртуальные пользователи и домены с Postfix, Courier, MySQL и SquirrelMail” (он не может быть использован для других настроек, особенно для настроек Postfix, которые не используют базу данных MySQL).
Я не даю никаких гарантий, что это будет работать для вас!
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 Установка и использование Золотой рыбки
Сначала мы подключаемся к нашей базе данных 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;После этого мы загружаем последнюю версию золотой рыбки в /tmp и переименовываем скрипт 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 и настраиваем раздел конфигурации. Убедитесь, что вы заполнили правильные данные базы данных (вы можете использовать существующего пользователя MySQL mail_admin); в строке $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"; /* Запросы к базе данных */ # Этот запрос должен вернуть путь (`path`) соответствующего # maildir-Mailbox с адресом электронной почты %m $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/goldfishЯ хочу, чтобы autoresponder.php выполнялся каждые пять минут, поэтому я создаю для него cron job, который будет выполняться пользователем vmail:
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', 'Я буду отсутствовать на неделе с 8 июня с очень ограниченным доступом к электронной почте.
Я отвечу как можно скорее.
Спасибо!
Фалко', 1, 'Вне офиса');quit;Это создает автописьмо для адреса электронной почты [email protected], которое активно с 8 июня 2009 года по 12 июня 2009 года. Поскольку cron job автописьма выполняется только каждые пять минут, сообщение автописьма не будет отправлено немедленно, а в течение пяти минут после отправки электронного письма на адрес [email protected].
Вы должны увидеть что-то вроде этого в файле журнала /var/log/goldfish каждый раз, когда автописьмо отправляется с адреса [email protected]:
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 Ссылки
- Золотая рыбка: http://www.remofritzsche.ch/goldfish/
Get new posts in your inbox
No spam. Unsubscribe anytime.