運作原理

架構、垃圾郵件偵測,以及過濾器如何隨時間變得更聰明

架構: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 上,附件會經 AMSI 介面提交給你已安裝的防毒軟件(Windows Defender、Norton、Bitdefender、Kaspersky 等)。這一層在 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,另有 RSA-4096 可供選擇,以便與較舊的 PGP 軟件相容。匯出你的公開金鑰,讓別人可以寫信給你;匯入對方的公開金鑰,你便可以寫信給對方。匯入之後,GravesMail 會顯示該金鑰的指紋;請經其他途徑——通電話或當面——向對方確認,然後把它標記為已驗證。未驗證的金鑰仍可使用,但會一直標示為未驗證,因為這個標示只有一個意思:你尚未確認這條金鑰確實屬於該人。

金鑰是以指紋識別,而不是以電郵地址識別。一個地址有兩條金鑰十分正常——一條舊、一條新,或 RSA 和 Ed25519 金鑰並存——因此每個操作都是針對你所選的金鑰,而不是碰巧符合該地址的第一條金鑰。

你可以把金鑰連結到聯絡人,這樣向該人加密時便無須在金鑰管理員中翻找。連結金鑰不會開啟加密;你仍須逐封郵件選擇。

備份你的私密金鑰——這一點真的很重要

如果你遺失了私密金鑰,所有曾以它加密的郵件都會永久無法復原。我做不到,任何人都做不到。請使用備份私密金鑰,把受密碼保護的備份檔案儲存在安全的地方,並記住密碼。還原私密金鑰可在新裝置或重新安裝的裝置上把它取回,並會顯示金鑰的身分及指紋,以確認還原的是哪一條。刪除你自己的私密金鑰無法還原,因此 GravesMail 會加強警告,並要求你確認。

傳送與閱讀

「撰寫」視窗設有安全性控制項,有三種模式——簽署、加密或簽署 + 加密(建議用於私人郵件)。預設為關閉,因此普通郵件不受影響。你收到的加密郵件會自動解密,並顯示鎖上的鎖頭 🔒;已簽署的郵件會顯示其簽署狀態,而無效的簽署會醒目地顯示,不會輕輕帶過。如果郵件是加密給某條金鑰,而該裝置上沒有這條金鑰,程式會明確說明,而不是給你顯示空白的內文。

你傳送加密郵件時,GravesMail 亦會以你自己的金鑰加密,因此「已傳送」資料夾內的副本你仍可讀取。否則,你自己保留的副本便無法解密。這項功能永遠開啟。

絕不通融的規則

如果你選擇加密,而某位收件者沒有可用的金鑰,傳送會被攔下。GravesMail 會停下來問你:取消,還是明確選擇不加密傳送——後者是刻意的第二個動作,並會列出有風險的收件者;它絕不是預設選項,也絕不會自動執行。沒有任何一條程式碼路徑,會在你選擇加密之後悄悄以明文傳送。這項規則是在引擎本身執行,而不只是在介面上,並有自動化測試涵蓋。

PGP 保護甚麼,不保護甚麼

PGP 會加密郵件的內文及附件。它不會隱藏主旨、收件者/寄件者/副本,或郵件的傳送時間——這些都以明文傳輸。每個 PGP/MIME 系統(包括 Proton)都有同樣的限制;這不是 GravesMail 的缺陷,但你應在倚賴它之前知道這一點。

PGP 保護的是傳輸途中的郵件——防止被攔截,也防止被你的郵件供應商讀取。它不是反鑑證工具:郵件解密之後,會快取在 GravesMail 的本機加密資料庫內,讓你可離線搜尋及閱讀。

另外兩項限制,在此坦白說明:GravesMail 不會自動查詢金鑰伺服器或 WKD,亦不設信任網絡(web of trust)——你要自行匯入金鑰、自行驗證指紋,這是刻意的選擇,以免在「某人是誰」的問題上信任網絡服務。此外,內嵌明文簽署(clearsigned)的郵件會顯示為可讀文字,但不會驗證簽署;GravesMail 只會把它們顯示出來,而不會聲稱一個它實際上沒有檢查過的簽署有效。

互通性

GravesMail 的 PGP 已使用 GravesMail 產生的金鑰,與 GnuPG 作雙向驗證——GnuPG 是 OpenPGP 的參考實作——Ed25519 及 RSA-4096 均已涵蓋:GravesMail 加密、gpg 解密,gpg 加密、GravesMail 解密,而簽署在兩個方向都驗證通過。這是一套自動化測試,不是一次性的人手檢查。

