为什么 mailx -- -f 不再起作用

为什么 mailx -- -f 不再起作用

我在 Ubuntu 12.04 中做了以下操作:

echo "some body" | mailx -s "some subject" [email protected] -- -f [email protected]

它生成了如下消息:

To: [email protected]
Subject: some subject
From: [email protected]

然后我更新到了 Ubuntu 14.04,现在我得到了

To: [email protected], [email protected], [email protected]
Subject: some subject
From: [email protected]

因此,它-f不再起作用,我收到了一封损坏的电子邮件。

这是为什么?我该如何解决?

我正在使用 nullmailer。

我正在使用 bsd-mailx。

$ ls -l $(which mailx)
lrwxrwxrwx 1 root root 23 Okt 23 23:12 /usr/bin/mailx -> /etc/alternatives/mailx
$ ls -l /etc/alternatives/mailx
lrwxrwxrwx 1 root root 18 Okt 23 23:12 /etc/alternatives/mailx -> /usr/bin/bsd-mailx

答案1

作为一种解决方法,我可以From:使用手动设置标题-a $EXTRAHEADER并删除该-- -f内容:

echo "some body" | mailx -s "some subject" [email protected] -a "From: [email protected]"

答案2

看起来一月初的安全补丁改变了的行为--

来自更新日志https://launchpad.net/ubuntu/+source/bsd-mailx/8.1.2-0.20111106cvs-1ubuntu0.1

bsd-mailx (8.1.2-0.20111106cvs-1ubuntu0.1) 精确安全;紧急程度=中等

  • 安全更新:shell 命令注入
    • 应用 Todd Miller 的 OpenBSD 补丁(取自 Debian 更新):
      • 80-remove_T.patch(删除未记录/过时的 -T 选项)
      • 81-minus_f.patch(调整-f处理)
      • 82-expandaddr.patch(修复 CVE-2014-7844)
      • 83-nosendmail.patch(make -- 为选项解析抑制工作)
    • CVE-2014-7844——Marc Deslauriers 2015 年 1 月 5 日星期一 11:40:44 -0500

您的解决方法是正确的,-a 选项最适合设置发件人标头。

我仍然遇到一个问题,即-f选项设置了 Return-Path 标头,而我对此没有任何运气-a。我从https://groups.google.com/forum/#!topic/list.postfix.users/0AmocPqLUZo

答案3

我最终使用/usr/sbin/sendmail(由 postfix 提供)而不是我的系统上mail链接的命令:bsd-mailx

echo -e "Subject:some subject\n\nsome body" | /usr/sbin/sendmail -r "[email protected]" "[email protected]"

需要考虑三件事:

  • 用于 -r指定返回路径(和发件人地址)
  • -s主题中没有。相反,请Subject:在邮件标题中添加printf两个换行符\n\n
  • echo真正需要输出的是两个换行符,而不是字符\n\n,因此您需要echo -e

相关内容