Я использую 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. Так что я немного не в себе.
Итак, после разговора с Джейми об этом конкретном рабочем процессе есть только очень ограниченный вариант использования.
Но есть способ добиться того, что вам нужно, — создать пользователя для этого действия, а затем войти в систему как Usermin как этот пользователь и настроить пересылку в ваш скрипт как этот пользователь.
Причина, по которой он не работает в Virtualmin, заключается в том, что псевдонимы обрабатываются как пользователь nobody (или любой пользователь postfix в вашей системе), который не имеет доступа к домашним каталогам пользователей. При создании его под Usermin, он будет выполнять действие через procmail как пользователь, который создал правило, и поэтому у пользователя будут права, необходимые для запуска сценария и записи в файл.
Альтернативный обходной путь, если сценарию не нужно что-либо записывать в дом пользователя (например, сложный автоответчик или что-то в этом роде), состоит в том, чтобы поместить ваш сценарий в местоположение, к которому никто не имеет доступа.
В настоящее время мы обсуждаем, следует ли удалить это из формы Virtualmin (поскольку она имеет такое ограниченное использование и может сбивать с толку), или сделать так, чтобы она действительно работала так, как ожидалось. Я склоняюсь к тому, чтобы заставить его работать так, как ожидалось, но делать это безопасно, учитывая то, как сейчас все работает, может быть непросто.
Вот шаги, которые я использовал, чтобы заставить это работать с использованием Virtualmin 4.14.
В Virtualmin home выберите нужный домен.
Нажмите «Редактировать пользователей»
Создайте / выберите пользователя, который будет пересылать.
Нажмите «Войти в Usermin» внизу. (примечание: если его там нет, перезапустите Usermin)
Нажмите «Usermin» в левом верхнем углу рядом с логотипом Virtualmin. (не интуитивно понятно)
Нажмите «Почта», чтобы открыть почтовое меню.
Нажмите «Пересылка почты и ответы»
Нажмите «Добавить правило пересылки почты»
Нажмите «Включить»
Выберите «Feed to program»
Введите полный путь к вашему почтовому скрипту. т.е. /home/mydomain/public_html/mail_pipe.php
Файл должен: существовать / начинаться с shebang / быть исполняемым
Большое спасибо Stuporglue за этот скрипт, который я использовал в качестве отправной точки …