【问题标题】:Virtualmin 'Feed to Program' can't open fileVirtualmin 'Feed to Program' 无法打开文件
【发布时间】:2015-05-09 12:47:20
【问题描述】:

我在具有多个域的 Centos6 vps 服务器上运行 Virtualmin。我正在尝试将电子邮件发送到转发到 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 脚本。所以我在这里有点不合时宜。

【问题讨论】:

  • 你不需要在前面加上“php”,因为程序会有一个可以读取shebang并进行适当操作的shell。即使没有它,我也能够重现该问题,并将追踪正在发生的事情。我认为它实际上应该按原样工作。 (而且您不需要 777。它只需要可执行。脚本将以所有者身份运行。但是,我怀疑我们的代码中有一个错误,它会降低权限。我正在和 Jamie 谈论它。)
  • 我在这里开了一张票:virtualmin.com/node/36469
  • 无论您的问题是什么,chmod 0777 都是错误且危险的。您应该取消此更改并将权限重置为理智的东西。目前,任何有权访问该框的人都可以更改您的脚本以做任何他们喜欢的事情。 (即使你认为你是一个人在盒子上,如果你不是,你也不应该感到惊讶,尤其是在缺乏对基本安全性的关注的情况下。)

标签: php postfix-mta webmin


【解决方案1】:

这些是我使用 Virtualmin 4.14 完成这项工作的步骤。

从 Virtualmin 主页中,选择所需的域。

点击“编辑用户”

创建/选择要转发的用户。

点击底部的“Login to Usermin”。 (注意:如果不存在,重启Usermin)

单击左上角 Virtualmin 徽标旁边的“Usermin”。 (不直观)

点击“邮件”打开邮件菜单。

点击“邮件转发和回复”

点击“添加邮件转发规则”

点击“启用”

选择“程序馈送”

输入邮件脚本的完整路径。即'/home/mydomain/public_html/mail_pipe.php'

文件必须:存在/以shebang开头/可执行

非常感谢 Stuporglue 将这个脚本用作我的起点...

https://github.com/stuporglue/mailreader

【讨论】:

  • 嘿史蒂夫,很抱歉挖掘了这个旧线程,但我遇到了同样的问题。在您的步骤中,“邮件”选项下不再有“邮件转发和回复”。我确实有“过滤和转发邮件”,但我没有在其中找到任何 Feed to Program 选项。你能更新这篇文章吗?
  • @VeeK,由于我不再使用 Virtualmun,我无法验证任何更改。说明确实指定了 Virtualmin 的版本。如果您使用的是其他版本,我不确定我能否提供任何建议。对不起。我会联系 Virtualmin 支持。
【解决方案2】:

因此,在与 Jamie 讨论过这个问题后,这个特定工作流程只有一个非常有限的用例。

但是,有一种方法可以实现您所追求的,即为此操作创建一个用户,然后以该用户身份登录到 Usermin 并以该用户身份设置转发到您的脚本。

它在 Virtualmin 中不起作用的原因是别名被处理为nobody(或系统上的任何后缀用户)用户,它无权访问用户主目录。在 Usermin 下创建它时,它将作为创建规则的用户通过 procmail 执行操作,因此该用户将拥有运行脚本和写入文件所需的权限。

如果脚本不需要向用户家中写入任何内容(例如复杂的自动回复或其他内容),另一种解决方法是将您的脚本放在任何人都无法访问的位置。

我们目前正在讨论是否将其从 Virtualmin 表单中删除(因为它的用途有限且可能会造成混淆),还是让它按预期实际工作。我倾向于让它按预期工作,但考虑到当前的工作方式,安全地完成它可能具有挑战性。

【讨论】:

  • 太棒了。由于这些信息,我能够让它工作。非常感谢。不久,我将添加另一个答案,详细说明我是如何工作的。
  • swelljoe... 尝试在新服务器上设置管道,但不再提供馈入程序的选项。你把它移到哪里去了?
  • 它应该仍然存在于任何用户的 Usermin 表单中(即,以要重定向到脚本的邮箱的用户身份登录到 Usermin)。由于我上面提到的原因,我怀疑 Jamie 删除了 Virtualmin 中的选项。如果您在 Usermin 中找不到该选项,请告诉我。
猜你喜欢
  • 2023-03-03
  • 2019-01-06
  • 2012-11-12
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多