我正在使用 ubuntu 发行版。
我使用 apt 安装了 sendmail,并编辑了/etc/mail/sendmail.mc
,并添加了以下行
define(`SMART_HOST', `ssl0.ovh.net')
FEATURE(`authinfo')
线前
define(`_USE_ETC_MAIL_')dnl
并且还配置了身份验证(/etc/mail/authinfo):
AuthInfo:ssl0.ovh.net "U:[email protected]" "P:123456" "M:PLAIN"
m4 sendmail.mc >sendmail.cf
然后跑service sendmail restart
我创建了一个文件来测试它email.txt
:
To: [email protected]
From: [email protected]
Subject: Foo Bar
Hello
(empty line)
然后我测试了一下:cat email.txt | /usr/lib/sendmail -bm -t -v
但失败了:
[email protected]... Connecting to [127.0.0.1] via relay...
[email protected]... Deferred: Connection refused by [127.0.0.1]
为什么它连接 127.0.0.1 而不是外部 smtp 服务器(ssl0.ovh.net)?
答案1
Sendmail 过去被安装为设置 root uid 的程序。为了避免安全风险,Sendmail-8.12+ 不再(默认)被安装为设置 root uid 的程序。
非 root 用户执行的 Sendmail 将消息传递到在 127.0.0.1:25 以 root 权限运行的 sendmail 守护程序。非 root 用户执行的 Sendmail 使用/etc/mail/submit.cf
而不是/etc/mail/sendmail.cf
。
https://www.sendmail.com/sm/open_source/security/secure-install/
要以 root 身份测试您的 sendmail.cf 配置,请执行以下命令(-Am
添加了您的测试命令):
cat email.txt | /usr/lib/sendmail -Am -bm -t -v