我已经使用以下内容设置了 MSMTP,但如果我从 CLI 发送电子邮件,它要么会被阻止,要么最终会出现在我的垃圾邮件中,因为它没有“收件人”/“发件人”或任何顶部内容。但来自 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: [email protected], [email protected]
# Send everything else to admin
#default: [email protected]
# Send cron to Mark
#cron: [email protected]
#############################
root : [email protected]
EOL
# Needed for Mail Command
cat << EOL >/tmp/testfile
To: [email protected]
From: [email protected]
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
答案1
很遗憾,邮件传输协议对您没有任何帮助到:邮件客户端显示的字段。它仅使用您提供的地址与邮件服务器进行通信 - 无论出于何种原因,它都不会在邮件正文中包含这些地址。
此行为不同于它的处理从:和日期:字段,默认情况下将自动包含(阅读更多)。
您可以通过在详细模式下运行来直接看到这一点(查找“ --> 354 Go ahead ...
”之后的行):
- 比较
echo "Subject: Test\r\n\r\nMessage contents\r\n" | msmtp -v [email protected]
- 与
echo "To: [email protected]\r\nSubject: Test\r\n\r\nMessage contents\r\n" | msmtp -v [email protected]
一般来说,邮件服务器会很乐意接受此类邮件,而且许多服务器也会很乐意发送这些邮件,但某些技术不成熟的公司会错误地将所有此类邮件标记为垃圾邮件。在这种情况下,您唯一的办法可能是包括到:消息中的字段通过管道传输到邮件传输协议。 (甚至可能不需要是有效的“收件人:”电子邮件地址。)