Как управлять своей электронной почтой, получать неограниченное количество идентификаторов электронной почты, изменять свое отношение к почтовому ящику и анализировать данные в почтовом ящике для получения действенной информации за гроши и в Amazon sca le

С момента своего запуска в марте 2006 года AWS превратилась в клон своего родительского объекта, хотя и в области программного обеспечения, т.е. AWS теперь является эквивалентом Магазина всего для облачных и вычислительных сервисов.

Особый интерес для нас в контексте этой статьи представляет Simple Email Service (SES), предоставляемый AWS.

Вот что SES может для нас сделать: [SES] - это платформа электронной почты, которая обеспечивает простой и экономичный способ отправки и получения электронной почты с использованием ваших собственных адресов электронной почты и доменов.

При первом запуске AWS SES была ограничена отправкой электронных писем от нашего имени. Вот ответ на ветку ServerFault от 2011 года, где кто-то спрашивал, как получать электронные письма через SES.

SES Amazon предназначен исключительно для отправки электронной почты. Если вы хотите получать электронную почту, вам необходимо настроить агент почтового транспорта (MTA), например Sendmail, Postfix, Qmail и т. Д., На экземпляре сервера EC2 и указать свои записи MX DNS на этот экземпляр.

С момента запуска до 2015 года SES оставалась службой только для отправки.

В 2015 году SES добавила способ что-то делать с полученными электронными письмами.

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

Обработка полученных писем

Вместо того, чтобы позволять вам читать полученные электронные письма как Gmail или Outlook, SES позволяет вам делать три основных действия при получении электронной почты:

  1. Сохраните полученное письмо в S3
  2. Отправить уведомление SNS слушателю
  3. Запуск лямбда-функции

Как видите, ни одно из этих решений не подходит для людей. SES остается транзакционной службой, не предназначенной для использования людьми.

Их документация о получении писем косвенно нам говорит именно об этом.

Amazon SES не включает серверы POP или IMAP для получения входящей электронной почты.

Отсутствие POP или IMAP означает отсутствие почтового клиента и, следовательно, никакого удобного для человека способа просмотра полученных писем.

POP означает протокол почтового отделения, а IMAP - протокол доступа к сообщениям в Интернете. Оба эти протокола поддерживают доступ к электронной почте с сервера. Для отправки писем почтовые клиенты используют SMTP, но поскольку эта статья посвящена получению писем, мы пока будем игнорировать SMTP.

Примечание: технически вы можете купить учетную запись Amazon Workmail за 4 доллара за пользователя в месяц, чтобы получать электронные письма SES, но я могу сказать, что, используя Workmail более двух лет что вам лучше потратить деньги на электронную почту в другом месте.

Предложение

Теперь, когда у нас есть общее представление об AWS SES, можно приступить к обсуждению возможности создания почтового клиента для SES.

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

Проблемы

Чтобы внедрить этот почтовый клиент, мы должны преодолеть определенные ограничения, налагаемые на нас SES:

  1. Нет POP / IMAP - как отмечалось выше, поскольку SES не предоставляет нам сервис POP / IMAP, мы написали собственные API-интерфейсы для загрузки электронных писем.
  2. Письма принимаются в формате .eml. Только IE может открывать файл .eml по умолчанию, хотя вы можете переименовать файл .eml в .mht и открыть его в любом браузере.
  3. В S3 файлы электронной почты сохраняются с длинной (41 символ) буквенно-цифровой строкой без видимого шаблона в качестве имени файла. Итак, сначала вы можете получить электронное письмо с этим именем файла 82vundohoan4rb4poes26r8rda5sb5vbgh9s3cc1, а затем - 7epe24edptua4mjepr8hlhypt444c0krvkkrn181.
  4. Все метаданные электронной почты - например, когда она была отправлена, кому она была отправлена, тема и т. Д. - хранятся внутри самого файла электронной почты. Вы должны проанализировать файл электронной почты, чтобы извлечь эту информацию.

Решение

На высоком уровне наша стратегия будет следующей:

  1. Настройте способ хранения писем в S3 в порядке убывания по дате получения. Нам нужно сделать это, чтобы отображать электронные письма в правильной последовательности для пользователя. Это решает проблему 3. Исходный код этой функции - @here.
  2. Извлекайте метаданные и содержимое электронной почты из файлов .eml. Это решает проблему 4 и при этом делает проблему 2 спорной. Для этой задачи мы используем отличный модуль mailparser.
  3. Создайте два API: один для возврата списка полученных писем в порядке убывания по дате получения (исходный код), а другой - для возврата метаданных и содержимого для электронного письма (исходный код ). Это решает проблему 1.

После этого последним шагом будет создание пользовательского интерфейса на основе браузера, чтобы:

  1. Запросить список полученных писем
  2. Для каждого электронного письма в списке выше запросите метаданные и контент.
  3. Отображать метаданные и контент в браузере

Исходный код пользовательского интерфейса браузера - @here. Полный исходный код находится на Github.

Ограничения

Клиент показывает только полученные электронные письма today. Фактически, это означает, что он отображает только полученные электронные письма today и today-1.

Результаты ограничены 100 последними полученными электронными письмами today. и today-1.

Прочие улучшения

Другие реализованные не связанные с этим улучшения включают использование AWS Cognito для управления доступом к почтовому клиенту. В конце концов, вы же не хотите, чтобы мир читал ваши электронные письма, верно?

Пользовательский интерфейс построен с использованием Foundation CSS и Vuejs.

Заключение

Этот клиент только для чтения заполняет большой пробел в том, как мы взаимодействуем с SES. Исторически сложилось так, что SES была продуктом на уровне инфраструктуры, то есть она не поддается удобному для человека варианту использования.

С помощью этого почтового клиента мы начинаем процесс внедрения SES в удобное для человека пространство.

Куда мы можем пойти отсюда

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

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

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

Имея больший контроль над своей электронной почтой, мы можем начать переосмысливать то, как наши электронные письма отображаются нам. Мы можем отображать электронные письма как сообщения в блогах или показывать облако слов вашего почтового ящика.

Доступ через API к содержимому электронной почты и метаданным позволяет нам анализировать наш почтовый ящик для получения полезной информации.

Варианты бесконечны. Все, что нужно, - это немного воображения.