邮件疑难解答

邮件疑难解答

我只是想给自己发一封电子邮件。在 Ubuntu 上使用 sendmail。出于某种原因,它不起作用。这是我正在运行的命令以及运行时显示的内容:

jason@ve:~$ echo "Subject: test" | /usr/lib/sendmail -v [email protected]
[email protected]... Connecting to [127.0.0.1] via relay...
220 ve.5wrvhfxg.vesrv.com ESMTP Sendmail 8.14.3/8.14.3/Debian-9.1ubuntu1; Wed, 29 Dec 2010 13:51:49 -0800; (No UCE/UBE) logging access from: localhost.localdomain(OK)-localhost.localdomain [127.0.0.1]
>>> EHLO ve.5wrvhfxg.vesrv.com
250-ve.5wrvhfxg.vesrv.com Hello localhost.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
>>> VERB
250 2.0.0 Verbose mode
>>> MAIL From:<[email protected]> SIZE=14
250 2.1.0 <[email protected]>... Sender ok
>>> RCPT To:<[email protected]>
>>> DATA
250 2.1.5 <[email protected]>... Recipient ok
354 Enter mail, end with "." on a line by itself
>>> .
050 <[email protected]>... Connecting to 205.186.165.157. via esmtp...
050 <[email protected]>... Deferred: Connection refused by 205.186.165.157.
250 2.0.0 oBTLpnEj012261 Message accepted for delivery
[email protected]... Sent (oBTLpnEj012261 Message accepted for delivery)
Closing connection to [127.0.0.1]
>>> QUIT
221 2.0.0 ve.5wrvhfxg.vesrv.com closing connection

我觉得“205.186.165.157 拒绝连接”部分出了问题,但我不知道从哪里或如何开始进行故障排除。有什么建议吗?

$ grep 127.0.0.1 /etc/mail/sendmail.cf
O DaemonPortOptions=Family=inet,  Name=MTA-v4, Port=smtp, Addr=127.0.0.1
O DaemonPortOptions=Family=inet,  Name=MSP-v4, Port=submission, M=Ea, Addr=127.0.0.1
R<@> < $* @ [127.0.0.1] >
                        $: < ? $&{client_name} > < $1 @ [127.0.0.1] >
R127.0.0.1              $@ RELAY                originated locally
# DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
# DAEMON_OPTIONS(`Family=inet,  Name=MSP-v4, Port=submission, M=Ea, Addr=127.0.0.1')dnl

答案1

看起来你的防火墙规则中没有打开端口 25。以下是我看到的打开的端口

PORT     STATE    SERVICE
22/tcp   open     ssh
80/tcp   open     http
3306/tcp open     mysql

Ubuntu 上的默认 sendmail 配置似乎只是在本地主机上监听。在 /etc/mail/sendmail.mc 中编辑以下行

DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl

DAEMON_OPTIONS(`Family=inet,  Name=MTA-v4, Port=smtp, Addr=0.0.0.0')dnl

然后在 /etc/mail 中运行 make,然后运行 ​​/etc/init.d/sendmail reload。完成后,您可以使用以下命令确认 sendmail 正在监听所有地址

netstat -tnlp

需要注意的是,在现代发行版中,您不应手动编辑 sendmail.cf 文件。那样会很疯狂。

答案2

我刚刚写了一个完整冗长的回复,因为我没有意识到你执行此操作的主机 ve.5wrvhfxg.vesrv.com 也是 205.186.165.157,即 woollymammothlabs.com 的主要 MX。

不管怎样,如果你真正抱怨的是你的邮件服务器无法收到邮件中,用一个问题来表达你无法发送电子邮件可能不是获取结果的最佳方式。

您的问题可能是您的邮件服务器没有监听端口 25,至少没有监听外部接口。您能做一下grep 127.0.0.1 /etc/mail/sendmail.cf并告诉我们结果吗?

编辑:既然您已经这样做了,现在很明显您的 sendmail 配置为仅监听 127.0.0.1,您需要修复它。slillibri 是对的,如果可以避免,您不想手动编辑 sendmail.cf,这意味着进入/etc/mail并编辑相关行sendmail.mc。我不能代表 ubuntu,但在 Fedora/CentOS 上,这通常意味着更改行

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')

请注意在行首添加 # 不会注释掉 m4 文件中的一行比如这个;你必须在dnl前面加上注释。然后使用 重新生成文件,make sendmail.cf并使用 重新启动service sendmail restart。ubuntu 上的过程可能类似。

完成后,执行netstat -apn|grep -w 25并寻找类似

tcp        0      0 0.0.0.0:25                0.0.0.0:*                   LISTEN      2012/sendmail: acce 

重要的一点是0.0.0.0:25,这意味着 sendmail 正在监听所有接口;如果它仍然说127.0.0.1:25你仍然有问题。

相关内容