從不經手你郵件的 Mac 版 Gmail 用戶端
一款注重隱私的郵件用戶端,應該是一個你能自行驗證的承諾。本頁說明 Hark 這項承諾——你的郵件從不經過我們的伺服器——背後的架構,詳細到足以讓你驗證,其中包括少數會傳到我們這裡的資料、郵件可能接觸到的第三方,以及決定每一項行為的設定。
整體架構
只有兩方:你的 Mac 和 Google。Hark 在前者上執行,並從你的電腦透過 TLS,經由 Google 的 Gmail、Calendar、Tasks 與 People API 和後者溝通。這條路徑上沒有第三方。我們沒有經營任何會同步、轉送、索引、備份或「加速」你郵件的伺服器,所以我們的基礎設施裡不存在任何可能被入侵、被傳喚或外洩的郵件副本。
這不是一項日後可能在某個版本悄悄改掉的政策選擇,而是 App 的架構本身。同步引擎就在 App 裡,若要在路徑上加一台伺服器,就得圍繞著它把整個引擎重寫一遍。
你的資料究竟存放在哪裡
- 你的 Google 權杖:存放在 macOS 鑰匙圈中。 讓 Hark 能代表你操作帳號的憑證,是以鑰匙圈項目的形式儲存,由 macOS 加密並控管存取權限。它們從不會寫入 Hark 自己的檔案。
- 你的快取:存放在 Application Support 中,只有你能讀取。 郵件、活動和待辦事項保存在
~/Library/Application Support/Hark底下的本機資料庫中,每個帳號一個檔案夾,檔案權限只允許你的使用者帳號讀取。下載的附件快取在~/Library/Caches/Hark;快取的外部圖片、寄件者相片和標誌則存放在~/Library/Caches/hark-url-cache、~/Library/Caches/hark-image-cache,以及 App 的 WebKit 儲存區中,全都位於你自己的「資源庫」檔案夾內。FileVault 會將這些靜態資料全部加密。Hark 本身不會在上面再加一層加密——我們在此明白說出來,讓你自行判斷 FileVault 對你是否重要。 - 你的設定:存放在偏好設定檔中。 視窗位置、檢視選擇等資訊,都存放在 App 一般的 macOS 偏好設定檔中,另外還有你最近的搜尋查詢(最近 25 筆),以及你已略過之對話的 ID。郵件內容不會寫入其中。
- 登出時:撤銷、刪除、清除。 Hark 會撤銷在 Google 的授權、刪除鑰匙圈項目,並從磁碟上移除該帳號的快取。
哪些資料會傳到我們這裡,以及何時
在平常使用時——閱讀、撰寫、整理郵件、查看一週行程——不會有任何與你郵件相關的資料傳過來。有五件事會用到我們的伺服器;其中四件只有在你採取行動時才會發生:
- 統計使用中的 Mac 數量。 Hark 開啟期間,每天會傳送一次以下資料到
logs.harkmail.app:一個專為此用途產生的隨機使用 ID、日期、Hark 的版本、組建編號與更新管道,以及 macOS 主要版本號。這些資料不與任何帳號連結,也不含任何郵件內容;伺服器不保留 IP 位址,並會在 13 個月後刪除紀錄。 - 檢查更新。 在你允許自動檢查之後(Hark 會在第二次啟動時詢問),它大約每天一次(公開測試版則每小時一次)從
updates.harkmail.app取得一個小型的更新資訊檔,並在你同意更新時從那裡下載新版本。另外,即使關閉自動檢查,Hark 也會在啟動時和每天一次讀取同一個公開檔案,連不上時每 15 分鐘重試一次,目的只是確認你的版本是否仍受支援。過程中不會傳送任何識別碼:伺服器看得到你的 IP 位址和時間,請求的 User-Agent 帶有 App 與 macOS 版本,請求中也帶有你的 Accept-Language 偏好。不含任何與你帳號相關的資訊。 - 你送出的錯誤回報。 「Help › Report a Bug」會將以下內容傳送到
logs.harkmail.app:你輸入的文字、你標示的是錯誤還是功能建議、你選擇的區域、你自己附加的圖片、姓名或電子郵件欄位(預設填入你登入的地址,可以編輯——清空即可匿名送出回報),以及 App 與電腦的相關資訊——App 版本、組建編號與提交編號、macOS 版本、硬體機型、CPU 核心數、記憶體容量、可用磁碟空間、地區設定、時區、散熱狀態、低耗電模式、開機後經過的時數、傳送時間、已連結的帳號數量(僅數量),以及每次安裝隨機產生的 ID。它絕不傳送郵件內容、主旨、其他人的地址、權杖或記錄檔。需要留意的是圖片:收件匣的螢幕截圖,就是你的收件匣。 - 當機報告,只有在你開啟時才會傳送。 預設為關閉。在設定中開啟這個開關後,App 當機時會傳送堆疊追蹤、例外類型、訊號與終止原因、當機的執行緒、當機時間與 macOS 為該次當機指定的 ID、App 的版本、組建編號與提交編號,以及 macOS 版本和硬體機型。這份報告中沒有任何欄位能夾帶郵件內容。
- 附加 Google Drive 檔案。 Google 的檔案挑選器是網頁元件,所以選擇雲端硬碟檔案時,會在你的瀏覽器中開啟
harkmail.app上的一個頁面。我們的主機看得到的,和任何網站看得到的一樣——你的 IP、時間、一個一次性的 ID——看不到你的地址、你的檔案,也不知道你選了哪一個。挑選器使用的 Google 憑證是在你的瀏覽器中產生的,而且只能授予你親自選取之檔案的存取權。
日後還會多一項:如果你在公開測試結束後訂閱,會有一個帳務帳號。它與你的 Google 帳號是分開的身分——可以是你自選的電子郵件地址,或是透過一個無法存取 Gmail 的用戶端以 Google 登入——它儲存的完整資料清單列在隱私權政策中。
郵件可能接觸到的第三方
電子郵件不是封閉的系統,一個完全不顯示 Google 以外內容的用戶端,會讓你看到一大堆殘缺不全的郵件。以下是郵件可能引發的對外連線,以及控制每一項的設定:
- 郵件中的外部圖片。 電子報和收據的圖片,是從寄件者的伺服器載入的。在預設的「Always display external images」設定下,Hark 會直接載入這些圖片,這會讓對方伺服器得知你的 IP 位址,以及這封郵件已被開啟。在「Settings › General」中選擇「Ask before displaying external images」後,在你按下之前不會載入任何內容。
- 寄件者標誌與大頭貼。 個人的相片來自 Google,與你的郵件走同一條連線。公司的標誌則可能來自該品牌自己公開的紀錄(先透過 Google 的 DNS 服務查詢寄件者的網域,再從品牌的伺服器取得標誌檔案),或來自 Google 的網站圖示服務。兩者都依循同一個「External images」設定:將它設為「Ask」,這兩種查詢就都不會發生。
- Gravatar,只有在你開啟時才會使用。 預設為關閉。開啟後,Hark 會將每位聯絡人地址的雜湊值傳送到 gravatar.com 查詢相片,這會讓該服務得知你與哪些人通信。設定中的開關旁邊也有寫明這一點。
如何自行驗證
你不必只聽本頁的一面之詞。在 Mac 上安裝對外連線防火牆,就能看到 App 連線的每一台主機。平常使用 Hark 時,你應該會在登入期間看到 accounts.google.com,看到郵件、行事曆、待辦事項和聯絡人所用的 Google API 主機(googleapis.com 及其子網域),以及聯絡人相片所用的 Google 圖片主機(實際上是 lh3.googleusercontent.com)。檢查更新時,你會看到 updates.harkmail.app;每天一次匿名統計使用中的 Mac 時,你會看到 logs.harkmail.app,除此之外,只有在你送出回報時(或者如果你開啟了當機報告,在當機之後)才會看到它。將「External images」設為「Ask」後,在你要求載入圖片之前,不應該看到任何寄件者的伺服器。如果你看到任何其他連線,請告訴我們:support@souplin.com。
Hark 向 Google 要求的,是實作每項功能所需的最小權限——例如,它不要求能永久刪除郵件的權限,所以 App 最多只能把郵件移到垃圾桶——而且它對 Google 資料的使用受 Google「限制使用」政策的約束。各項權限及其用途,都列在說明頁面中。
常見問題
Hark 會把我的郵件存放在它的伺服器上嗎?
不會。Hark 沒有任何會接收、轉送或儲存郵件、行事曆、聯絡人或待辦事項的伺服器。App 直接從你的 Mac 與 Google 連線,Google 以外唯一的副本,就是你自己磁碟上的快取。
開發 Hark 的人能讀我的郵件嗎?
不能——我們這邊根本沒有東西可讀。信箱內容唯一可能傳到我們這裡的途徑,是你自己在錯誤回報中附加螢幕截圖。什麼都不附加,你的郵件就不會有任何部分離開你的 Mac。不過,除非你清空,否則錯誤回報會帶有姓名或電子郵件欄位,預設填入你登入的地址。
本機快取有加密嗎?
由你的 Mac 加密,而不是由我們。快取位於你的 Application Support 檔案夾中,只有你的使用者帳號能讀取,而 FileVault 會連同磁碟上的其他所有資料一起加密。Hark 不會另外加上第二層加密——如果 FileVault 沒有開啟,開啟它就是保護快取的方法。
登出時會發生什麼事?
三件事:Hark 會通知 Google 撤銷它對你帳號的存取權、從鑰匙圈中刪除權杖,並移除該帳號的本機快取。登出不只是忘記密碼而已;在 Google 的授權也會一併撤銷。
郵件中的圖片會洩露我已開啟郵件嗎?
在任何用戶端都有可能。在預設設定下,Hark 會直接從寄件者存放圖片的位置載入郵件中的外部圖片,這會讓寄件者的伺服器看到你的 IP 位址和時間。在「Settings › General」中將「External images」設為「Ask before displaying」,在你同意之前就不會載入任何內容。