我正在开发我的Ubuntu 9.10机器的networking(PHP)。
我使用sendmail发送邮件,而在我的本地机器上开发时,我发送本地邮件(给我的用户doron)。
直到前几天,我能够从php的mail()函数发送邮件,并使用mail命令从命令行发送邮件。
我用mailutils使用sendmail。
自从最近几天以来,似乎停止了工作。
当我尝试从命令行发送邮件时,我在系统日志(和mail.info,以及mail.log)中得到以下内容:
Mar 3 13:27:58 doron-desktop sendmail[4693]: o23BRwlA004693: from=doron, size=84, class=0, nrcpts=1, msgid=<201003031127.o23BRwlA004693@doron-desktop.>, relay=doron@localhost Mar 3 13:27:58 doron-desktop sm-mta[4694]: o23BRwtQ004694: ruleset=check_rcpt, arg1=<doron@doron-desktop>, relay=localhost [127.0.0.1], reject=553 5.1.8 <doron@doron-desktop>... Domain of sender address doron@doron-desktop does not exist Mar 3 13:27:58 doron-desktop sendmail[4693]: o23BRwlA004693: to=<doron@doron-desktop>, ctladdr=doron (1000/1000), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30084, relay=[127.0.0.1] [127.0.0.1], dsn=5.1.8, stat=User unknown Mar 3 13:27:58 doron-desktop sm-mta[4694]: o23BRwtQ004694: from=<doron@doron-desktop>, size=84, class=0, nrcpts=0, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
尝试本地telnet到端口25导致以下(doron @ doron-desktop相同的输出):
doron@doron-desktop:/var/mail$ telnet localhost 25 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 doron-desktop. ESMTP Sendmail 8.14.3/8.14.3/Debian-9ubuntu1; Wed, 3 Mar 2010 13:26:06 +0200; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1] helo localhost 250 doron-desktop. Hello localhost [127.0.0.1], pleased to meet you mail from: doron@localhost 250 2.1.0 doron@localhost... Sender ok rcpt to: root@localhost 553 5.1.8 root@localhost... Domain of sender address doron@doron-desktop does not exist
但是 – 如果我这样做,但在邮件领域使用[email protected],我得到:
250 2.1.5 root... Recipient ok
我的/ etc / hosts文件:
127.0.0.1 localhost 127.0.1.1 doron-desktop doron-desktop.
(如果我没有“doron-desktop”(结尾点),邮件命令需要很多时间(大约30秒),直到它响应,但结果是一样的。)
我相信你需要改变主机文件状态:
127.0.0.1 localhost 127.0.0.1 doron-desktop
Ubuntu Edgy引入了127.0.1.1。 但是一些应用程序寻找主机名来匹配127.0.1.1。 Sendmail就是这样一个应用程序。 如果你想坚持新的标准,你可以保留127.0.1.1,但一定要添加127.0.0.1 doron-desktop。
还请注意您的错误日志中的以下内容:
ruleset=check_rcpt
之后,您会被告知您的doron-desktop域名不存在。 有不同的文件可以让你设置你的域名。 尝试在以下区域设置域名:
/etc/hosts /etc/resolv.conf sendmail conf files
你一定要说服sendmail,你有一个域名,它是FQDN(即使它不是)。 如果你有一个域名注册使用(在你的主机文件中):
doron-desktop.somedomain.com
服务器不会在意公共dns不指向您的台式计算机。 也就是说,您发送电子邮件的电子邮件服务器可能(或将会)关心您的桌面服务器是否代表您放入主机文件的任何域名发送电子邮件,并可能阻止电子邮件,返回或将其列入黑名单(如果您只是进行testing,就不会发生黑名单 – 您需要发送数千个testing)。
这听起来像在某些时候,sendmail现在正在检查,看看你的域名是否可以parsing。
在这种情况下,您可以通过重buildsendmail.cf来让sandmail接受无法parsing的域名。 这涉及到更新sendmail.mc与以下内容:
FEATURE(`accept_unresolvable_domains')dnl
然后用make命令重新编译sendmail并重新启动sendmail:
/etc/mail/make
在继续之前,请务必备份sendmail.mc和sendmail.cf。