Отправка почты по SMTP на несколько адресов: пересылка сообщения на разные серверы? - PullRequest
2 голосов
/ 01 сентября 2010

Я отправляю электронное письмо следующим получателям: test@example.com, test1@test.com, test2@test.com

Сообщение отправляется на мой локальный SMTP-сервер, который должен передать его на @example.com и@test.com.

Мой вопрос: как сервер должен это делать?

  • Оставьте сообщение как есть и перешлите его на более сложный SMTP-сервер, который будет делатьодин из других вариантов

  • Разбейте его на два сообщения и передайте одно сообщение на @exampl e и два других на @test.com в одном сообщении

  • Разбейте его на три сообщения и передайте один раз на @example.com и два раза на @test.com

И как принимающий сервер, например @example.com, знает, что он не должен отправлять@test.com сообщение тоже?(любой почтовый заголовок?)

Что, если @example.com и @test.com обслуживаются одним и тем же сервером, он получит сообщение более одного раза?

Возможно, я что-то упустил впротокол SMTP.

1 Ответ

3 голосов
/ 01 сентября 2010

Конверт (RFC822 и далее) - это только внешние границы.Веселье происходит в рамках протокола ESMTP.

С точки зрения простого SMTP каждый получатель (RCPT TO) запускает новое сообщение в очереди исходящих сообщений - по одному для каждого получателя.Затем он доставлен.

Теперь давайте поговорим о доставке: Предположим, я попросил доставить на user@host.com.Вот как это работает:

Адрес host.com запрашивается в DNS, в частности, для записи типа MX (Mail Exchanger).(nslookup -q = MX должен показать вам, как это делается)

Они отсортированы (сначала по наименьшему номеру), и доставка выполняется в циклическом порядке с использованием этого вида.

Когдаон доставляется на любой узел записи MX, готово.Однако причина, по которой существует несколько узлов MX, связана с необходимостью ставить почту в очередь, например, при отключениях.Таким образом, более высокий хост MX, скорее всего, просто поставит в очередь и не позволит исходному серверу хоста отскочить и истечет срок действия сообщения (и именно это происходит, когда сообщение застревает на данном хосте - вы можете отследить его через заголовки)

Каждый сервер имеет свои собственные правила доставки, однако, когда вы перенаправляете на хост, который пытался доставить себя по цели MX, мы называем это Smart Host.Хост знает, стоит ли ему ставить в очередь для другого хоста (ретрансляция) или доставлять локально через приветствие SMTP (HELO).

Также: одно SMTP-соединение позволит вам отправлять несколько сообщений, даже если у вас естьполучателям будет происходить только одно соединение (хотя в почтовой очереди два сообщения)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...