Proton Mail 亦已確認——是人手測試,而非自動化測試。GravesMail 與一個真實的 Proton 帳戶之間,已雙向傳送及讀取真正的加密郵件。這次測試亦在過程中發現並修正了三個真實的缺陷:Proton 嚴格的金鑰驗證拒絕接受 GravesMail 的 Ed25519 金鑰、一個金鑰到期日的錯誤,以及加密郵件的附件在解密時被悄悄丟棄。三個問題均已修正,與 Proton 的互通在兩個方向都運作正常。

至於 Thunderbird,我沒有專門測試過它的 PGP,所以不會在這裏作出聲稱。它是標準的 OpenPGP 用戶端,應該可以運作,但「應該」不等於已驗證,我寧願告訴你實際檢查過的是甚麼。

受密碼保護的電郵(無需金鑰)

如果對方也使用 PGP,PGP 就是合適的工具。如果對方不使用——大多數人都不使用——請改用下文的密碼保護選項。

有時你需要把私人內容傳送給一個沒有加密金鑰、也沒有特別軟件的人——對方只有一個普通的電郵帳戶。GravesMail 的密碼保護(無需金鑰)選項,會把你的郵件及任何附件封存在一個真正的標準 AES-256 加密 ZIP 內,收件者在任何平台上用免費的普通軟件便可開啟。

這採用業界標準的 WinZip AES-256(AE-2)格式——即 7-Zip、Keka 及流動裝置上的壓縮程式本來就能處理的那種強加密。它不是 GravesMail 專用的容器,也不是舊式 ZIP 工具所用、強度薄弱而可被破解的「ZipCrypto」。互通性已用真正的標準壓縮軟件驗證,而壓縮檔的 AE-2 加密格式亦由自動化測試鎖定——因此傳送出去的是真正的標準檔案,而不是只在同一個應用程式的兩個副本之間看似可用的東西。

實際傳送出去的只有一個附件:protected-message.zip。你真正的郵件及每個附件都加密在其中;看得見的電郵內文只載有淺白的開啟說明。壓縮檔內的附件名稱會換成中性的代號,真正的名稱則存放在一份加密的清單內,收件者輸入密碼後才會顯示——因此檔案名稱也不會外洩。

傳送時,GravesMail 會要求你設定一個高強度的密碼(至少 12 個字元,包含大小寫字母、兩個數字及兩個符號),並設有即時核對清單及確認欄,令打錯字也絕不會把收件者拒諸門外。之後它只會顯示密碼一次,旁邊設有「複製」按鈕,並提醒你經其他途徑把密碼交給對方——電話、短訊或聊天程式。GravesMail 絕不會提出用電郵傳送密碼,亦絕不會在任何地方儲存或傳送密碼。GravesMail 亦可在所有平台上就地開啟它收到的受保護郵件。

坦白說明這種方式保護甚麼

全部的安全性都繫於密碼——請選一個好的密碼,並經電郵以外的另一個途徑告知對方。這種方式不設到期日,也沒有「自動銷毀」;沒有伺服器便無法強制執行這些功能,而 GravesMail 是本機優先的,所以我不會聲稱有這些功能。ZIP 加密的是檔案的內容,而不是壓縮檔的結構,因此任何攔截到郵件的人,仍可看到裏面有多少個檔案,以及它們的大約大小和時間戳記——只是看不到名稱或內容。此外,電郵的主旨、收件者/寄件者及時間仍然以明文傳輸,任何電郵都是這樣。

快速規則:你的個人電郵分流

快速規則可讓你為特定的寄件者、網域或主旨模式建立一鍵分流規則。每條規則在工具列上有自己的按鈕。你對某封郵件套用規則時,其寄件者會自動加入該規則的比對清單——規則愈用愈聰明。

規則可以把符合的郵件送到垃圾郵件陷阱留待檢視、移至某個資料夾、刪除,或在若干天後自動刪除。規則可設定為在同步期間自動套用,令符合的郵件永遠不會到達收件匣;你亦可在數秒內掃描整個資料夾,批量捉出舊郵件。被規則攔下的任何郵件,都可隨時檢視、還原或清除。

你的規則優先於垃圾郵件過濾器。符合你某條規則的郵件,會在垃圾郵件過濾器把它轉走之前,先按你的規則處理——因此你已為其設定規則的寄件者,不會被錯誤送到「垃圾郵件」。過濾器仍會執行,仍會為郵件評分,你可以在「內容」中看到它的判定;它只是不會凌駕你的規則。唯一的例外是惡意軟件:惡意軟件掃描永遠優先,因此規則絕不可能把危險的附件送到你的收件匣。

今日攔截清單會顯示在一段滾動的時間範圍內(桌面版為 1 至 96 小時,預設 24 小時),被你所有規則攔下的全部郵件。每份檢視清單——規則、今日攔截及垃圾郵件——都有自己的搜尋方塊。

