Во-первых, важно понять разницу между заголовком «From:» (который получатель видит в своем почтовом клиенте) и адресом отправителя (который также называется обратным путем конверта, или аргументом SMTP «MAIL» ОТ "команда). Адрес отправителя - это то место, куда отправляются сообщения о пересылке, когда электронная почта не может быть доставлена, следовательно, путь возврата другого имени.
SMTP не ограничивает, какой адрес вы используете в качестве адреса отправителя (за исключением того, что он должен быть синтаксически действительным), но независимо от того, какую библиотеку SMTP-клиента вы используете, вы должны проверить это.
Изменение адреса отправителя - это место, где вы можете делать умные вещи, чтобы помочь обнаружить отскок электронной почты и сообщить о них веб-приложению или отправителю. Самое распространенное, что вы увидите, это закодировать адрес получателя в адресе отправителя, например, с адресом отправителя, подобным этому: sender+recipient=recipientdomain.com@senderdomain.com. MTA, ответственный за senderdomain.com, должен знать, чтобы доставлять все электронные письма для sender+foo@senderdomain.com на sender@senderdomain.com - но это довольно распространенное требование. Затем вы берете полученное письмо и вместо того, чтобы попытаться определить, каким получателем было отскокшее сообщение в содержании (которое может быть в любом формате), вы можете получить его прямо с адреса получателя.
Вы также можете выполнять более сложные операции, например, хэшировать адрес получателя, чтобы он не был виден непосредственно в адресе отправителя, например, sender+e72fab38fb@senderdomain.com. Кроме того, вы можете указать идентификатор отправленного электронного письма, если вы отправляете несколько писем на один и тот же адрес и хотите узнать, какое из них было отклонено.
Эти приемы называются Путь возврата конверта с переменным значением или VERP и обычно реализуются программным обеспечением списка рассылки.