Анонимность электронной почты похожа на Craigslist в C#

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

Мой план сейчас заключается в том, чтобы:

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

Мои вопросы следующие:

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

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

JP

6 ответов

Решение

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

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

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

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

НТН,

Вениамин

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам