SMTP может принимать электронные письма с ложным именем отправителя - PullRequest
0 голосов
/ 10 ноября 2010

Я использую SMTPClient для отправки писем на SMTP-сервер. Но с помощью метода Send я могу указать любое ложное имя отправителя или адрес электронной почты. Как я могу предотвратить это?

Ответы [ 4 ]

5 голосов
/ 10 ноября 2010

Работа вашего почтового сервера состоит в том, чтобы принять решение о том, что он принимает в качестве адреса электронной почты отправителя - это просто вопрос политики.

Для почтового клиента не существует «истинного» адреса электронной почты, поэтому ничегоэто может быть применено на клиенте.

2 голосов
/ 10 ноября 2010

Я думаю, что именно SMTP-сервер должен решать, является ли имя отправителя действительным или нет.Фактически, введение его в ваш код является нарушением правила DRY, поскольку вы будете реплицировать конфигурацию SMTP.

Как вы можете видеть в http://msdn.microsoft.com/en-us/library/swas0fwc%28v=VS.90%29.aspx,, вы должны быть готовы только к перехвату SmtpExceptionsи правильно отображать их пользователю вашего программного обеспечения.

0 голосов
/ 10 ноября 2010

SMTP - это протокол передачи почты (как следует из названия).Он не отвечает за проверку подлинности отправителя.Для аутентификации отправителя вам нужно использовать сертификаты, которые поддерживает SMTP, но опять же, просто как средство передачи.Сама программа должна иметь логику для аутентификации отправителя с помощью сертификата.

Вы также можете использовать аутентификацию, но в этом случае это будет SMTP-сервер, который сопоставит имя пользователя / пароль с адресом электронной почты.

0 голосов
/ 10 ноября 2010

С SmtpClient ничего не поделаешь.

Вы можете сделать что-то с этим в вашем приложении. Отправьте письмо с подтверждением, на которое пользователь должен нажать, чтобы подтвердить свой адрес электронной почты.

Вы можете сделать что-нибудь с этим на вашем SMTP-сервере. Проверьте запись MX или определенные политики SPF в отношении домена / IP-адреса отправителя.

...