Как проверить, что адрес отправителя электронной почты не подделан?

В соответствии с этот вопрос Ранее я спрашивал в Google App Engine, если у меня есть доступ ко всей информации в стандартном электронном письме, а не только к полям From, To, Subject, Body, но также ко всем заголовкам и информации MIME, как я могу проверить, что два входящих сообщения электронной почты с одним и тем же адресом From на самом деле от одного и того же отправителя.

Что я рассмотрел до сих пор:

  • Проверьте IP-адрес отправляющего сервера электронной почты.
  • Проверьте записи DNS сервера отправки электронной почты.
  • Проверьте отправителя электронной почты (например, веб-интерфейс, Outlook, Thunderbird и т. д.)
  • Проверьте поле для ответа
  • И Т. Д.

Я понимаю, что это сложный вопрос (я уверен, что такие компании, как Posterous, потратили массу времени на решение этой проблемы). Я просто ищу несколько критериев, чтобы начать работу предварительно. Спасибо!

Обновление:

Ответы до сих пор действительно помогают, но просто чтобы помочь им, контекст моего проекта таков, что я буду получать тонны и тонны электронной почты как веб-приложение от моих пользователей. Они будут использовать свою электронную почту в качестве основного способа ввода данных в мою систему. Вот почему я провел аналогию с Постероусом. Вариант использования очень похож.


person daveslab    schedule 04.12.2009    source источник
comment
Следует принять во внимание одну вещь: я использую ноутбук и отправляю электронную почту с нескольких разных IP-адресов и SMTP-серверов в течение дня.   -  person Scott Saunders    schedule 04.12.2009
comment
Да, спасибо, Скотт, я подумал об этом, поэтому мне интересно посмотреть на другие подходы.   -  person daveslab    schedule 04.12.2009
comment
Просто наткнулся на этот вопрос, и я пытаюсь сделать что-то подобное. Можете поделиться, что у вас в итоге получилось?   -  person    schedule 18.11.2010


Ответы (5)


Вы правы в том, что все заголовки вместе и «заведомо хорошие» письма для сравнения могут помочь идентифицировать вероятно поддельные электронные письма.

То, что вы разрабатываете, вероятно, будет в лучшем случае эвристикой, а не алгоритмом.

Я бы подумал о том, чтобы взвесить поля по времени суток и насколько они близки к времени суток «известных хороших» электронных писем...

Кроме того, если «заведомо хорошие» электронные письма структурированы иначе, чем подозреваемые; то есть встроенные изображения, html, сокращенные URL-адреса и т. д.

person John Weldon    schedule 04.12.2009

Почему бы не пропустить электронные письма через spamassassin или какой-либо подобный фильтр, который будет прикреплять байесовский счет. Затем вы можете просто прочитать этот счет. Это убережет вас от изобретения велосипеда.

Вы можете оценить электронное письмо по базе данных всех предыдущих электронных писем от человека.

Существует также поиск Sender Permitted Framework и DomainKeys, которые SpamAssassin может сделать для вас.

person Phil Hannent    schedule 04.12.2009

Вероятно, не практично, но что-то, что сработает:

Когда приходит входящая почта, используйте функцию «ответить отправителю» и просто спросите, отправили ли они ее. Это может быть ссылка для подтверждения, которая генерируется автоматически, или что-то в этом роде.

Но поскольку я не знаю специфики проекта, это может быть непрактично... например, если бы вам приходилось делать это несколько раз для каждого пользователя, никто бы не стал с этим мириться.

person Travis    schedule 04.12.2009

Просто чтобы похвалить моих братьев, опубликовавших ранее:

Не зная контекста, в котором вы хотите проанализировать это, и, будучи очень общим, я бы предложил, чтобы ваш первый порт захода был SPF или DomainKeys, чтобы ограничить возможность приема электронной почты из мошеннического источника. Я бы также рекомендовал использовать только один SMTP-сервер с защитой SSL. Я делаю это и путешествуя по миру, я редко оказывался в ситуации, когда не мог отправить почту, и в этих случаях работала только веб-почта (без безопасного локального SMTP).

В дополнение к этому: если вы проверяете, что почта действительно исходит от вас, вы также можете использовать инструменты PGP для подписи своей почты при отправке, а затем фильтровать любую почту, у которой нет действительной подписи. Enigmail в Thunderbird — хороший источник автоматической подписи, также есть плагины для Outlook.

После этого, если вы действительно хотите провести более тщательную экспертизу электронного письма, вы можете использовать байесовский спам, чтобы сопоставить электронное письмо с базой данных предыдущих электронных писем. Вы должны создать базу данных маркеров на основе неуникальных данных (исключая такие записи, как «Кому:»), а затем оценить электронное письмо на предмет вероятности того, что оно похоже на предыдущие электронные письма. Теоретически вы должны получать очень высокие баллы за любую почту.

Очевидно, я не знаю вашей ситуации, но я думаю, что есть много методов, но иногда проще докопаться до корня проблемы, чем пытаться исправить ее в дальнейшем.

Обновить

В зависимости от предоставленного контекста:

Я бы подумал об использовании «Address Extensions», когда ваш пользователь может отправлять почту на адрес, который содержит ссылку с использованием адреса электронной почты: [email protected] GMail и многие другие серверы поддерживают доставку электронной почты с +extension@ через на правильный [email protected] без hi-jinx. Вы можете заставить пользователя доставлять почту с уникальным идентификатором в качестве расширения, и таким образом вы будете знать, что письмо пришло от него, и он будет чувствовать себя более особенным. Очевидно, что кто-то может украсть их уникальный код, прослушивая их исходящие или входящие сообщения, но это всегда возможно, и если кто-то может это сделать, он, вероятно, также может внедрить почту.

Если вы действительно просто хотите пойти по пути анализа, я бы предложил просто использовать обратное байесовское совпадение SpamAssassin для каждого пользователя. Где вы сравниваете каждое письмо с базой данных писем от отправителя (вместо традиционного сопоставления писем «с» учетной записью). Помните, что как только ваша база данных будет загрязнена ложным срабатыванием, вам придется удалить ложное срабатывание или рискнуть целостностью сопоставления для этого отправителя.

person Bob Hannent    schedule 04.12.2009

Возможно, стоит рассмотреть использование Sender Policy Framework. Возможно, это не совсем то, что вы ищете, но это может помочь.

Вкратце, назначение записи SPF состоит в том, чтобы позволить принимающему агенту передачи сообщений (АПС) опрашивать сервер имен домена, который появляется в электронном письме (отправитель), и определять, является ли исходный IP-адрес сообщения (источник) авторизован для отправки почты для домена отправителя.

Выдрано из википедии:

Sender Policy Framework (SPF), как определено в RFC 4408, представляет собой систему проверки электронной почты, предназначенную для предотвращения спама в электронной почте путем устранения распространенной уязвимости, подмены исходного адреса. SPF позволяет администраторам электронной почты указать, каким узлам Интернета разрешено отправлять электронную почту, утверждая, что она исходит из этого домена, путем создания специальной записи DNS SPF в общедоступной записи DNS. Затем почтовые обменники используют запись DNS для проверки личности отправителя по списку, опубликованному администратором электронной почты.

person Peter D    schedule 04.12.2009