Як це працює

Архітектура, виявлення спаму і те, як фільтр із часом стає розумнішим

Архітектура: транспорт IMAP → локальне сховище → аналіз

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

  1. Отримання з IMAP — повідомлення завантажуються із сервера вашої служби через зашифроване з’єднання.
  2. Розміщення в DMZ — нові повідомлення потрапляють у локальну проміжну зону (SQLite), перш ніж ви їх побачите.
  3. 7-рівневий аналіз безпеки — кожне повідомлення й кожне долучення проходить на вашому комп’ютері через усі сім рівнів захисту, зокрема сканування на шкідливе ПЗ за допомогою YARA.
  4. Фільтрування швидкими правилами — повідомлення, що відповідають вашим особистим швидким правилам, автоматично обробляються за вашим правилом: відкладаються в пастку для спаму на перегляд, переміщуються або вилучаються.
  5. Переведення до «Вхідних», «Спаму» або «Шкідливого ПЗ» — чисті повідомлення потрапляють до «Вхідних». Спам іде до «Спаму». Повідомлення, в яких виявлено шкідливе ПЗ, потрапляють до окремої теки «Шкідливе ПЗ», а небезпечні долучення з них вилучаються й затримуються.
  6. Вилучення із сервера (необов’язково) — якщо ви ввімкнули «Вилучити з сервера», повідомлення вилучається у вашої служби.

SQLite — єдине джерело істини. Усе, що ви бачите в інтерфейсі, береться з вашої локальної бази даних, а не з IMAP.

Двоетапна синхронізація великих поштових скриньок

Коли ви вперше підключаєте обліковий запис — особливо такий, де тисячі повідомлень, — GravesMail діє у два етапи:

Етап 1 (Швидкий старт): спершу завантажуються 500 найновіших повідомлень із кожної теки, зазвичай менш ніж за хвилину. Можна одразу читати й працювати.

Етап 2 (Фонова синхронізація): решта повідомлень тихо завантажується у фоновому режимі. Індикатор перебігу в рядку стану показує відсоток виконання та орієнтовний час, що залишився. Синхронізацію можна будь-коли призупинити, відновити або зупинити. Якщо закрити програму, перебіг буде збережено.

Сім рівнів захисту

Кожне вхідне повідомлення та його долучення проходять через сім незалежних рівнів захисту. Кожен рівень шукає свій вид проблем і вирішує самостійно. Якщо бодай один рівень здіймає тривогу, повідомлення вважається спамом — немає ні усереднення, ні сукупної оцінки, якої треба досягти. Однієї тривоги досить. Це і є модель «7-рівневе OR».

🌐

1. Перевірка домену

Чи існує домен відправника і чи має він справжні поштові сервери? Чи належить закінчення його адреси (TLD, наприклад .shop, .top, .click або .xyz) до тих, якими часто зловживають спамери?

🧠

2. Баєсів фільтр

Навчена оцінка того, наскільки слова повідомлення схожі на спам. Фільтр постачається попередньо навченим, а далі вчиться у вас — кожне «Позначити спамом» або «Позначити не спамом» робить його розумнішим.

🔒

3. Автентифікація заголовків

SPF, DKIM і DMARC — стандартні перевірки, які доводять, що відправник є тим, за кого себе видає.

🔍

4. Евристична оцінка

41 детектор, що охоплює шаблони у вмісті та заголовках: замасковані слова (H0ME, S4LE), формулювання шахрайських листів про передоплату та спадщину, підроблені заголовки, аномалії дат і країну походження відправника.

📊

5. Репутація

Ваші безпечний і заблокований списки, історія відправників і відстеження кампаній за багатьма повідомленнями — воно виловлює спамера, який постійно змінює домени відправника, але використовує той самий вихідний сервер, той самий хост із вмістом або те саме посилання для відписки.

🛡

6. ШПЗ: АВ системи

