Virtualmin 'Feed to Program' 无法打开文件
Virtualmin 'Feed to Program' can't open file
我是 运行 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有一个我以前用过的邮件解析脚本。由于那没有用,现在我只是想做点什么,所以我可以看看文件是否被访问过,因为错误消息说它无法打开文件。
#!/usr/bin/php -q
<?php
$myFile = "steve.txt";
$fh = fopen($myFile, 'a');
$stringData = "File was opened \n";
fwrite($fh, $stringData);
fclose($fh);
?>
我很确定它实际上是在尝试打开正确的文件,因为当目标文件不存在时我收到了找不到文件的错误。
我上次做这件事时得到了帮助。他完成了所有服务器端设置,而我处理了 php 脚本。所以我有点不适应这里。
因此,在与 Jamie 讨论了这个问题之后,这个特定工作流程的用例非常有限。
但是,有一种方法可以实现您的目标,即为此操作创建一个用户,然后以该用户身份登录到 Usermin,并以该用户身份设置转发到您的脚本。
它在 Virtualmin 中不起作用的原因是别名被作为 nobody(或您系统上的任何后缀用户)用户处理,该用户无权访问用户主目录。在 Usermin 下创建它时,它将作为创建规则的用户通过 procmail 执行操作,因此用户将拥有 运行 脚本和写入文件所需的权限。
另一种解决方法是,如果脚本不需要向用户的家中写入任何内容(例如复杂的自动回复器或其他内容),则将您的脚本放在任何人都无法访问的位置。
我们目前正在讨论是从 Virtualmin 表单中删除它(因为它的用途非常有限并且可能会造成混淆),还是让它按预期实际工作。我倾向于让它按预期工作,但考虑到当前的工作方式,安全地完成它可能具有挑战性。
这些是我使用 Virtualmin 4.14 使它正常工作的步骤。
从 Virtualmin 主页,select 所需的域。
点击"Edit Users"
Create/select转发的用户
点击底部的"Login to Usermin"。 (注意:如果不存在,请重新启动 Usermin)
点击左上角Virtualmin标志旁边的"Usermin"。 (不直观)
单击 "Mail" 打开邮件菜单。
点击"Mail Forwarding and Replies"
点击"Add a mail forwarding rule"
点击"Enable"
Select "Feed to program"
输入邮件脚本的完整路径。即'/home/mydomain/public_html/mail_pipe.php'
文件必须:存在/以 shebang 开头/可执行
非常感谢 Stuporglue 提供了我用作起点的脚本...
我是 运行 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有一个我以前用过的邮件解析脚本。由于那没有用,现在我只是想做点什么,所以我可以看看文件是否被访问过,因为错误消息说它无法打开文件。
#!/usr/bin/php -q
<?php
$myFile = "steve.txt";
$fh = fopen($myFile, 'a');
$stringData = "File was opened \n";
fwrite($fh, $stringData);
fclose($fh);
?>
我很确定它实际上是在尝试打开正确的文件,因为当目标文件不存在时我收到了找不到文件的错误。
我上次做这件事时得到了帮助。他完成了所有服务器端设置,而我处理了 php 脚本。所以我有点不适应这里。
因此,在与 Jamie 讨论了这个问题之后,这个特定工作流程的用例非常有限。
但是,有一种方法可以实现您的目标,即为此操作创建一个用户,然后以该用户身份登录到 Usermin,并以该用户身份设置转发到您的脚本。
它在 Virtualmin 中不起作用的原因是别名被作为 nobody(或您系统上的任何后缀用户)用户处理,该用户无权访问用户主目录。在 Usermin 下创建它时,它将作为创建规则的用户通过 procmail 执行操作,因此用户将拥有 运行 脚本和写入文件所需的权限。
另一种解决方法是,如果脚本不需要向用户的家中写入任何内容(例如复杂的自动回复器或其他内容),则将您的脚本放在任何人都无法访问的位置。
我们目前正在讨论是从 Virtualmin 表单中删除它(因为它的用途非常有限并且可能会造成混淆),还是让它按预期实际工作。我倾向于让它按预期工作,但考虑到当前的工作方式,安全地完成它可能具有挑战性。
这些是我使用 Virtualmin 4.14 使它正常工作的步骤。
从 Virtualmin 主页,select 所需的域。
点击"Edit Users"
Create/select转发的用户
点击底部的"Login to Usermin"。 (注意:如果不存在,请重新启动 Usermin)
点击左上角Virtualmin标志旁边的"Usermin"。 (不直观)
单击 "Mail" 打开邮件菜单。
点击"Mail Forwarding and Replies"
点击"Add a mail forwarding rule"
点击"Enable"
Select "Feed to program"
输入邮件脚本的完整路径。即'/home/mydomain/public_html/mail_pipe.php'
文件必须:存在/以 shebang 开头/可执行
非常感谢 Stuporglue 提供了我用作起点的脚本...