26

生产中的 Rails 应用程序应该使用 smtp 或 sendmail 发送邮件吗?

4

4 回答 4

42

SMTP 是几乎所有 Internet 主机用来发送邮件的协议。sendmail 使用此协议。Sendmail 确定将您的消息发送到何处以及如何发送。

一些邮件程序(今天的大多数)将直接连接到邮件服务器并向其发送 SMTP。然而,“传统”方法——可以说是更好的方法——是让 sendmail 来做。

这有两个原因: 1) UNIX 中几乎每个执行 sendmail 功能的程序都被设计为直接替代(例如PostfixExim );和 2) sendmail 或其替代品旨在处理邮件,仅此而已 - 通过使用 sendmail,您不必设计 SMTP 客户端。

用于 UNIX 的 Mutt 电子邮件客户端是一种仍然拒绝将 SMTP 直接与邮件服务器通信的电子邮件客户端。wiki上有一个好的(技术)描述。

如果您可以选择(无论如何在 UNIX 上)直接使用 SMTP 或使用 sendmail,请使用 sendmail - 特别是在服务器上。

于 2009-08-25T03:17:11.720 回答
8

正如 NDP 已经提到的,它们都可以正常工作 - 也就是说,如果您的消息量不超过一定数量。

例如,如果您的应用程序可以与本地 SMTP 服务器(IP 127.0.0.1,端口 25)或同一子网中的服务器(即通过低延迟链接)进行 SMTP 通信,并且该服务器不使用任何在将邮件排队之前进行内容过滤,您通常可以在更短的时间内通过 SMTP 提交更多邮件。

Postfix 的一个有用链接可能是General Mail Delivery Performance Tips - 注意引用说

通过 SMTP 而不是 /usr/sbin/sendmail 提交邮件。

但是,在现代硬件上,如果您不打算每秒提交超过 10 条消息,您应该不会注意到任何真正的差异。

于 2009-08-25T13:44:40.190 回答
7

您的问题不正确 - SMTP 代表简单邮件传输协议,而 sendmail 是使用此协议发送邮件的软件。

使用发送邮件。

于 2009-08-25T00:35:12.770 回答
6

他们都可以正常工作。Action Mailer两者都支持。

我已经在几个项目中成功使用了 SMTP。我的感觉是这有点“标准”,但我可能错了。

我没用过sendmail。我担心的是,如果您不直接在 Unix/Linux 上进行开发,那么在开发环境中进行设置可能会更加困难。您可以直接与任何 SMTP 服务器对话——甚至是远程服务器——您必须在 rails 机器上安装 sendmail 才能使其工作。

我在使用电子邮件时遇到的主要问题是异步发送消息。如果没有本地 SMTP 服务器,本地 sendmail 实例的性能会更高。

无论哪种方式,如果您决定选择错误,它看起来很容易切换。

于 2009-08-25T03:33:12.813 回答