我已按照以下步骤配置 sendmail
apt-get install sendmail
添加以下内容
/etc/mail/auth/client-info
AuthInfo:<gworks.yyy> "U:<[email protected]>" "I:<[email protected]>" "P:<xxxxxxx>"
sudo bash -c "cd /etc/mail/auth/ && makemap hash client-info < client-info"
/etc/mail/sendmail.mc
在之前添加以下几行邮件定义定义(
SMART_HOST', <gworks.yyy>)dnl define(
confAUTH_MECHANISMS',EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl FEATURE(
authinfo',`hash /etc/mail/auth/client-info')dnlsudo bash -c "cd /etc/mail/ && m4 sendmail.mc > sendmail.cf"
- 重新启动 sendmail 服务
使用 telnet 命令测试
远程主机的 telnet 命令引发错误拒绝中继
root@e5eae2c464a7:/var/www/public# telnet 10.1.2.3 25
Trying 10.1.2.3...
Connected to 10.1.2.3.
Escape character is '^]'.
220 cthree.gworks.yyy ESMTP Sendmail 8.15.2/8.15.2/Debian-3; Tue, 11 Oct 2016 06:45:28 GMT; (No UCE/UBE) logging access from: development.internet(OK)-development.internet [10.1.2.4]
helo server
250 cthree.gworks.mobi Hello development.internet [10.1.2.4], pleased to meet you
mail from: [email protected]
250 2.1.0 [email protected]... Sender ok
rcpt to: [email protected]
550 5.7.1 [email protected]... Relaying denied
我在这里做错了什么为什么没有从远程主机发送邮件?
答案1
Sendmail 默认拒绝中继(接受从外部主机到外部电子邮件地址的消息)。
您可以允许基于发送主机 IP 地址或在 SMTP 身份验证之后进行中继。
为了允许基于发送主机 IPv4 地址进行中继,请使用访问文件中的以下条目之一(访问文件需要使用 进行编译makemap
):
# relay if connection from 10.1.2.4
connect:10.1.2.4 RELAY
# relay if connection from 10.2.0.0/24
connect:10.2.0 RELAY
# relay if connection from 10.3.0.0/16
connect:10.3 RELAY
警告: 在我看来,仅基于 IP 地址的中继,不进行任何额外检查,只适合作为小型网络/站点的永久解决方案。垃圾邮件发送者和黑客使其不适合大型网络。