vladimiry/ElectronMail

Use DuckDuckGo's Image Proxy

mr-northwatch opened this issue · 5 comments

Route images on emails through a proxy, protecting the end-user's IP and User Agent.

Basically, just replace image URLs on images so they start as https://image.com/image.png and turn into https://external-content.duckduckgo.com/iu/?u=https://image.com/image.png.

This should be optional since images routed through DDG could be seen by them, so people who don't trust them for whatever reason should have a way to turn the feature off.

I don't know of any other proxies, is any others exist maybe make it a choice between the various services?

It looks like StartPage has a proxy.

Just insert the image URL on the end of https://www.startpage.com/av/proxy-image?piurl=

  • The is an opt-in feature (disabled by default).
  • The proxy URL pattern is configurable. It's configurable per account, so each account can specify own proxy value.
  • The feature toggle control is placed under the "Extended Options" block on the account edit form (see attached screenshot):
    proxy1

Besides that there is another new toggle which enables blocking all non "API entry point"-based network requests. For example, this feature can be useful for detecting if @ProtonMail web client apps do unexpected/unintended/shady network requests. Warning: If option enabled the inlined in the emails images won't be loaded (the app displays a warning message per each blocked request).

proxy4

the app displays a warning message per each blocked request

See the blocked request notification example on screenshot (the whitelisted webclient0://app.protonmail.ch value here is the in-app-only-available host on which the app hosts the static web clients publicly assembled on CI server from https://github.com/ProtonMail):

blocked-remote-request-notification

Block all non "API entry point"-based network requests

This feature by the way helped detecting the following privacy issue in proton's mail web client (originally listed in #332 (comment)):

The problem was that when the user was exporting the email message in Proton's UI via "More => Export" click all the inlined to email images were requested. So the export was not efficient since there is no need to request inlined images during exporting to EML. But more importantly, the IP address was silently leaking without the user's consent.

By the way @ProtonMail recently switched to loading external images via /api/images?Url=<address> API. So a similar custom feature implemented in the app doesn't make much sense anymore.