
我已經配置了基本的 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
我已經嘗試過的:
透過發送郵件
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時它對我有用