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 提供了我用作起点的脚本...

https://github.com/stuporglue/mailreader