邮件疑难解答

我只是想给自己发一封电子邮件。 在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拒绝的连接”部分是事情出错的地方,但我不知道在哪里或如何开始故障排除。 有什么build议?

 $ 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 

看起来您的防火墙规则中没有打开端口25。 这是我所看到的

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

看起来像Ubuntu上的默认sendmailconfiguration是只听localhost。 在/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重新加载。 一旦完成,您可以确认sendmail正在监听所有使用的地址

 netstat -tnlp 

请注意,在现代发行版中,您不应该手工编辑sendmail.cf文件。 那就是疯狂。

我只是写了一个完整的冗长的回应,因为我没有意识到你正在做的这个主机ve.5wrvhfxg.vesrv.com也是205.186.165.157,这是woollymammothlabs.com的主要MX。

值得一提的是,如果你真正抱怨的是你的邮件服务器无法收到邮件,那么在有关你无法发送邮件的问题上进行处理可能不是获得结果的最好方式。

您的问题很可能是您的邮件服务器不在端口25上侦听,至less不在外部接口上。 你可以做一个grep 127.0.0.1 /etc/mail/sendmail.cf让我们知道结果吗?

编辑:因为你已经这样做了,现在很明显,你的sendmail被configuration为仅在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你仍然有问题。