尽管已设置 add/keep_environment,exim4 仍显示“警告:清除环境”

尽管已设置 add/keep_environment,exim4 仍显示“警告:清除环境”

最新版本的 exim4 已将add_environment和添加keep_environment到配置中。如果缺少这些,exim4 会向 STDERR 发送警告。

在我的配置中,这两个变量都设置为空白:

add_environment =
keep_environment =

这是有效配置。它在我的所有服务器上都有效,只有一台服务器发出了警告。

工作服务器:

$ exim4 -bP | grep environment
add_environment =
keep_environment =

服务器不工作:

$ exim4 -bP | grep environment
LOG: MAIN
  Warning: purging the environment.
 Suggested action: use keep_environment.
add_environment =
keep_environment =

两台服务器的配置相同。两台服务器都运行最新版本的 Debian (8.7/jessie),并且都运行相同版本的 exim:Exim version 4.84_2 #2 built 02-Jan-2017 18:43:31

答案1

exim4 -bP将仅显示您当前使用的值,包括输出警告后 exim4 本身设置为默认值的值。

您应该使用 来检查grep -r keep_environment /etc/exim4它是否确实在您的配置文件中处于活动状态。如果您使用它,它应该在 中/etc/exim4/exim4.conf。如果您有/etc/exim4/exim4.conf 但选项在 中/etc/exim4/exim4.conf.template,您可能需要手动添加它或使用update-exim4.conf(8)

您可以找到更多信息这里

答案2

您无法从exim -bP输出中判断选项是否未设置或没有值。因为后者只是迭代一切可用的选项并打印它们的值。

很可能是某个服务器的keep_environment配置中有该选项。要检查的地方是/etc/exim4/var/lib/exim4/config.autogenerated

引入该选项是为了规避某些安全威胁。修复已在 进行4.86.2。但也已移植到4.84.2。两者杰西拉紧有它。它会根据keep_environmentadd_environment选项清理环境。如果keep_environment未设置,它会记录警告并建议添加它。由于exim可能需要以保留某些环境变量的方式进行配置。在 Debian 上,使用默认配置的情况并非如此。因此在 Debian 上,通常可以将其设置为空值。

在一些观点选择是添加配置4.87--RC6-3)。但它是在 Debian Stretch 中。这不太可能被反向指向 Jessie,因为它不是安全问题。

解决办法是手动添加/etc/exim4/exim4.conf.localmacros

keep_environment =

然后:

update-exim4.conf
systemctl reload exim4

答案3

这只是最新版本中一个令人讨厌但无害的错误,迟早会被删除。只需忽略它即可。

答案4

这个警告不是一个错误,而是一个很好的安全功能。

除非你确切知道自己在做什么,否则你要清除的环境;您不希望某些随机用户的环境通过 Exim 泄漏到管道命令的环境中,在那里它可能被用来执行权限提升。

但由于这是一项新功能,因此默认情况下不会强制执行,因为它可能会破坏现有的用例。所以现在这是一个警告。将来可能会默认启用强制执行。与此同时,您应该检查您的管道脚本。

如果在您设置keep_environment=并重新启动守护进程后它继续发出警告,那么这是一个错误,但不是其他情况。

相关内容