我已经配置了一个基本的 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 它对我有用