最新版本的 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_environment
、add_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=
并重新启动守护进程后它继续发出警告,那么这是一个错误,但不是其他情况。