运行 Oracle Linux 5.8(刚刚更名为 RedHat EL 5.8)时,我必须更改发件人地址。但是我们有使用 mailx 的脚本,这些脚本无法重写以使用任何额外的标志,因此我想改用内部变量,我在 linux.die.net 联机帮助页上看到 mailx 是 -r 标志的替代方案:
-r address
设置发件人地址。覆盖环境或启动文件中指定的任何发件人变量。禁用波浪符号转义。除非使用 SMTP,否则 -r address 选项将传递给邮件传输代理。此选项仅用于兼容性;建议直接设置 from 变量。
(来源:http://linux.die.net/man/1/mailx)
我们如何使用这些 mailx 变量?我尝试将其添加到 /root/.mailrc,但没有成功:
我还将其添加到了 /etc/mail.rc 中,但没有黄金。所以我向你求助,超级用户……
答案1
我刚刚在 Ubuntu 14.04 中测试了这一点,并且使用 -S 参数对我有用:
-S variable[=value]
Sets the internal option variable and, in case of a string option, assigns value to it.
因此,以下命令将发件人地址设置为“[电子邮件保护]“:
echo "This is my test" | mail -S from="[email protected]" -s "This is my subject" "[email protected]"
答案2
在我的环境中,使用 -r 或设置 from 变量都不起作用。
我总是得到类似这样的信息:
send-mail: 550 5.7.1 ... Invalid from address ....
对我有用的是添加一个 sSMTP 别名/etc/ssmtp/revaliases
,例如
帐户名称:[电子邮件保护]:smtp.example.com
答案3
我确信版本很重要,但我刚刚在 RH Server 6.7 上遇到了这个问题,误读了 mailx 手册页,但最终我让 ~/.mailrc 工作了。
set [email protected]
set [email protected]
同时执行 from 和 replyto 可能没有必要,但如果值得做,就值得做得过分!
答案4
显然,无法设置 mailx 变量来执行此操作。这可以通过 Sendmail(或等效 MTA)配置来完成。但不幸的是,没有可用的 Sendmail 配置,因此我们必须使用 -r 标志。