У Windows долучення передаються встановленому у вас антивірусу (Windows Defender, Norton, Bitdefender, Kaspersky та іншим) через інтерфейс AMSI. Цей рівень недоступний у macOS, Linux і на мобільних пристроях — і на цих платформах він прямо про це каже, а не повідомляє про чистий результат, якого насправді не отримував.

🧬

7. ШПЗ: YARA

Перевіряє байти долучень і тіла повідомлень за тисячами сигнатур шкідливого ПЗ від спільноти з репозиторію Neo23x0/signature-base. Виявляє трояни, програми-вимагачі, RAT, шкідливі макроси Office, експлойти PDF і фішингові документи. Працює на кожній платформі, зокрема на мобільних пристроях, і постачається вбудованим для роботи без мережі.

Чесні звіти — жодної хибної впевненості

Відкрийте «Властивості» будь-якого повідомлення, щоб побачити розбір за рівнями: яку оцінку поставив кожен рівень, поріг, за якого він здіймає тривогу, і його стан — «Тривога», «Чисто» або «Недоступно». Якщо сканер не зміг запуститися, GravesMail повідомляє «Недоступно». Такий рівень ніколи не показується як «Чисто». Антивірус, який не запустився, а потім однаково звітує, що все чисто, — найгірший різновид засобу безпеки, бо ви довіряєте вердикту, якого насправді ніхто не виносив.

Екран «Рушій безпеки» («Інструменти → Рушій безпеки» або «Налаштування → Рушій безпеки» на мобільних пристроях) дає змогу налаштувати кожен із семи рівнів окремо за допомогою повзунка чутливості від 0 до 100% — 0% вимикає рівень, 100% означає найвищу чутливість. Єдиного загального регулятора немає; рівні налаштовуються окремо. На тому самому екрані показано поточний стан сканера шкідливого ПЗ, редактор політики щодо країн і доступний лише для читання перелік усіх детекторів із вагою кожного.

Геолокація без зовнішніх запитів

Евристичний рівень враховує, звідки надійшло повідомлення. Цей пошук суто локальний. GravesMail постачається з вбудованою таблицею відповідності країн і діапазонів IP-адрес і звертається до неї на вашому пристрої — жодних запитів DNS, жодних викликів зовнішніх API і жодної сторонньої служби на цьому шляху. Метадані ваших повідомлень ніколи не залишають ваш пристрій заради геолокації.

Що означає результат, вирішуєте ви. На екрані «Рушій безпеки» країни можна позначити як безпечні (жодного додаткового сигналу спаму) або як загрозу (сильний сигнал). Обидва списки спочатку порожні, тож звичайна міжнародна пошта ніколи не отримує штрафу, доки ви не виберете політику.

Дані геолокації за IP-адресою надано DB-IP (db-ip.com) за ліцензією CC BY 4.0.

Блокування зовнішніх зображень і вилучення пікселів відстеження

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

GravesMail за замовчуванням блокує зовнішні зображення. Окремо він виявляє й вилучає невидимі пікселі відстеження (зображення 1×1, які використовуються лише для відстеження прочитання). Це незалежні параметри: можна завантажувати зображення, не завантажуючи трекери, або навпаки.

Наскрізне шифрування (OpenPGP)

GravesMail підтримує OpenPGP — відкритий сумісний стандарт пошти з наскрізним шифруванням і підписом. Ви можете обмінюватися приватною поштою з будь-ким, хто користується PGP, у будь-якій поштовій системі (Proton Mail, Thunderbird, gpg та інших), а не лише з іншими користувачами GravesMail. Це справжній PGP/MIME, а не власний діалект GravesMail.

Ключі

Створіть ключ у менеджері ключів PGP — рекомендовано Ed25519/Curve25519, а для сумісності зі старішими програмами PGP доступний RSA-4096. Експортуйте свій відкритий ключ, щоб інші могли писати вам, та імпортуйте їхні ключі, щоб писати їм. Після імпорту GravesMail показує відбиток ключа; звірте його з людиною іншим каналом — телефоном або особисто — і позначте ключ як перевірений. Неперевірений ключ однаково працює, але залишається позначеним як неперевірений, бо ця позначка означає рівно одне: ви ще не переконалися, що цей ключ справді належить цій людині.

