使用 mailx 发送邮件时如何包含显示名称

使用 mailx 发送邮件时如何包含显示名称

我正在使用 mailx 从脚本发送电子邮件。该脚本每天由 systemd 使用 .service 和 .timer 文件运行。出于测试目的,我从命令行发送。

邮件是通过命令发送的

echo "Test message - you know the drill" | mailx -r "[email protected]" -s "Test Message" [email protected]

(出于隐私考虑,替换了个人数据)

这有效。它通过 postfix 转发到我的网关服务器(也是 postfix),该服务器对传出消息进行签名。然后,该邮件会传送到 GMail,GMail 会验证 SPF 数据和 DKIM 签名,并将邮件传送到我的收件箱。

这很好,除了显示为Ubuntu <[email protected]>

我有其他服务器通过相同的方法发送邮件,并且它们都显示类似。

我想将每个服务器的显示名称更改为更有用的名称。例如,但我正在做的事情是在地址传输到网关服务器时弄乱地址。Web Server <[email protected]>From

我试过了

echo "Test message - you know the drill" | mailx -r "Web Server [email protected]" -s "Test Message" [email protected]

echo "Test message - you know the drill" | mailx -r "Web Server <[email protected]>" -s "Test Message" [email protected]

但在这两种情况下,本地 PostFix 都会以某种方式丢失发件人地址,并且发送到网关服务器的消息的地址from[email protected]网关smtp.private.example.uk服务器的 FQDN。该邮件被发送到 GMail,但未通过 SPF 和 DKIM 测试,因此被毫不客气地丢弃在垃圾邮件中。 (我不知道本地postfix是如何获取网关服务器的名称的)

那么,如何将显示名称添加到传递给 mailx 的参数中,以便它能够在从服务器到服务器的过程中幸存下来并由 GMail 正确显示?

Mailx 版本 3.14 (GNU Mailutils) Ubuntu 22.04

我只对 PostFix 进行了一项更改main.cf:为网关服务器添加了中继主机地址。

答案1

由于您想要使用预安装的程序并且安装了 postfix,因此我们可以使用 postfix 模式让您更好地控制发送的内容及其外观。

这是通过sendmail -t.在这种模式下,我们使用 postfix 作为邮件提交代理(MSA),无论如何mailx,您可以指定整个标头和正文,postfix 将“按原样”发送它

一个简单的方法是使用echo.

例如

echo "From: My name <me@myaddress>
To: You <you@youraddress>
Subject: You'll never guess what...

This is a test!" | /usr/sbin/sendmail -t

这允许您将任何标头设置为您喜欢的任何值。

现在这并没有改变信封发件人,因此原始名称在其他行中可见,因此它并不完美(但mailx如果发件人地址与帐户的地址不匹配,您会得到它),但它避免了任何复杂性mailx或其他邮件用户代理(MUA)可能带进。

相关内容