Virtualmin ‘Feed to Program’ не может открыть файл

Я использую Virtualmin на сервере Centos6 vps с несколькими доменами. Я пытаюсь отправить электронное письмо на псевдоним электронной почты, который перенаправляет в скрипт php.

Письмо возвращается недоставленным со следующим сообщением …

Command died with status 1: "php
/home/mydomain/public_html/mail_pipe.php". Command output: Could not
open input file: /home/mydomain/public_html/mail_pipe.php

У меня есть путь, определенный как

php /home/mydomain/public_html/mail_pipe.php

Я установил права доступа к файлу 0777 + x

Внутри mail_pipe.php у меня есть скрипт разбора почты, который я использовал раньше. Так как это не сработало, сейчас я просто пытаюсь что-то сделать, чтобы увидеть, был ли к файлу доступ, так как ошибка msg говорит, что он не может открыть файл.

#!/usr/bin/php -q
<?php
$myFile = "steve.txt";
$fh = fopen($myFile, 'a');

$stringData = "File was opened \n";
fwrite($fh, $stringData);
fclose($fh);
?>

Я почти уверен, что он пытается открыть нужный файл, так как я получаю сообщение об ошибке «файл не найден», когда целевого файла нет.

Я помог в последний раз, когда я сделал это. Он выполнил все настройки на стороне сервера, пока я занимался сценарием php. Так что я немного не в себе.

0

Решение

Итак, после разговора с Джейми об этом конкретном рабочем процессе есть только очень ограниченный вариант использования.

Но есть способ добиться того, что вам нужно, — создать пользователя для этого действия, а затем войти в систему как Usermin как этот пользователь и настроить пересылку в ваш скрипт как этот пользователь.

Причина, по которой он не работает в Virtualmin, заключается в том, что псевдонимы обрабатываются как пользователь nobody (или любой пользователь postfix в вашей системе), который не имеет доступа к домашним каталогам пользователей. При создании его под Usermin, он будет выполнять действие через procmail как пользователь, который создал правило, и поэтому у пользователя будут права, необходимые для запуска сценария и записи в файл.

Альтернативный обходной путь, если сценарию не нужно что-либо записывать в дом пользователя (например, сложный автоответчик или что-то в этом роде), состоит в том, чтобы поместить ваш сценарий в местоположение, к которому никто не имеет доступа.

В настоящее время мы обсуждаем, следует ли удалить это из формы Virtualmin (поскольку она имеет такое ограниченное использование и может сбивать с толку), или сделать так, чтобы она действительно работала так, как ожидалось. Я склоняюсь к тому, чтобы заставить его работать так, как ожидалось, но делать это безопасно, учитывая то, как сейчас все работает, может быть непросто.

1

Другие решения

Вот шаги, которые я использовал, чтобы заставить это работать с использованием Virtualmin 4.14.

В Virtualmin home выберите нужный домен.

Нажмите «Редактировать пользователей»

Создайте / выберите пользователя, который будет пересылать.

Нажмите «Войти в Usermin» внизу. (примечание: если его там нет, перезапустите Usermin)

Нажмите «Usermin» в левом верхнем углу рядом с логотипом Virtualmin. (не интуитивно понятно)

Нажмите «Почта», чтобы открыть почтовое меню.

Нажмите «Пересылка почты и ответы»

Нажмите «Добавить правило пересылки почты»

Нажмите «Включить»

Выберите «Feed to program»

Введите полный путь к вашему почтовому скрипту. т.е. /home/mydomain/public_html/mail_pipe.php

Файл должен: существовать / начинаться с shebang / быть исполняемым

Большое спасибо Stuporglue за этот скрипт, который я использовал в качестве отправной точки …

https://github.com/stuporglue/mailreader

1

По вопросам рекламы [email protected]