Ключі розрізняються за відбитком, а не за адресою електронної пошти. Мати два ключі для однієї адреси — звичайна річ: старий і новий або ключ RSA і ключ Ed25519 поруч. Тому кожна дія стосується ключа, який ви вибрали, а не першого, що випадково збігся з адресою.

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

Створіть резервну копію секретного ключа — це справді важливо

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

Надсилання й читання

У вікні створення повідомлення є елемент керування «Захист» із трьома режимами — «Підписати», «Зашифрувати» або «Підписати + зашифрувати» (рекомендовано для приватної пошти). За замовчуванням його вимкнено, тож звичайна пошта не змінюється. Зашифрована пошта, яку ви отримуєте, розшифровується автоматично й позначається закритим замком 🔒; підписана пошта показує стан підпису, а недійсний підпис показується гучно, а не тихо. Якщо повідомлення зашифровано для ключа, якого на цьому пристрої немає, про це сказано прямо, а не показано порожнє тіло.

Коли ви надсилаєте зашифровану пошту, GravesMail шифрує її також для вашого власного ключа, щоб копія в теці «Надіслані» залишалася для вас читабельною. Без цього вашу власну збережену копію було б неможливо розшифрувати. Це ввімкнено завжди.

Правило без винятків

Якщо ви вибрали шифрування, а в одержувача немає придатного ключа, надсилання блокується. GravesMail зупиняється й запитує: скасувати чи явно вибрати надсилання без шифрування — це свідома друга дія, яка називає одержувачів під ризиком, ніколи не варіант за замовчуванням і ніколи не автоматична. Немає жодного шляху виконання коду, на якому вибір шифрування тихо закінчується надсиланням відкритим текстом. Це забезпечено в самому рушії, а не лише в інтерфейсі, і покрито автоматизованим тестом.

Що PGP захищає, а що ні

PGP шифрує тіло повідомлення й долучення. Він не приховує тему, поля «Кому», «Від» і «Копія» чи те, коли повідомлення було надіслано, — усе це передається відкрито. Таке саме обмеження має кожна система PGP/MIME, зокрема Proton; це не вада GravesMail, але вам слід знати про це, перш ніж покладатися на шифрування.

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

Ще два обмеження, сказані прямо: GravesMail не виконує автоматичного пошуку на серверах ключів чи через WKD і не має мережі довіри — ви самі імпортуєте ключі й самі перевіряєте відбитки. Це свідомий вибір: не довіряти мережевій службі в питанні про те, хто є хто. А повідомлення з вбудованим відкритим підписом (clearsigned) показуються як читабельний текст без перевірки підпису; GravesMail показує їх, а не заявляє про підпис, якого насправді не перевіряв.

Сумісність з іншими програмами

PGP у GravesMail перевірено в обох напрямках із GnuPG — еталонною реалізацією OpenPGP — на ключах, створених у GravesMail, і для Ed25519, і для RSA-4096: GravesMail шифрує, а gpg розшифровує, gpg шифрує, а GravesMail розшифровує, і підписи перевіряються в обох напрямках. Це набір автоматизованих тестів, а не разова ручна перевірка.

Proton Mail теж підтверджено — вручну, а не автоматизованим тестом. Справжню зашифровану пошту було надіслано й прочитано в обох напрямках між GravesMail і чинним обліковим записом Proton. Саме це тестування попутно виявило три справжні дефекти, які було виправлено: сувора перевірка ключів у Proton відхиляла ключі Ed25519 від GravesMail, помилка з терміном дії ключа і долучення, які під час розшифрування мовчки зникали із зашифрованої пошти. Усі три виправлено, і сумісність із Proton працює в обох напрямках.

