Как почтовый ретранслятор не отправляет почту уже полученным получателям?

Я размышлял.

Предположим, у меня есть сервер обмена (домен может быть me@company.com), а также сервер ретрансляции, который принимает запросы к интернет-доменам (gmail/yahoo/etc).

Предположим, я отправил письмо по адресу: (you@company.com; him@gmail.com) - от пользователя в домене (me@company.com)

Почта отправляется на сервер обмена, затем биржа группирует домены (company.com и gmail.com) =>, она помещает почту в почтовый ящик you@company.com.

затем биржа видит, что ему нужно отправить его по адресу ему@gmail.com, и отправит его на сервер ретрансляции.

сервер ретрансляции получит SMTP-запрос:

от: me@company.com

to: you@company.com; him@gmail.com


вопрос в том - как сервер ретрансляции smtp знает, что не следует отправлять его на you@company.com, что приводит к получению дубликатов почты?

кроме того, как сервер gmail знает, что он не пытается отправлять получаемые им письма снова? (потому что они получают только SMTP-запросы, аналогично клиенту, который отправляет почту)

заранее спасибо!

2 ответа

Решение

Заголовки, которые вы видите, не используются для доставки сообщения. Вместо этого SMTP определяет концепцию, называемую конверт, которая имеет совершенно другой набор заголовков. В качестве общей иллюстрации, это то, как работает Bcc: тоже; адрес получателя копируется в конверт, а затем удаляется из сообщения, которое находится внутри конверта.

При доставке сообщения отправитель конверта обычно копируется в Return-Path: заголовок, и иногда можно увидеть информацию о получателе конверта, скопированную в Received: заголовки.

В тот момент, когда почтовый сервер решает, к каким адресатам следует направлять сообщение, обычно существует одна копия сообщения (буферный файл, запись в очереди, что у вас есть) для каждого отдельного адресата. Поэтому, если вы отправляете от вас @company to me@company, you@private и friend@gmail, первый сервер может определить, что внешние адреса должны отправляться на один и тот же исходящий ретранслятор, а внутренняя копия доставляется локально. Затем ретранслятор аналогичным образом решает, что ему необходимо связаться с двумя различными адресатами, поэтому одно входящее сообщение копируется в два исходящих сообщения, одно для вас @ private, а другое для friend@gmail.

Содержимое письма не анализируется ни обменом, ни ретранслятором для определения того, куда должна отправляться почта. Каждый в этом контексте говорит SMTP друг с другом и указывает получателей с сообщением протокола RCPT. Таким образом, ваш почтовый клиент сообщает об обмене двумя RCPT, обмен решает, что один из них удален, затем говорит один RCPT на ретранслятор и так далее, и так далее. Этот документ определяет протокол SMTP, где вы можете прочитать о глаголе RCPT.

Другие вопросы по тегам