这个“test -f”bash 脚本中有什么问题导致 dkimproxy 无法启动?

这个“test -f”bash 脚本中有什么问题导致 dkimproxy 无法启动?

在长期使用 dkfilter 并取得成功后,我尝试在服务器上配置 dkimproxy。我选择“升级”的原因是,Gmail 等主要提供商似乎比 DomainKeys 更支持 DKIM 协议。

我只想对出站消息进行签名,而不验证入站消息。我配置dkimproxy_out.conf正确,但rcdkimproxy start什么也没发生。如果我这样做rcdkimproxy start-out,它反而会起作用。

我并不是一名出色的 Bash 专家,但我在/etc/init.d/dkimproxy

    start)
            test -f $DKIMPROXY_IN_CFG && $0 start-in || exit $?
            test -f $DKIMPROXY_OUT_CFG && $0 start-out || exit $?
            ;;

它“应该”测试配置文件是否存在,如果存在,则运行 dkimproxy start-out 命令。我确信该文件存在且正确(否则它不会手动启动),但我发现手动执行test -f /usr/share/dkimproxy/etc/dkimproxy_out.conf; echo $?会返回 0。

这些语句可能有什么错误?我使用 openSUSE 11.3 内核 2.6.32。如果您认为此脚本有问题,我可以尝试向 dkimproxy 的作者报告错误。

谢谢

答案1

最新dkimproxy 包使用以下几行:

start)
     test -f $DKIMPROXY_IN_CFG && { $0 start-in || exit $?; }
     test -f $DKIMPROXY_OUT_CFG && { $0 start-out || exit $?; }
     ;;

将您的初始化脚本更改为使用上面的行应该可以正确解决问题,并检查配置文件是否存在。

有趣的是,在 Debian 中这两种格式都可以毫无问题地运行。

像往常一样,脚本使用 /bin/sh 而不是 bash,在某些系统(包括 Debian)中,sh 是 Bourne Shell,而 /bin/bash 是更高级的 Bourne Again Shell。这两个 shell 都期望测试成功返回 0,因此如果测试成功,想要运行命令,则“test && command”是正确的格式。

相关内容