6
16
Fork
You've already forked sterna-mail
1
Private, native Android email client for JMAP and IMAP/SMTP — FOSS, no Google services, no tracking.
  • Kotlin 94.4%
  • Java 5.5%
emon 6444dd0eff
All checks were successful
CI / build (push) Successful in 5m5s
Release 1.1.4 (131) — drop VCS info from the APK
F-Droid's rebuild of 1.1.3 got past the classes.dex and baseline.prof
mismatches; the only remaining difference was
META-INF/version-control-info.textproto, whose content depends on
whether AGP can read git in the build environment (their buildserver
got NO_VALID_GIT_FOUND, our build embedded the revision). Disable
vcsInfo so the file is not packaged at all.
2026年07月08日 19:39:12 +02:00
.forgejo/workflows ci: fix sdkmanager --licenses aborting under pipefail 2026年06月21日 18:52:10 +02:00
app Release 1.1.4 (131) — drop VCS info from the APK 2026年07月08日 19:39:12 +02:00
ci Docs/config: rename residual "Jmail" → "Sterna" 2026年06月24日 23:27:06 +02:00
core OpenPGP encryption (read + send) via OpenKeychain — v1.1.0 2026年07月04日 12:11:48 +02:00
docs README: refresh screenshots to the 1.0.0 set 2026年06月25日 16:50:07 +02:00
fastlane Release 1.1.4 (131) — drop VCS info from the APK 2026年07月08日 19:39:12 +02:00
gradle Perf: bundle baseline profile for AOT of hot startup/scroll paths 2026年06月27日 16:29:51 +02:00
libs/openpgp-api OpenPGP encryption (read + send) via OpenKeychain — v1.1.0 2026年07月04日 12:11:48 +02:00
.gitignore gitignore: drop local agent-state entry 2026年06月26日 12:03:53 +02:00
ARCHITECTURE.md Docs/config: rename residual "Jmail" → "Sterna" 2026年06月24日 23:27:06 +02:00
build.gradle.kts M2b-2: offline-first inbox with a Room cache 2026年06月21日 16:40:23 +02:00
CONTRIBUTING.md Contributing: require FOSS-only dependencies 2026年06月26日 20:06:00 +02:00
DESIGN.md Docs/config: rename residual "Jmail" → "Sterna" 2026年06月24日 23:27:06 +02:00
ENCRYPTION.md OpenPGP encryption (read + send) via OpenKeychain — v1.1.0 2026年07月04日 12:11:48 +02:00
FEATURES.md OpenPGP encryption (read + send) via OpenKeychain — v1.1.0 2026年07月04日 12:11:48 +02:00
gradle.properties Bootstrap Jmail: JMAP Android client scaffold (M0) 2026年06月21日 14:37:37 +02:00
gradlew Bootstrap Jmail: JMAP Android client scaffold (M0) 2026年06月21日 14:37:37 +02:00
gradlew.bat Bootstrap Jmail: JMAP Android client scaffold (M0) 2026年06月21日 14:37:37 +02:00
LICENSE Bootstrap Jmail: JMAP Android client scaffold (M0) 2026年06月21日 14:37:37 +02:00
PRIVACY.md Security hardening: TLS, header injection, WebView, credentials 2026年06月25日 09:44:33 +02:00
README.md OpenPGP encryption (read + send) via OpenKeychain — v1.1.0 2026年07月04日 12:11:48 +02:00
SECURITY.md OpenPGP encryption (read + send) via OpenKeychain — v1.1.0 2026年07月04日 12:11:48 +02:00
settings.gradle.kts OpenPGP encryption (read + send) via OpenKeychain — v1.1.0 2026年07月04日 12:11:48 +02:00

Sterna Mail logo

Sterna Mail

All your mail. None of the baggage.
A fast, private JMAP email client for Android, fluent in classic IMAP/SMTP too.
No ads. No tracking. No Google.

CI Latest release License: GPLv3 Support on Ko-fi

Sterna Mail is open-source and built for JMAP, the new and faster internet standard for email, with full support for classic IMAP/SMTP too. Just your mail, on the server you choose.

Named after Sterna, the genus of terns 🐦 — the Arctic tern flies the longest migration of any animal, carrying itself clear across the world and back every single year. We liked the idea of mail that travels light and always finds its way home.

Status: 1.0, and shipping. Sterna is a complete, daily-drivable email client: read, organise, search, write, schedule, and send mail (with attachments) over JMAP or IMAP/SMTP, across multiple accounts, fully offline-capable, with push notifications and remote content blocked by default. Hit a rough edge? Please tell us about it!

📸 A look

Inbox (light) Inbox (dark) Reading Compose Appearance
Inbox, light theme Inbox, dark theme Reading a message Composing Appearance settings

Light "Arctic" and dark "Pelagic" themes, a calm sea-teal accent with a warm coral touch — the tern's beak. 🪸

