Sendmail/后缀邮件不能从本地Mac OS X (Mountain Lion)发送



我试图让sendmail/postfix在我的iMac(10.9.2)上正常工作。我有一个php web应用程序,我试图在本地测试,它需要发送邮件。

即使直接测试:

date | mail -s test myEmail@gmail.com

邮件永远不会到达,即使是垃圾邮件。在日志中,我看到了大量的"操作超时"错误,联系google/gmail:

Mar 17 10:57:13 imac.helion3.com postfix/postfix-script[10924]: starting the Postfix mail system
Mar 17 10:57:13 imac.helion3.com postfix/master[10925]: daemon started -- version 2.9.4, configuration /etc/postfix
Mar 17 10:57:13 imac.helion3.com postfix/qmgr[10933]: 012175629F9F: from=<daemon@localhost.localhost>, size=352, nrcpt=1 (queue active)
Mar 17 10:57:16 imac.helion3.com postfix/pickup[10932]: 94BBF562A0B2: uid=501 from=<botskonet>
Mar 17 10:57:16 imac.helion3.com postfix/cleanup[10948]: 94BBF562A0B2: message-id=<20140317175716.94BBF562A0B2@localhost>
Mar 17 10:57:16 imac.helion3.com postfix/qmgr[10933]: 94BBF562A0B2: from=<botskonet@localhost.localhost>, size=310, nrcpt=1 (queue active)
Mar 17 10:57:43 imac.helion3.com postfix/smtp[10937]: connect to gmail-smtp-in.l.google.com[74.125.25.27]:25: Operation timed out
Mar 17 10:57:46 imac.helion3.com postfix/smtp[10951]: connect to gmail-smtp-in.l.google.com[74.125.25.26]:25: Operation timed out
Mar 17 10:58:13 imac.helion3.com postfix/smtp[10937]: connect to alt1.gmail-smtp-in.l.google.com[74.125.193.27]:25: Operation timed out
Mar 17 10:58:16 imac.helion3.com postfix/smtp[10951]: connect to alt1.gmail-smtp-in.l.google.com[74.125.193.27]:25: Operation timed out
Mar 17 10:58:43 imac.helion3.com postfix/smtp[10937]: connect to alt2.gmail-smtp-in.l.google.com[74.125.196.26]:25: Operation timed out
Mar 17 10:58:46 imac.helion3.com postfix/smtp[10951]: connect to alt2.gmail-smtp-in.l.google.com[74.125.196.27]:25: Operation timed out
Mar 17 10:59:13 imac.helion3.com postfix/smtp[10937]: connect to alt3.gmail-smtp-in.l.google.com[173.194.76.27]:25: Operation timed out
Mar 17 10:59:16 imac.helion3.com postfix/smtp[10951]: connect to alt3.gmail-smtp-in.l.google.com[74.125.29.26]:25: Operation timed out
Mar 17 10:59:43 imac.helion3.com postfix/smtp[10937]: connect to alt4.gmail-smtp-in.l.google.com[74.125.131.27]:25: Operation timed out
Mar 17 10:59:43 imac.helion3.com postfix/smtp[10937]: 012175629F9F: to=<myEmail@gmail.com>, relay=none, delay=689, delays=538/0.01/150/0, dsn=4.4.1, status=deferred (connect to alt4.gmail-smtp-in.l.google.com[74.125.131.27]:25: Operation timed out)
Mar 17 10:59:46 imac.helion3.com postfix/smtp[10951]: connect to alt4.gmail-smtp-in.l.google.com[173.194.75.27]:25: Operation timed out
我已经运行了推荐的后缀perms命令:
sudo mkdir -p /Library/Server/Mail/Data/spool
sudo /usr/sbin/postfix set-permissions
sudo /usr/sbin/postfix start

在日志中看到ipv6错误后,我已经配置后缀使用ipv4。这是为了在本地测试一些东西,所以我不介意。

我已经配置php使用:

sendmail_path=/usr/sbin/sendmail -t -i

看来端口25被阻止了(可能来自您的ISP或您的端):

google.com[74.125.131.27]:25: Operation timed out

打开终端并粘贴:

(echo >/dev/tcp/localhost/25) &>/dev/null && echo "TCP port 25 opened" || echo "TCP port 25 closed"

这应该表明您的机器上是否打开了端口25。如果端口是关闭的,您显然需要打开它。

另一个有用的命令是:
sudo lsof -i -P | grep -i "listen"

表示当前所有打开的端口和连接。

因为你没有提供任何关于你的配置本身的信息,我只能推测你的中继主机设置为。如果是google,那么尝试将端口设置为587:

relayhost = smtp.gmail.com:587

通常是ISP的默认阻止端口25,因为它通常被垃圾邮件发送者使用。

编辑:决定有两件事必须考虑进去对这个场景的考虑:

  1. 后缀邮件服务器正在使用动态ip
  2. 邮件服务器是由阻止端口25的ISP托管的

修复方法是使用中继服务器,这涉及到更新后缀主要。Cf中添加了中继主机信息和身份验证旗帜。日志含义将默认提交端口更改为587以绕过isp块。

最新更新