В настоящее время у меня есть postfix piping в PHP-скрипт для обработки электронной почты через псевдоним.
catchall: |/var/www/vhosts/website/httpdocs/scripts/incoming_mail.php
Однако я хочу использовать конфигурацию БД и т. Д., Предоставленную в моем проекте CI, поэтому мне нужно предоставить такой маршрут, как:
catchall: |/var/www/vhosts/website/httpdocs/cli.php /incoming_mail
Желаемым результатом этого будет запуск контроллера incoming_mail.
Если я попробую сделать это, письмо будет возвращено со следующим:
Action: failed
Status: 5.2.0
Diagnostic-Code: X-Postfix; cannot append message to file /incoming_mail:
cannot create file exclusively: Permission denied
Любая помощь приветствуется!
Привет, вот как я сделал парсер:
/etc/postfix/master.cf
(постфикс)
bounce-pipe unix - n n - - pipe
flags=BDFORXhqu user=deploy argv=/usr/bin/php5 /var/www/emailmanager/public/index.php
транспорт (постфикс)
mailtoparse@example.com bounce-pipe:
index.php - получить данные, которые вы бы обработали
$data = file_get_contents('php://stdin');
Невозможно добавить сообщение в файл / incoming_mail: невозможно создать файл монопольно: в доступе отказано
Вышеупомянутое сообщение об ошибке выдается постфиксом, потому что вы говорите ему добавить содержимое электронной почты в /incoming_mail
, вместо передачи аргумента /incoming_mail
к cli.php
.
В соответствии с man 5 псевдонимы
| команда
Почта передается в команду. Команды, содержащие специальные символы, такие как пробелы, следует заключать в двойные кавычки. Подробную информацию о доставке команде см. В local (8).
Поскольку вы не переносите команду, содержащую пробелы, постфикс интерпретируется /incoming_mail
как имя файла
/имя файла
Почта добавляется в / file / name. См. Local (8) для получения подробной информации о доставке в файл. Доставка не ограничивается обычными файлами. Например, чтобы избавиться от нежелательной почты, перенаправьте ее в / dev / null.
Решение: заключите команду в файл псевдонима в двойные кавычки
catchall: "|/var/www/vhosts/website/httpdocs/cli.php /incoming_mail"
PS: Решение Jommaar использовать transport_maps
и pipe
тоже можно использовать :)