Skip to content
DnsLister Forum

Where domain hunters compare notes

I got tired of “private” mail apps shipping my inbox to a data centre for AI, so I built one that doesn’t.

Hi all β€” I'm the developer of Mailie Pro, an Android email client. I'm posting here because this is the crowd most likely to find the holes in it, which is genuinely what I want. Mods, remove this if self-promo isn't welcome and no hard feelings.

The reason it exists: every "AI inbox" feature in the mainstream clients works by uploading your mail to a data centre and processing it there. I wanted the features and I wasn't willing to make that trade. So the model runs on the phone instead.

πŸ“± Google Play: https://play.google.com/store/apps/details?id=com.mailie.pro 🌐 Website: https://mailie.pro

Free to download. Every feature unlocked for 7 days, no card required.

What actually runs locally

β€’ Mailie Mind Advanced β€” the generative engine. An instruction-tuned, open-weight language model (0.5B or 1.5B parameters depending on your device) running on your hardware. Model licences are listed in-app under About β–Έ Open-source licences.

β€’ Mailie Mind Index β€” a 300M-parameter multilingual embedding model that turns each cached message into a 256-dimension vector. That's what powers search-by-meaning and find-similar across 100+ languages.

β€’ Mailie Mind Basic β€” an extractive engine that can only quote text already in the message, so it structurally cannot hallucinate. It's the fallback whenever the generative output fails a check.

β€’ Daily briefing, summaries, ask-your-inbox with a citation on every line, reply drafts in your own writing style, translation, phishing heuristics β€” all computed on the device.

β€’ On grounding: before a generated summary is shown, every fact in it (dates, amounts, names, links) has to appear literally in the source message, and the whole thing is checked for staying on topic. If either check fails it drops to the extractive engine. Not a guarantee against nonsense, but a lot better than trusting the model.

Privacy specifics, since that's the point

β€’ No telemetry, no analytics SDK, no crash reporter, no advertising ID. Not a setting you switch off β€” there's no such code in the build.

β€’ No account with me. I operate no mail server, no sync backend and no AI endpoint. There is nothing for your mail to be sent to.

β€’ The one server I run is a static host for the model downloads. Ordinary file request, verified against a SHA-256 digest, no cookie, nothing identifying. Your mail never touches it.

β€’ Remote images blocked by default, so open-tracking pixels don't fire. Nothing is proxied through a third party, because that just moves the leak.

β€’ Permissions: no contacts permission (the app has its own address book), no location, no broad storage. Document scanning works without the camera permission.

Transport and storage

β€’ TLS 1.3 only, implicit. There is no STARTTLS or cleartext code path anywhere in the app, so there's nothing to downgrade to.

β€’ Certificate pinning on first connect (SHA-256 of the public key) with issuer continuity. If a server's identity changes it stops and tells you rather than reconnecting quietly.

β€’ DNS-over-HTTPS, IP-bootstrapped, fail-closed β€” Quad9, Cloudflare, Google, or your own resolver.

β€’ Optional SOCKS5 proxy (Tor via Orbot). Every transport is bound to it, including the DoH lookups, so an unreachable proxy fails the connection rather than silently going direct.

β€’ SQLCipher (AES-256) for the local database, encrypted page by page. Keys in the Android Keystore, StrongBox where the device has it; credentials sealed with AES-256-GCM.

β€’ OpenPGP (PGP/MIME, Autocrypt, Web Key Directory lookup) and S/MIME, built on PGPainless and Bouncy Castle rather than hand-rolled crypto. Both work on all four supported protocols.

β€’ Four protocols: JMAP (RFC 8620/8621), IMAP with IDLE, POP3, and Microsoft's modern API for Outlook.com accounts, which ship with IMAP disabled.

β€’ Encrypted backups: AES-256-GCM under a PBKDF2-HMAC-SHA256 key. The passphrase never leaves the device and isn't stored β€” which also means I can't help you if you lose it.

β€’ Runs with no Google Play Services at all. UnifiedPush supported (ntfy or your own distributor) for real-time push without Firebase.

The part where it'll annoy this sub

I'd rather say this myself than have it dragged out of me in the comments:

β€’ It is not open source. The source isn't published. I know that's a hard dealbreaker for a lot of people here and I'm not going to try to argue anyone out of it. Everything above is a claim you're taking on trust or verifying by observation β€” mitmproxy on the device will at least show you the full connection list.

β€’ Google Play only for now.

β€’ Billing goes through Play. What I can say is that the billing layer is walled off from the mail by the module graph: it can't see your mailbox, it sends no identifier derived from your address, no purchase token or order ID is stored, and entitlement is checked locally rather than against a server of mine.

β€’ The AI features are a subscription after a 7-day trial that takes no card. The free tier isn't a nag screen β€” it's a complete mail client with up to three accounts and every one of the transport, encryption and privacy properties above. The subscription buys the on-device intelligence, not your security.

β€’ Document scanning is the one feature that needs Play Services. On a de-Googled phone the button is simply absent rather than sitting there broken.

β€’ The model download is big β€” about 330 MB for the embedding model, plus roughly half a gig to two gigs for the language model depending on the size you pick.

Happy to get into specifics on any of it: the threat model, the grounding checks, why POP3 refuses accounts whose server won't hand out stable message IDs, whatever. Criticism welcome, especially the technical kind.

Links again, for anyone who scrolled past: Google Play Β· mailie.pro

Source: r/ask_privacy · by /u/Hayder_Alshammari

Leave a Reply

Your email address will not be published. Required fields are marked *