我正在使用 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
我只main.cf
对 PostFix 进行了一项更改:为网关服务器添加了中继主机地址。
由于您想要使用预安装的程序并且安装了 postfix,因此我们可以使用 postfix 模式让您更好地控制发送的内容及其外观。
这是通过
sendmail -t
. 在这种模式下,我们使用 postfix 作为邮件提交代理(MSA),无论如何mailx
,您可以指定整个标头和正文,postfix 将“按原样”发送它一个简单的方法是使用
echo
.例如
这允许您将任何标头设置为您喜欢的任何值。
现在,这不会更改信封发件人,因此原始名称在其他行中可见,因此它并不完美(但
mailx
如果发件人地址与帐户的地址不匹配,您会得到它),但它避免了任何复杂性mailx
或其他邮件用户代理 (MUA) 可能会引入。