2015-03-08 5 views
0

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

электронной почты возвращается сданным со следующим сообщением ...

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 + х

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

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

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

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

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

+0

Вам не нужно «php» в начале этого, так как программа будет иметь оболочку, которая может читать shebang и действовать соответствующим образом. Я могу воспроизвести проблему, даже без этого, и будет отслеживать, что происходит. Думаю, он должен работать как есть. (И вам не нужно 777. Он просто должен быть исполняемым. Сценарий будет работать как владелец. Но я подозреваю, что у нас есть ошибка в коде, где он снижает привилегии. Я говорю с Джейми об этом.) – swelljoe

+0

Я открыл здесь билет: https://www.virtualmin.com/node/36469 – swelljoe

+0

Независимо от вашей проблемы ** ** chmod 0777 является неправильным и опасным **. Вы должны отменить это изменение и сбросить разрешения на что-то нормальное. В настоящее время любой, кто имеет доступ к ящику, может изменить ваш скрипт, чтобы делать что угодно. (Даже если вы считаете себя одиноким на коробке, вы не должны удивляться, если вы этого не сделаете, особенно с этим недостатком внимания к базовой безопасности.) – tripleee

ответ

1

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

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

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

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

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

+0

Awesome. Из-за этой информации я смог заставить ее работать. Спасибо. Вскоре я добавлю еще один ответ с некоторыми подробностями о том, как я получил эту работу. –

+0

swelljoe ... пытается настроить трубопровод на новом сервере, но опции для подачи на программу больше не существует. Куда вы его двигали? –

+0

Он все равно должен присутствовать в форме Usermin для любого пользователя (т. Е. Для входа в Usermin в качестве пользователя, почтовый ящик которого вы хотите перенаправить на скрипт). Я подозреваю, что Джейми удалил опцию в Virtualmin из-за причин, о которых я упоминал выше. Если у вас есть проблемы с поиском опции в Usermin, дайте мне знать. – swelljoe

1

Это шаги, которые я использовал для работы с Virtualmin 4.14.

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

Нажмите кнопку «Изменить пользователя»

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

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

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

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

Нажмите «переадресация почты и ответов»

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

Нажмите кнопку «Включить»

Выберите «Лента для программирования»

Введите полный путь к mail сценарий. т.е. «/home/mydomain/public_html/mail_pipe.php»

Файл должен: есть/начать с притоном/исполняемый

Большого спасибо Stuporglue для этого сценария я использовал в качестве моей отправной точки ...

https://github.com/stuporglue/mailreader