Email

msmtp 空 TO 和 FROM 欄位 - 當從 CLI 或手動發送時,所有郵件都以 Bulk Mail 形式結束

  • October 23, 2019

我已經使用以下內容設置了 MSMTP,但如果我從 CLI 發送電子郵件,它要麼被阻止,要麼最終進入我的垃圾郵件,因為它沒有 TO/FROM 或任何頂部。但是來自 CRON 的電子郵件格式正確。

sudo apt-get update
sudo apt-get install -y msmtp msmtp-mta 

# MSMTPRC Configuration
cat << EOL >/etc/msmtprc
# Set default values for all following accounts.
defaults
auth           on
tls            on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile        /var/log/msmtp.log
aliases        /etc/aliases

# Comcast
account        Comcast
host           smtp.hmc1.comcast.net
port           587
from           USER@COMCAST
user           USER@COMCAST
password       PWD


account default : Comcast
EOL

# Set Strong Permissions due to Plain Text PWD
sudo chmod 600 /etc/msmtprc

# Configure User Alias
cat << EOL >/etc/aliases
# Example aliases file  
# Send root to Joe and Jane
#root: joe_smith@example.com, jane_chang@example.com
# Send everything else to admin
#default: admin@domain.example
# Send cron to Mark
#cron: mark_jones@example.com
#############################
root : sysalert@company.com
EOL

# Needed for Mail Command
cat << EOL >/tmp/testfile
To: john@company.com
From: server@company.com
Subject: E-Mail Setup Script has Completed Successfully

"${HOSTNAME} Has been configued to use msmtp, this program will e-mail all CRON results automatically, but does not suporrt the "mail -s" command
EOL

在此處輸入圖像描述

不幸的是,msmtp對郵件客戶端顯示的**To:**欄位沒有任何幫助。它僅使用您提供的地址與郵件伺服器進行通信——無論出於何種原因,它都不會在郵件正文中包含這些地址。

此行為與其對**From:Date:**欄位的處理不同,預設情況下將自動包含這些欄位(閱讀更多)。

您可以通過在詳細模式下執行直接看到這一點(查找“ --> 354 Go ahead ...”之後的行):

  • 比較echo "Subject: Test\r\n\r\nMessage contents\r\n" | msmtp -v email@example.com
  • 對比echo "To: email@example.com\r\nSubject: Test\r\n\r\nMessage contents\r\n" | msmtp -v email@example.com

通常,郵件伺服器會很樂意接受此類郵件——許多人也會很樂意投遞它們——但某些技術不成熟的公司會錯誤地將所有此類郵件標記為垃圾郵件。在這種情況下,您唯一的辦法可能是在通過管道傳送到msmtp的消息中包含一個**To:**欄位。(它甚至可能不需要是有效的收件人:電子郵件地址。)

引用自:https://unix.stackexchange.com/questions/311356