Приложение rails в производстве должно использовать smtp или sendmail для отправки писем?
Sendmail против SMTP
Ответы (4)
SMTP — это протокол, который используется почти всеми узлами Интернета для отправки почты. Этот протокол использует sendmail. Sendmail определяет, куда отправить ваше сообщение и как.
Некоторые почтовые программы (большинство современных) подключаются напрямую к почтовому серверу и общаются с ним по протоколу SMTP. Однако "традиционный" метод - и, возможно, лучший метод - это позволить sendmail сделать это.
Для этого есть две причины: 1) почти каждая программа в UNIX, которая делает то же, что и sendmail, предназначена для замены (включая Postfix и Exim, например); и 2) sendmail или его замена были разработаны для обработки почты и ни для чего другого - при использовании sendmail вам не нужно разрабатывать SMTP-клиент.
Почтовый клиент Mutt для UNIX — это один из почтовых клиентов, который по-прежнему отказывается общаться по SMTP напрямую с почтовым сервером; хорошее (техническое) описание находится на вики.
Если у вас есть выбор (по крайней мере, в UNIX) использовать SMTP напрямую или использовать sendmail, используйте sendmail, особенно на серверах.
Как уже упоминалось в NDP, они оба работают нормально, то есть, если ваш объем сообщений не превышает определенного количества.
Например, если ваше приложение может обмениваться данными по SMTP либо с локальным SMTP-сервером (IP 127.0.0.1, порт 25), либо с сервером в той же подсети (т. е. по каналу с малой задержкой), и этот сервер не использует фильтры содержимого до того, как оно поставит сообщение в очередь, обычно вы сможете отправить гораздо больше писем по SMTP за более короткое время.
Полезной ссылкой для Postfix может быть Общие советы по повышению эффективности доставки почты — обратите внимание на цитату:
Отправляйте почту через SMTP вместо /usr/sbin/sendmail.
Однако на современном оборудовании, если вы не планируете отправлять более 10 сообщений в секунду, вы не заметите никакой реальной разницы.
Ваш вопрос неверен - SMTP означает простой протокол передачи почты, тогда как sendmail - это часть программного обеспечения для отправки почты с использованием этого протокола.
Используйте сендмайл.
Они оба будут работать нормально. Action Mailer поддерживает оба варианта.
Я успешно использовал SMTP в нескольких проектах. Я чувствовал, что это было немного более «стандартно», но я могу ошибаться.
Я не использовал sendmail. Меня беспокоит то, что это может быть сложнее настроить в среде разработки, если вы не разрабатываете непосредственно для Unix/Linux. Там, где вы можете общаться напрямую с любым SMTP-сервером, даже с удаленным, вам придется установить sendmail на машину rails, чтобы заставить его работать.
Основная проблема, с которой я сталкиваюсь при работе с электронной почтой, — это асинхронная отправка сообщений. Без локального SMTP-сервера локальный экземпляр sendmail будет более производительным.
В любом случае, кажется, что переключиться довольно легко, если вы решите, что ошиблись.