Postfix 不会添加:发送邮件的标头

Postfix 不会添加:发送邮件的标头

我已经配置了一个基本的 Postfix 设置,使用外部 smtp 中继主机发送邮件,并通过 本地解析邮件地址/etc/aliases。发送电子邮件有效(通过命令sendmail)但是,当我收到邮件时,To:标题丢失;它不会显示在原始电子邮件消息中。

问题:如何才能使To:标题显示在接收邮件中?

更多细节

例如,当我从命令行发送此内容时:

echo -e "Subject: test no header\n\nBody message" | sendmail [email protected]

或者

echo -e "Subject: test no header\n\nBody message" | sendmail root

/etc/aliases一条线root: [email protected]

我在这两种情况下都收到了电子邮件。但在这两种情况下,邮件To:头都不在。

原始邮件如下所示:

Return-Path: <[email protected]>
X-Envelope-To: [email protected]
X-Footer: aW5kaWdvbWVkLmNvbQ==
Received: from .....
Received: by ...  
Delivered-To: [email protected]
Received: by myhost.mydomain.com (Postfix, from userid 0)
    id 70CD8A03; Tue, 12 Jan 2021 14:48:16 +0100 (CET)
Subject: test no header
Message-Id: <[email protected]>
Date: Tue, 12 Jan 2021 14:48:16 +0100 (CET)
From: root <[email protected]>

Body message

我已经尝试过的:

  • 通过 DOES 发送邮件mailx会插入 To: 标题,例如echo -e "Body message" | mailx root -s "Subject: test no header"

  • 我已经尝试进行配置always_add_missing_headers = yes/etc/postfix/main.cf但没有帮助。

/etc/postfix/main.cf我的文件中的一些相关部分(我认为) :

...
append_dot_mydomain = no
...
# General
myhostname = myhost.mydomain.com
myorigin = myhost.mydomain.com
mydestination = $myhostname localhost.$mydomain localhost myhost
...
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
....
relayhost = mail.something.com:465

答案1

您不需要任何To:标头即可将邮件传递到目的地。只需使用 SMTP 信封即可。

与该mailx工具不同,裸sendmail命令不是一个完整的邮件客户端。

sendmail 命令不会创建格式正确的邮件消息,只会创建最小的 SMTP 信封以确保成功传输。如果您想要格式正确的电子邮件消息,那么您需要将其作为(标准)输入提供给 sendmail 命令。

换句话说:

您需要向 sendmail 提供由标题组成的消息,每个标题占一行,标题和标题值之间用冒号隔开,长标题在下面一行继续,开头是一个或多个空格。然后是空行,将消息标题和正文隔开。然后是消息正文。

像这样

To: [email protected]
Content-Type: text/plain; charset=us-ascii>
From: [email protected] (Hermanb)
Subject:  A very very long 
  subject header spanning multiple lines
Date: Tue, 12 Jan 20121 15:46:24 +0200

test test

More test text
.

答案2

当我添加 always_add_missing_headers = yes 它对我有用

相关内容