gpt4 book ai didi

linux - procmail 没有正确执行脚本

转载 作者:太空宇宙 更新时间:2023-11-04 11:38:24 28 4
gpt4 key购买 nike

我在从 procmail 本地传送的传入邮件中运行脚本(perl 和 ruby​​ 失败)时遇到了一个奇怪的问题。

系统是 CentOS 5.5,带有 postfix 作为我的邮件程序,然后设置了一个 .forward 以将电子邮件发送到 procmail。 .procmailrc 和脚本与 Ubuntu 服务器上的工作设置相同。

这是 .procmailrc:

PATH= /usr/local/bin:/usr/bin:${PATH}
SHELL=/bin/bash
MAILDIR=$HOME/Maildir
DEFAULT=${MAILDIR}/
LOGABSTRACT=yes
LOGFILE=$HOME/Maildir/proclog
VERBOSE=YES

:0 wc
* ^To.*web@mydomain.com
| /home/web/perltest.pl

这是 perl 脚本:

#!/usr/bin/env perl

system("touch /home/web/touchedfile");

然后在收到电子邮件时日志中出现故障:

procmail: Executing "/home/web/perltest.pl"
/home/web/perltest.pl: line 3: syntax error near unexpected token `"touch /home/web/touchedfile"'
/home/web/perltest.pl: line 3: `system("touch /home/web/touchedfile");'

行尾都是UNIX。该脚本从命令行运行良好。

如果我直接从命令行通过管道传输到 procmail,整个设置工作正常,但是当它作为本地传递过程的一部分被调用时,#!行似乎在脚本中被忽略了。

如果我在管道中显式执行 perl,我可以让 perl 脚本运行,如下所示:

:0 wc
* ^To.*web@mydomain.com
| perl /home/web/perltest.pl

……但我真的不想认输,也不想那样做。

最佳答案

问题出在 selinux 上,如果您将其关闭,它应该可以正常工作。我不确定如何在启用 selinux 的情况下修复它。

这里有一个方法可以修复它并且仍然让 selinux 运行。在您的 perl 或 ruby​​ 脚本上运行 chcon system_u:object_r:procmail_exec_t。我已经确认这是一个修复程序,但我对 selinux 不够熟悉,无法确定它是“正确”的修复程序。

关于linux - procmail 没有正确执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737186/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com