Анонимность электронной почты похожа на Craigslist в C # - PullRequest
9 голосов
/ 05 июля 2011

Я разрабатываю сайт, для которого я хотел бы защитить покупателей путем анонимизации их адресов электронной почты. По аналогии с системой craigslist, когда продавцу необходимо связаться с покупателем, он должен иметь возможность отправить электронное письмо на анонимный адрес, такой как 1425415125. @ mysite.com, который затем будет перенаправлен на адрес электронной почты пользователя.

Мой план сейчас:

  1. Настроить входящие (универсальные) входящие сообщения
  2. Создайте случайный ключ для каждого покупателя, который будет специфичным для пользователя («1425415125» выше) разделом адреса электронной почты
  3. Мониторинг входящих сообщений и анализ этого пользовательского раздела. После того, как я узнаю пользователя, электронное письмо можно будет отправить на правильный адрес

У меня следующие вопросы:

  1. Можете ли вы увидеть какие-либо проблемы с вышеуказанным решением
  2. Существуют ли решения с открытым исходным кодом для существующей проблемы
  3. Есть ли какие-то ошибки, о которых нужно знать при разработке такой системы?

Заранее спасибо

JP * 1 025 *

Ответы [ 6 ]

6 голосов
/ 15 июля 2011

Я сделал что-то связанное, хотя и не совсем то же самое.Я установил почтовый ящик перехвата всех входящих сообщений на моем существующем сервере pop3 (вероятно, он уже есть).Затем я использовал OpenPop.NET для чтения всех новых сообщений по таймеру (скажем, каждые 30 секунд).В моем случае я остановился только на обработке сообщения, но достаточно просто сгенерировать новое сообщение по соответствующему адресу и скопировать тело, а затем отправить новое сообщение на ваш SMTP-сервер.

Одна проблема, которую я вижус вашей настройкой, и, возможно, это просто недоразумение с моей стороны, заключается в том, что пока вы защищаете оригинальный адрес электронной почты пользователей, они будут оставаться доступными по адресу 1425415125@mysite.com в основном навсегда.Если я понимаю, как работает craigslist, у каждой публикации есть свой адрес электронной почты, и после удаления / удаления публикации (или вскоре после этого) адрес электронной почты перестает работать.Это делает так, чтобы люди не могли просто задавать вам вопросы по этому адресу электронной почты.Решение этой проблемы простое, просто сделайте адрес электронной почты соответствующим идентификатору записи или некоторому другому идентификатору, а не идентификатору пользователя в базе данных.Поиск будет таким же быстрым, но каждый раз у него будет новый адрес электронной почты.

1 голос
/ 06 июля 2011

Я думаю, что это решение будет иметь смысл и используется во многих случаях.Самая сложная часть - это получение сообщений.Вы действительно можете обрабатывать все это в своем веб-приложении, если вам нужно.Я написал в блоге сообщение о том, как получать электронную почту в вашем веб-приложении .Это относится главным образом к Rails, но понятия должны быть переносимыми.

1 голос
/ 05 июля 2011

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

Моя личная рекомендация - проверить HMailServer , который имеет COM API (сторона администратора написана на PHPотсюда и требование унаследованного взаимодействия), является бесплатным и открытым исходным кодом и очень хорошо задокументировано.Он не имеет встроенного почтового конвейера, но его легко расширить с помощью API и поддержки сценариев, которые запускаются на событиях на стороне сервера

HTH,

Benjamin

0 голосов
/ 16 июля 2011

В дополнение к электронной почте вы можете рассмотреть механизм доставки, а не push-доставки, например веб-интерфейс центра сообщений или RSS-канал. Я говорю это потому, что проблемы с доставкой для различных интернет-провайдеров могут быть очень трудно устранить, и по моему опыту ваши пользователи никогда не поверят, что это их интернет-провайдеры.

0 голосов
/ 15 июля 2011

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

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

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

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

0 голосов
/ 12 июля 2011

То, как вы выглядите, это то, как я создал подобный сервис.Я бы не советовал вам писать свой собственный SMTP-сервер.Используйте существующий почтовый сервер и просто используйте опрос или какой-либо API, основанный на событиях.

Преимущества использования стороннего почтового сервера в том, что вы можете использовать на нем существующие инструменты резервного копирования и управления.

Редактировать: я простозаметил, что здесь ответили с лучшим объяснением. Передача входящей электронной почты в сценарий в Windows IIS SMTP?

...