我在 VPS 上安装了(干净的)Debian 6,并在其上运行基于 Django 的应用程序。一切正常,只是我需要设置 SMTP 以使我的应用程序(即发件人是本地的)能够向其用户发送电子邮件(因此,收件人在互联网上的其他地方)。
最简单的方法是什么?Debian 通常附带exim4
,但我无法设置它来执行这项基本任务。是否有任何教程或一组我需要检查的基本步骤?
我现在不需要任何本地电子邮件递送。
当我尝试使用默认配置发送电子邮件时,我得到的结果如下/var/log/exim/mainlog
(将两个域替换为 foo.com 和 bar.com):
2011-08-27 18:05:27 1QxLNv-0008EL-60 <= [email protected] H=localhost (foo.com) [127.0.0.1] P=esmtp S=2438
2011-08-27 18:05:27 1QxLNv-0008EL-60 remote host address is the local host: bar.com
2011-08-27 18:05:27 1QxLNv-0008EL-60 == [email protected] R=smarthost defer (-1): remote host address is the local host
2011-08-27 18:05:27 1QxLNv-0008EN-7y <= <> R=1QxLNv-0008EL-60 U=Debian-exim P=local S=567
2011-08-27 18:05:27 1QxLNv-0008EL-60 Frozen
2011-08-27 18:05:27 1QxLNv-0008EN-7y remote host address is the local host: foo.com
2011-08-27 18:05:27 1QxLNv-0008EN-7y == [email protected] <[email protected]> R=hub_user_smarthost defer (-1): remote host address is the local host
2011-08-27 18:05:27 1QxLNv-0008EN-7y Frozen
答案1
您的 exim4 配置错误。
您需要找出从 VPS 提供商发送电子邮件的最佳方式。 可以通过他们的 SMTP 服务器,这意味着您需要将其配置为智能主机或者直接由你的 VPS 交付,这意味着你需要将其配置为完整互联网地点。
无论哪种方式,都可以通过以下命令重新配置你的 exim4:
# sudo dpkg-reconfigure exim4-config
在那里您可以选择:
internet site; mail is sent and received directly using SMTP
mail sent by smarthost; received via SMTP or fetchmail
mail sent by smarthost; no local mail
local delivery only; not on a network
no configuration at this time
相应地重新配置它。
答案2
“远程主机地址是本地主机”意味着您完成了以下两件事之一:
- 告诉 Exim 它的智能主机实际上就是它自己(这让它很恼火);或者
- DNS 表示目标域的 MX/A 记录实际上是同一台机器,并且您尚未配置 MTA 来接收该域的邮件。
鉴于 Exim 对智能主机的热切关注,我会说你拥有前者。
如果你使用以下方式配置你的 Exim 安装正确的smarthost(通常是您的 ISP 或 MSP 的主机)肯定会……嗯,不一定有效,但至少会给您一个不同的错误。