Мне нужно, чтобы procmail помещал входящую почту в определенную папку в зависимости от некоторого набора правил. Я знаю, как это сделать, но мне нужно написать статический набор правил в конкретном файле. Что мне действительно нужно, так это настроить procmail для использования правил, хранящихся в базе данных mysql. Как я могу это сделать? Я немного читал об этом, и одно решение, которое я нашел, - передать сообщение сценарию php / perl и вернуть имя папки для размещения сообщения. Но я совершенно не знаю, как использовать php-скрипт как правило, а затем использовать его возвращаемое значение.
«Помещать входящую почту в конкретную папку в зависимости от некоторого набора правил» - это именно то, что Procmail делает из коробки, но я думаю, вы ищете что-то вроде этого:
FOLDER=`/path/to/script.php`
:0
$FOLDER
Это обманчиво просто, но это все, что нужно. Команда с обратными кавычками получит текущее сообщение как стандартный ввод.
(Если $FOLDER
является статическим файлом, вам нужно добавить блокировку, но это косвенная тема.)
Если это все ваши правила Procmail, вы можете подумать, нужен ли Procmail вообще. Часть доставки по-прежнему полезна и надежна, поэтому я рекомендую вам оставить ее для этого, но поскольку Procmail хорош в том, чтобы делать именно то, что вы пытаетесь сделать с PHP, возможно, вы захотите подумать о своем подходе.
Если ваша база данных не меняется очень часто, вы можете рассмотреть возможность использования сценария для создания вашего .procmailrc
из базы данных. Тогда сами правила Procmail могут быть статическими (в идеале не требовать каких-либо внешних процессов), но вам нужно будет восстанавливать их каждый раз при обновлении базы данных.