Sendmail vs SMTP

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

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

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

这有两个原因:1)UNIX中几乎所有执行sendmail操作的程序都是替代品(例如,包括Postfix和Exim ); 2)sendmail或其替代品旨在处理邮件而不是其他任何东西 – 通过使用sendmail,您不必设计SMTP客户端。

UNIX的Mutt电子邮件客户端是一个仍拒绝直接与邮件服务器通信的电子邮件客户端; 维基上有一个好的(技术)描述。

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

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

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

Postfix的一个有用链接可能是一般邮件传递性能提示 – 请注意引用说法

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

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

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

使用sendmail。

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

我成功地在几个项目上使用了SMTP。 我的感觉是,这是一个更“标准”,但我可能是错的。

我没有使用过sendmail。 我担心的是,如果你不直接在Unix / Linux上开发,在开发环境中设置可能会更困难。 您可以直接与任何SMTP服务器(甚至是远程服务器)进行通信,您必须在rails计算机上安装sendmail才能使其正常工作。

我遇到的主要问题是电子邮件是异步发送邮件。 如果没有本地SMTP服务器,本地sendmail实例将更具性能。

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