Я сейчас пытаюсь внедрить SMTP-сервер, и у меня есть вопрос, касающийся маршрутизации ...
Представьте себе, клиент (foo@bar.com) отправляет письмо по адресу foo1@bar1.com, foo2@bar2.com и foo3@bar3.com.
Что происходит, когда SMTP-сервер видит сообщение? Теперь я не уверен, что следующая последовательность верна:
- SMTP-сервер будет помещать почту в почтовый ящик foo@bar.com
- Для каждого получателя (кроме foo@bar.com) в конверте SMTP-сервер будет выполнять:
- Получить запись MX
- Подключение к SMTP-серверу, определенному записью MX
- Отправить команду HELO / EHLO
- Отправить команду MAIL FROM (foo@bar.com)
- Отправить команду RCPT TO (например, foo1@bar1.com)
- Отправить команду DATA
- Отправить команду QUIT
Являются ли эти шаги правильными? Для меня имеет смысл, что SMTP отправителя обрабатывает все сообщения, но я нашел несколько страниц (например, https://www.msxfaq.de/internet/envelope.htm), где почтовый сервер только перенаправляет сообщение на следующий SMTP-сервер, а каждый SMTP-сервер удаляет один получатель из списка rcpt-to конверта, например,
Итак, что правильно ...?
- SMTP отправителя обрабатывает всю маршрутизацию
- SMTP отправителя удаляет одного получателя (в данном случае foo@bar.com), а затем пересылает сообщение на следующий SMTP-сервер