我如何设置Postfix运行脚本的区域设置?

我在postfix中有一个pipe道别名,将电子邮件传递给一个简单的可执行文件:

test: "|/home/postfix_user/test/test-exe" 

所有这个可执行文件都是把一个UTF8名字的文件写入磁盘。 我可以用手运行它:

 $ cd /home/postfix_user/test ; ./test-exe ; ls ACCIÓN.txt 

但是,当我通过Postfix执行脚本时,我收到一条错误消息:

远程服务器返回'<#5.3.0 x-unix; test-exe:/home/postfix_user/test/ACCIN.txt:openFile:无效参数(无效字符)>'

该错误消息(来自Haskell程序)的细节告诉我,我的区域设置可能没有正确设置为UTF8。 最初,我认为这是因为Postfix调用可执行文件的shell,但将本地命令shell设置为sh似乎没有帮助。 我已经阅读了大部分的postfix文档( http://www.postfix.org/pipe.8.html,http://www.postfix.org/local.8.html,http://www.postfix .org / aliases.5.html等),但无法find这样做。

postfix_userlocale输出表明它是UTF8:

 $ locale LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL= 

Postfix默认会导出某些环境variables,可以通过运行postconf -d | grep export_environment来find postconf -d | grep export_environment (postconf -d是你的postfix实例的所有configuration的转储,而不仅仅是你在main.cf手动设置的configuration)

至less在我的系统上,默认的实例是:

 export_environment = TZ MAIL_CONFIG LANG 

我不知道LANGvariables在哪里,但是Postfix从某个地方拉了LANG=C 重写这个,并设置你自己的语言环境。 修改main.cf中的conf值以指定要使用的语言环境:

 export_environment = TZ MAIL_CONFIG LANG=en_US.UTF-8