Thunderbird я не тестував саме щодо PGP, тому нічого про нього тут не стверджую. Це стандартний клієнт OpenPGP, і він має працювати, але «має» — не те саме, що «перевірено», і я волію казати вам те, що справді перевірено.

Лист, захищений паролем (ключ не потрібен)

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

Буває, що треба надіслати щось приватне людині, яка не має ні ключів шифрування, ні спеціальних програм — лише звичайну поштову скриньку. Параметр GravesMail «Захистити паролем (ключ не потрібен)» запечатує ваше повідомлення та всі долучення в справжній стандартний ZIP-архів із шифруванням AES-256, який одержувач відкриває безплатною звичайною програмою на будь-якій платформі.

Тут використовується галузевий стандарт — формат WinZip AES-256 (AE-2), те саме надійне шифрування, яке вже розуміють 7-Zip, Keka та мобільні архіватори. Це не контейнер, придатний лише для GravesMail, і не слабкий «ZipCrypto», що піддається зламу і яким користувалися старіші ZIP-програми. Сумісність доведено на справжніх стандартних архіваторах, а формат шифрування AE-2 в архіві закріплено автоматизованим тестом — тож назовні виходить справді стандартний файл, а не щось, що лише видається робочим між двома копіями однієї програми.

Насправді назовні виходить одне долучення — protected-message.zip. Ваше справжнє повідомлення й кожне долучення зашифровано всередині нього; видиме тіло листа містить лише прості й зрозумілі вказівки, як його відкрити. Назви долучень усередині архіву замінено нейтральними заповнювачами, а справжні назви зберігаються в зашифрованому маніфесті, який з’являється, щойно одержувач введе пароль, — тож назви файлів теж не просочуються.

Під час надсилання GravesMail просить вас задати надійний пароль (щонайменше 12 символів, великі й малі літери, дві цифри та два спеціальні символи) — з контрольним списком, що оновлюється на ходу, і полем підтвердження, щоб одруківка ніколи не залишила одержувача без доступу. Після цього він показує пароль один раз, із кнопкою «Копіювати», і нагадує передати його іншим каналом — телефоном, в SMS або в чаті. GravesMail ніколи не пропонує надіслати пароль електронною поштою й ніколи ніде його не зберігає та не передає. GravesMail також уміє відкривати отримані захищені повідомлення на місці, на кожній платформі.

Чесно про те, що саме це захищає

Увесь захист — це пароль: виберіть добрий і передайте його іншим каналом, ніж сам лист. Немає ні терміну дії, ні «самознищення»: без сервера їх неможливо забезпечити, а GravesMail побудовано з пріоритетом локального зберігання, тож я такого не обіцяю. ZIP шифрує вміст файлів, а не структуру архіву, тому той, хто перехопить повідомлення, однаково побачить, скільки файлів усередині, їхні приблизні розміри та позначки часу — але не назви й не вміст. А тема листа, поля «Кому» й «Від» та час надсилання так само передаються відкрито, як і в будь-якому листі.

Швидкі правила: ваше особисте сортування пошти

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

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

Ваші правила мають пріоритет над спам-фільтром. Повідомлення, що відповідає одному з ваших правил, обробляється вашим правилом раніше, ніж спам-фільтр устигне його перенаправити, — тож відправник, для якого ви написали правило, не потрапить помилково до «Спаму». Фільтр однаково працює й оцінює повідомлення, і його вердикт можна побачити у «Властивостях»; він просто не має переваги над вашим правилом. Єдиний виняток — шкідливе ПЗ: сканування на шкідливе ПЗ перемагає завжди, тож правило ніколи не доставить небезпечне долучення до ваших «Вхідних».

Список «Сьогоднішній улов» показує все, що впіймали всі ваші правила в межах рухомого часового вікна (від 1 до 96 годин на комп’ютері, за замовчуванням 24). Кожен список для перегляду — «Правила», «Сьогоднішній улов» і «Спам» — має власне поле пошуку.

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

