Безкоштовно, без реєстрації, але з смс


Безкоштовно, без реєстрації, але з смс

У Яндекс.Пошті зовсім недавно з’явилася нова можливість – листи в смс. Ми зробили її не тільки для тих, хто любить безкоштовно відправляти текстові повідомлення, а й для тих, кому потрібна швидка реакція одержувача. Тепер з веб-інтерфейсу пошти разом з листом ви можете відправляти смс-повідомлення з посиланням на копію самого листа. 

Посилання відкриється в спеціальному мобільному інтерфейсі, що не вимагає авторизації. Там же можна прочитати лист і відповісти на нього. При цьому абсолютно не важливо, на якому сервісі знаходиться електронна пошта одержувача. Сьогодні ми розкриємо декілька секретів про технічні деталі реалізації. 

Повідомити одержувача про відправлений листі можна було і раніше, але з невеликими обмеженнями. Наприклад, якщо лист було відправлено нема на Яндекс.Пошту, смс виглядало ось так:

Це було звичайне повідомлення без можливості прочитати лист і відповісти на нього. До того ж, повідомлення відправлялося тільки після доставки листа адресату. Ми зробили це спеціально для того, щоб виключити можливість доставки смски до того, як сторона сервер прийме лист. Реалізували шляхом додавання зашифрованих службових заголовків до листа і перевірки цих заголовків в DSN-Баунс, отриманому від приймаючої сторони. У новій версії ми все перекроїли.

По-перше, дали доступ до відправленому листа. Нова версія має на увазі не просто повідомлення про доставку. Тепер можна повідомляти користувачеві, що йому було відправлено лист незалежно від того, доставлено воно в його поштову скриньку. 

Це дозволяє дати доступ до листа, навіть якщо інший поштовий сервіс з якоїсь причини лист втратить, або якщо адресат був введений неправильно. Сам лист, відкрите з смс, виглядає так:

А по-друге, завдяки тому, що в новій версії з ланцюжка відправник-одержувач зникла необхідність отримання листа іншим сервером, ми дозволили собі посилати смс відразу після відправлення листа.

Безпека

Питанню безпеки ми приділили дуже багато часу і уваги, тому що його можна назвати найскладнішим в цьому завданні. Багато аспектів архітектури спочатку пророблялися, виходячи саме з міркувань захищеності даних користувача від будь-яких посягань і шахрайства:

  1. Коли користувач відправляє лист з смс-повідомленням, воно зберігається як відправлене. За унікальним даними формується ключ, зашифрований за допомогою AES і обгорнутий для зручності в Base64. Всі операції з листом відбуваються по цьому ключу.
  2. При спробі відкрити лист по посиланню з смс-повідомлення перевіряється час його створення. Лист є тільки протягом двох годин після відправки. Як нам здається, двох годин цілком достатньо, щоб прочитати смс і відповісти на нього. А оскільки можливість відповіді на лист зі сторінки перегляду без аутентифікації потенційно небезпечна, ми обмежили кількість відповідей з неї.
  3. З метою запобігання відправки спаму ми вирішили не передавати різну метаінформацію (адреси, телефони і т. П.) З клієнта http-аргументами. Таким чином, їх не можна підмінити і відправити лист на довільну адресу.

Для цих цілей розгорнута окрема база даних – MongoDB. Вона проста, легковажно, добре масштабується і стане в нагоді нам надалі для самих різних завдань. Досвід знайомства з MongoDB виявився цікавий і корисний – свобода управління колекціями та структурою записів дозволяє програмістам менше залежати від адміністраторів баз даних. Це прискорює проектування, прототипування, розробку і дає можливість експериментувати з форматами та операціями.

Продуктивність цієї бази також дозволяє легко використовувати її і для більш «важких» завдань. Тестування навантаження показало, що при змішаних запитах і невеликих обсягах даних (100b, 3kb) зв’язка «веб-сервер -> backend -> mongoS -> DB »витримує мінімум 6000 запитів в секунду, а час відповіді укладається в 40 мілісекунд. Використовується багато-бекенд, який реалізує бізнес-логіку, і пул коннектов до БД. Під час тестування база складалася з однієї машини з SATA-дисками. Зараз її конфігурація складається з трьох Шардена, в кожному – реплікасет з трьох машин на SSD-дисках. Для використання пулу коннектов над усіма MongoS піднято tcp-балансер, тому що C ++ драйвер не вміє підключатися до кількох машин з failover’ом.

Крім того, ми прийняли багато інших заходів щодо забезпечення безпеки листів користувача від несанкціонованого перегляду та використання. У самих різних частинах системи генеруються і звіряються всілякі хеші, дайджести, перевіряються хости, таймстамп. Сокращатель посилань був спеціально перенастроєний так, щоб ідентифікаційний хеш був довший і мав рівномірний розподіл, що робить непотрібним перебір посилань.

Про майбутнє

Як і будь-яку нову можливість, листи в смс ми запускаємо досить обережно: потрібно бути впевненим в тому, що сервіс не тільки відпрацює коректно, але і витримає навантаження. Саме тому в перший час ми не виносимо настройку відправки смс на чільне місце, залишивши її за галочкою «Надіслати адресату SMS-повідомлення після відправлення листа» в самому низу сторінки написання листа.

 

Як нам здається, зараз політ нормальний, тому найближчим часом нова можливість буде просуватися в інтерфейсі пошти. І хоча зазвичай ми не розкриваємо своїх планів, сьогодні для вас зробимо виняток і покажемо скрішншот інтерфейсу відправки смс в тому вигляді, в якому його побачать мільйони користувачів Яндекс.Пошти після того, як він пройде всі випробування:

Спонсор новини інтернет-магазин парфумерії Духі.рф. Наприклад особисто подобається сучасна туалетна вода армані код володіє квітково фруктовими ароматами.

Ссылка на основную публикацию