開啟一封被攔下的郵件,第一個分頁是安全預覽:郵件會按它在閱讀窗格中的樣子呈現,但指令碼已失效、追蹤像素已封鎖,而遠端圖片只會為受信任的寄件者載入。該分頁設有回覆、全部回覆及轉寄按鈕,因此你無須先把被攔下的郵件還原至收件匣便可回覆——郵件會留在原處,而你的回覆會作為普通郵件傳送。

已保留的附件

當 YARA 或你的系統防毒軟件在附件中偵測到惡意軟件時,GravesMail 會自動採取以下行動:

  • 郵件被隔離——移至專用的「惡意軟件」資料夾,與「垃圾郵件」分開。
  • 附件被剝離——危險的檔案會從郵件中移除。郵件內文會保留,讓你可以看到是誰寄來的。
  • 資料得以保存——附件的位元組會保留在本機。你可以透過已保留的附件逐一檢視每個已保留的項目、查看保留原因,如果信任該項目可將它儲存到磁碟,亦可永久刪除。已保留的項目會一直保存,直至你作出決定;絕不會無聲無息地遺失。
  • 完整說明——郵件內容會清楚顯示觸發的是哪一條 YARA 規則或哪一個防毒引擎、受影響的是哪個檔案,以及採取了甚麼動作。

你亦可隨時在任何附件上按右鍵,選擇掃描惡意軟件,按需要執行掃描。YARA 規則可在「設定」中手動更新,或按每週排程自動更新。

自動加密備份

GravesMail 會自動為你的整個設定檔建立加密備份——不只是郵件資料庫,還包括聯絡人、日曆、規則、安全及封鎖清單、已調校的門檻、寄件者信譽、已訓練的垃圾郵件過濾器、PGP 金鑰圈,以及已儲存的帳號認證資料。(隨應用程式提供、更新時會被取代的檔案,例如地理位置查詢表和基準垃圾郵件模型,則刻意不納入備份。)

  • 完整備份——整個設定檔的完整副本,以 AES-256 加密
  • 差異備份——只包含自上次完整備份以來的變更;還原差異備份時會自動沿備份鏈逐層回溯
  • 操作前快照——在任何破壞性操作(快速規則掃描、清除、清空回收筒)之前建立

你可在「備份管理員」中控制排程:可以選擇間隔(關閉、每日、每週,或自訂小時數,並每 N 日進行一次完整備份),或選擇每週格表,將每一天設為「無」、「完整」或「差異」。完整備份、差異備份和快照備份的保留上限均可設定,而且絕不會清除你唯一的副本。

這些備份如何加密

GravesMail 本身的排程備份和手動備份,均以備份主密鑰封存,這條密鑰由應用程式為你產生和管理。密鑰本身絕不會以明文寫入磁碟——只會儲存經包裝的副本,而且以兩種方式包裝:

  • 你裝置的安全金鑰儲存區——因此日常備份會靜靜地進行,永遠不會要求輸入密碼。
  • 你的復原密碼短語——可在任何一部電腦上解開同一條密鑰,完全不涉及金鑰儲存區。

正是這第二層包裝,令這些備份不依賴特定裝置。早期版本的自動備份綁定於某一部實體電腦;現在已不再是只能在建立備份的電腦上還原。

復原密碼短語只需設定一次,就是在你第一次建立備份的時候。這是必須設定、不能略過的——未設定之前,備份不會完成,目的正是確保你永遠不會手握一堆無法復原的備份。此後備份會自動執行,不再提示。你可隨時在「備份管理員」中更改,更改後所有現有備份仍可還原。

妥善保管你的復原密碼短語

它是在新裝置或已重設的裝置上復原這些備份的唯一方法,而我無法替你找回它——這是刻意的設計。沒有重設連結,也沒有支援後門,因為任何一種都會成為其他人闖入的途徑。如果你忘記了它,又遺失了裝置,這些備份就無法開啟。請把它存放在安全的地方。

「備份管理員」讓你瀏覽任何備份的內容、搜尋所有備份、與目前的資料庫比較,以及選擇性地復原個別郵件。還原時會先驗證備份是否完整無缺,才會動到你目前的設定檔——被截斷或已損壞的備份會被拒絕,而你現有的資料原封不動——完成後會逐個資料集顯示還原了甚麼。

刪除記錄與復原

每封被刪除的郵件都會連同完整內文記錄在本機的刪除記錄中。你可以瀏覽、搜尋已刪除的郵件,並一按即復原,期限最長 90 日(可設定)。無需備份檔案——直接從刪除記錄即時復原。