我在 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