安装一个简单的 SMTP 客户端:
sudo apt install msmtp msmtp-mda
在 msmtprc 中设置::
cat .msmtprc
account default
host smtp.qq.com
from [email protected]
auth on
tls on
tls_certcheck off
user [email protected]
password xxxx
logfile ~/.msmtp.log
我可以用qq账号发邮件。
echo "Testing msmtp " | mail -s "hi root" -r [email protected] -- [email protected]
该电子邮件可以在雅虎电子邮件中找到。
我发现一个新问题,用户无法向系统中的 root 发送电子邮件!
echo "cron task work done " | mail -s "hi root" root
mail: cannot send message: Process exited with a non-zero status
检查日志:
Aug 24 20:47:31 host=smtp.qq.com tls=on auth=on [email protected] [email protected] [email protected] smtpstatus=501 smtpmsg='501 Mail from address must be same as authorization user.' errormsg='envelope from address [email protected] not accepted by the server' exitcode=EX_DATAERR
echo "cron task work done " | mail -s "hi root" -r [email protected] root
日志信息:
Aug 29 06:56:39 host=smtp.qq.com tls=on auth=on [email protected] [email protected] [email protected] smtpstatus=501 smtpmsg='501 Mail from address must be same as authorization user.' errormsg='envelope from address [email protected] not accepted by the server' exitcode=EX_DATAERR
每次调用mail命令时,它都会中继到外部主机smtp.qq.com,即使我指定返回主机为[email protected],如何使mail命令在系统中的用户和root之间发送电子邮件?我发现安装 msmtp-mda 时 postfix 或 exim4 将被删除,这一事实可能与我的问题有关。
您已经安装了一个简单的转发邮件服务器 (
msmtp
)。这是Debian 的软件包描述这里的相关点是,“将邮件转发到 SMTP 服务器 [...],该服务器负责最终投递”。
这意味着
msmtp
您只能将电子邮件转发到您的远程邮件服务器;您无法在本地交付。如果您想这样做,请安装 Exim、Postfix、Sendmail 或其他功能齐全的 MTA(邮件传输代理)之一。