Затримані долучення

Коли YARA або ваш системний антивірус виявляє шкідливе ПЗ в долученні, GravesMail автоматично робить таке:

  • Повідомлення відкладено — його переміщено до окремої теки «Шкідливе ПЗ», відокремленої від «Спаму».
  • Долучення вилучено — небезпечний файл прибрано з повідомлення. Тіло повідомлення збережено, щоб ви бачили, хто його надіслав.
  • Дані збережено — байти долучення зберігаються локально. У вікні Затримані долучення можна переглянути кожен затриманий елемент, побачити, чому його затримано, зберегти на диск, якщо ви йому довіряєте, або вилучити назавжди. Затримані елементи зберігаються, доки ви не вирішите, що з ними робити; вони ніколи не зникають непомітно.
  • Повне пояснення — у властивостях повідомлення точно вказано, яке правило YARA або який антивірусний рушій спрацював, якого файлу це стосувалося і яку дію було виконано.

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

Автоматичні зашифровані резервні копії

GravesMail автоматично створює зашифровані резервні копії всього вашого профілю — не лише бази даних пошти, а й контактів, календаря, правил, списків безпечних і заблокованих відправників, налаштованих порогів, репутації відправників, навченого фільтра спаму, в’язки ключів PGP і збережених облікових даних. (Файли, які постачаються разом із програмою та замінюються під час оновлення, як-от таблиця географічного пошуку й базова модель спаму, навмисно не включено.)

  • Повні резервні копії — повна копія профілю, зашифрована AES-256
  • Різницеві резервні копії — лише те, що змінилося після останньої повної копії; під час відновлення з такої копії програма автоматично проходить увесь ланцюжок назад
  • Знімки перед операцією — перед будь-якою руйнівною операцією (сканування швидкими правилами, остаточне очищення, очищення смітника)

Розкладом ви керуєте в Менеджері резервних копій: це або інтервал (вимкнено, щодня, щотижня чи власна кількість годин, із повною копією кожні N днів), або тижнева сітка, де для кожного дня задано «Немає», «Повна» або «Різницева». Обмеження на кількість збережених повних копій, різницевих копій і знімків можна налаштувати, і вони ніколи не вилучають вашу єдину копію.

Як шифруються ці резервні копії

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

  • Захищене сховище ключів вашого пристрою — тому звичайні резервні копії створюються непомітно, без запиту пароля, завжди.
  • Ваша парольна фраза відновлення — вона розгортає той самий ключ на будь-якому комп’ютері, без жодного сховища ключів.

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

Парольну фразу відновлення ви задаєте один раз — коли вперше створюєте резервну копію. Вона обов’язкова, пропустити цей крок не можна: резервну копію не буде завершено, доки фразу не задано, — саме для того, щоб у вас ніколи не опинилися резервні копії, які ви не зможете відновити. Після цього резервні копії створюються без додаткових запитів. Змінити фразу можна будь-коли в Менеджері резервних копій, і після зміни всі наявні резервні копії залишаються придатними для відновлення.

Зберігайте парольну фразу відновлення в надійному місці

Це єдиний спосіб відновити ці резервні копії на новому або скинутому пристрої, і я не можу відновити її для вас — так задумано. Немає ні посилання для скидання, ні чорного ходу для служби підтримки, бо і те, і те було б лазівкою для когось, хто не є вами. Якщо ви забудете фразу і втратите пристрій, ці резервні копії відкрити не вдасться. Зберігайте її в надійному місці.

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

Журнал вилучень і відновлення

Кожне вилучене повідомлення фіксується в локальному журналі вилучень разом із повним текстом. Вилучені повідомлення можна переглядати, шукати й відновлювати одним клацанням упродовж 90 днів (термін можна змінити). Файл резервної копії не потрібен — відновлення з журналу вилучень відбувається миттєво.