📲 Download & install

There's no app-store listing yet, but you can grab the latest APK today:

  1. ⬇️ Download the latest APK (under Assets).
  2. Open the downloaded .apk on your phone. Android will ask whether to allow installing apps from this source — accept it for your browser or file manager.
  3. Tap Install, then open Sterna and add your account. 🎉

i️ Releases are signed with Sterna's own key, the same one the future F-Droid build will use, so updates install cleanly over each other. No Google account or app store needed, ever.

Prefer to build it yourself? See CONTRIBUTING.md.

🤔 Why JMAP?

Most email apps talk to your server using an old protocol called IMAP. JMAP is its modern successor: it syncs faster, uses less battery and data, and was designed for today's phones. Servers like Stalwart speak JMAP, and Sterna is built to make the most of it.

Sterna also speaks classic IMAP and SMTP, so it works with any standard mail provider — pick the protocol when you add an account, or just type your email and let autodiscovery find the server for you.

💚 What Sterna stands for

  • 🔒 Privacy first. No tracking, no ads, no analytics, no Google services. Remote images and tracking pixels are blocked by default; tapped links can be stripped of tracking parameters and confirmed before opening.
  • 🆓 Free and open. Licensed under the GPLv3 — anyone can read, audit, and improve the code.
  • 🎨 Modern and calm. A clean, fast Material 3 interface with its own brand identity that follows your phone's theme and language.

Features

📥 Reading & organising

  • Unified inbox across multiple accounts (JMAP and/or IMAP/SMTP), fully offline (local cache); large folders page in as you scroll, fetching older mail from the server
  • Conversation view — threads collapse into one row with a message count
  • Nested folders shown as a collapsible tree; create / rename / delete, plus subfolders
  • Configurable swipe actions, flag/star, archive & delete with undo, multi-select bulk actions, snooze, report spam, empty trash (with undo), sort and unread-only filter
  • Search-as-you-type (server-side + instant local results) with advanced filters (from, subject, has-attachment, date)
  • Calendar invites preview as an event card; one tap adds them to your calendar app (no calendar permission needed)

✍️ Writing & sending

  • Compose with recipient chips + autocomplete and email validation, multiple identities each with its own signature, attachments, and drafts
  • Undo send, schedule send (with a screen to view/cancel pending sends), and "forgot attachment?" / large-recipient-list reminders

🔑 Accounts & setup

  • Add an account with just email + password (/.well-known/jmap autodiscovery), password-free OAuth 2.0 sign-in (device flow), or manual IMAP/SMTP with provider presets; a "test connection" button before saving
  • Per-account colour, sync window, and notification toggle; encrypted credential storage (AndroidKeyStore); app lock (biometric / PIN)

🔒 Encryption

  • OpenPGP (via OpenKeychain): read and send signed and/or encrypted mail (PGP/MIME) on both JMAP and IMAP/SMTP. Decrypted content is never written to disk. See the encryption guide to get started.

🔔 Notifications & server power

  • Push for new mail with no Google / FCM (JMAP EventSource or IMAP IDLE), grouped per account, with quiet hours
  • Server-side vacation responder and Sieve filter rules, mailbox quota display

🎨 Polish

  • Sterna's own Arctic (light) / Pelagic (dark) palette, optional Material You, adjustable message text size, settings export/import, a screen-reader-friendly UI, and coastal empty-state illustrations

The full, tracked feature set lives in FEATURES.md.

🛠️ Planned: home-screen widgets, S/MIME, and more.

🌍 Languages

Sterna's interface is fully translated into nine languages:

🇬🇧 English · 🇫🇷 French · 🇩🇪 German · 🇪🇸 Spanish · 🇮🇹 Italian · 🇵🇹 Portuguese · 🇳🇱 Dutch · 🇷🇺 Russian · 🇵🇱 Polish

It also respects your system language out of the box, and you can override it per-app in Settings → Appearance.

👩‍💻 For developers

Architecture and build instructions live in ARCHITECTURE.md and CONTRIBUTING.md. The planned and shipped feature set is tracked in FEATURES.md. Contributions, bug reports and ideas are very welcome. 🙌

Support

Sterna is free and open, and always will be. If it's useful to you and you'd like to help fuel its development, you can buy me a coffee on Ko-fi . Entirely optional — thank you for even considering it. 💚

🙏 Acknowledgements

Sterna's interface is freely inspired by K-9 Mail (now Thunderbird for Android), the venerable open-source Android mail client. Many of its interaction patterns — the way you swipe, triage, and read your mail — are the fruit of years of work by the K-9 community, and Sterna is better for standing on their shoulders. Heartfelt thanks to the K-9 / Thunderbird for Android developers for building, and freely sharing, such a fine app. 💚

📄 License

GNU General Public License v3.0.