mirror of
https://github.com/flectar/mail.git
synced 2026-11-11 17:57:54 +00:00
197 lines
9.3 KiB
Markdown
197 lines
9.3 KiB
Markdown
# Installing Flectar Mail
|
|
|
|
Flectar Mail is in development and isn't stable yet. Preview builds are
|
|
published on [GitHub Releases](https://github.com/flectar/mail/releases). The
|
|
[README](../README.md#-get-flectar-mail) lists the files for each platform.
|
|
|
|
The builds from GitHub Releases tell you when a newer version is out. Once a
|
|
day, Flectar Mail asks GitHub for the list of releases, without any account or
|
|
mail details, and a newer one shows up in the sidebar and in Settings → About,
|
|
where you can also turn the check off. Copies that update another way, such as
|
|
the Microsoft Store package, Flathub or a distribution's package, don't ask.
|
|
|
|
## Signing in to Gmail and Outlook
|
|
|
|
Google OAuth verification requires an annual CASA security assessment, which
|
|
depends on sponsor support for a community project like Flectar. Until that
|
|
verification is funded and complete, a stable release with Gmail OAuth
|
|
configured by default isn't possible. You can help by
|
|
[sponsoring Flectar](https://github.com/sponsors/flectar). Google and Microsoft
|
|
OAuth verification is still in progress, so earlier GitHub prereleases are
|
|
intended for testers using their own OAuth registrations or IMAP, POP3, or JMAP
|
|
accounts.
|
|
|
|
Builds without OAuth app keys keep Gmail and Outlook sign-in disabled. Use the
|
|
**Sign-in settings** cog on the welcome screen to save your own Google or
|
|
Microsoft app registration, or connect an IMAP, POP3, or JMAP account. Custom
|
|
keys are shared with Settings and take precedence over bundled keys; clearing a
|
|
custom client ID restores the defaults when available. Each provider enables
|
|
separately once its configuration is saved.
|
|
|
|
## Windows and macOS
|
|
|
|
Windows previews are unsigned; macOS previews are ad-hoc signed and not
|
|
notarized, so operating-system security prompts are expected. Install updates
|
|
manually. On macOS, move Flectar Mail to the Applications folder and open it
|
|
from there: macOS may not show notifications from a copy anywhere else, such as
|
|
one in a temporary folder.
|
|
|
|
Windows downloads come in x64 and arm64 builds. A Windows on Arm PC can run
|
|
the x64 build through emulation, but the arm64 build runs natively. The
|
|
[Microsoft Store package](microsoft-store.md) is built with every release and
|
|
is not published in the Store yet.
|
|
|
|
## Linux
|
|
|
|
### Installing a package
|
|
|
|
Each Linux package has an x64 build and an arm64 build for 64-bit Arm
|
|
computers. Run `uname -m` to see which one you need (`x86_64` or `aarch64`).
|
|
The commands below install the x64 files, and the arm64 files install the same
|
|
way.
|
|
|
|
```bash
|
|
sudo dnf install ./flectar-mail-<version>-linux-x64.rpm
|
|
flatpak install --user ./flectar-mail-<version>-linux-x64.flatpak
|
|
flatpak run com.flectar.mail
|
|
```
|
|
|
|
### Raspberry Pi
|
|
|
|
Use the arm64 packages with the 64-bit Raspberry Pi OS. Every release checks
|
|
that they load with the 16 KiB memory pages of the Raspberry Pi 5 kernel.
|
|
Raspberry Pi OS kernels don't include Landlock, which lets the sandboxed PDF
|
|
preview read the system fonts and nothing else. There the preview can't open
|
|
any file, so PDFs that don't embed their fonts are drawn with built-in fonts
|
|
instead.
|
|
|
|
### Fedora RPM
|
|
|
|
The RPMs target Fedora 43 and 44 on x86_64 and aarch64. Release builds use
|
|
Fedora 43 as their compatibility baseline; each RPM must pass installation, PDF
|
|
rendering, X11 and Wayland startup, and removal checks in clean containers for
|
|
both versions before publication. Other RPM-based distributions are not yet
|
|
tested. If Discover reports a generic conflict, run the `dnf install` command
|
|
above and include its dependency error in your bug report.
|
|
|
|
The older `0.1.0-alpha.7` RPM was built on Fedora 44 and cannot install on
|
|
Fedora 43 because it requires glibc 2.43. Its Flatpak bundle is an alternative
|
|
while waiting for an RPM release built with the compatibility checks above.
|
|
|
|
### Flatpak preview
|
|
|
|
The Flatpak preview is provided as a standalone test bundle. It is not yet a
|
|
Flathub package and therefore does not receive automatic Flathub updates. It has
|
|
no tray icon, because the tray backend can't use a sandbox-safe D-Bus name yet.
|
|
Instead, **Keep running in the background** in Settings → General keeps it
|
|
checking for new mail after you close the window, once the desktop's Background
|
|
portal allows it. Open Flectar Mail again to bring the window back, and press
|
|
Ctrl+Q in it to quit. GNOME also lists it under Background Apps in the system
|
|
menu, where you can quit it too.
|
|
Starting automatically at sign-in goes through the same portal, and starts
|
|
without a window while background mode is on. The app icon stays orange there,
|
|
because the sandbox cannot change the launcher icon on the host.
|
|
|
|
### Keyring
|
|
|
|
On Linux, passwords, OAuth tokens, and API keys are kept in the system keyring
|
|
through the freedesktop Secret Service, never in Flectar Mail's database. Any
|
|
Secret Service provider works, on any desktop or window manager, sway included:
|
|
GNOME Keyring, KWallet, or KeePassXC with its Secret Service integration turned
|
|
on. The Flatpak uses the same keyring as the rest of your session. If the
|
|
session has no default keyring yet, adding the first account asks the provider
|
|
to create one, and the provider asks you to choose its password. Without a
|
|
provider, adding an account stops with an error that says what is missing,
|
|
because Flectar Mail never stores secrets anywhere less safe.
|
|
|
|
### Desktop portal
|
|
|
|
Linux desktop OAuth also opens the system browser through the desktop portal,
|
|
so the session needs an `xdg-desktop-portal` backend as well as the keyring
|
|
described above. Release builds stop before opening the OAuth page when secure
|
|
credential storage is unavailable, so an authorization grant can never be
|
|
completed without a safe place to persist it.
|
|
|
|
## Verifying a download
|
|
|
|
Each GitHub release includes `SHA256SUMS` and signed build-provenance
|
|
attestations. With GitHub CLI installed, verify a download with
|
|
`gh attestation verify <download> --repo flectar/mail`.
|
|
|
|
## Android
|
|
|
|
Starting with alpha 8, Android alpha, beta, release-candidate, and stable builds
|
|
use one package (`com.flectar.mail`) and one persistent signing identity. Later
|
|
versions can update the app in place and retain local data. Alpha 6 and alpha 7
|
|
used different keys and cannot update to this signing identity.
|
|
|
|
Both Android release workflows use the `android-release` GitHub environment.
|
|
They require the same keystore and password secrets, verify the public
|
|
certificate against `platform/android/app-signing-certificate.sha256`, and
|
|
derive Android version codes from the release version. A missing or different
|
|
key blocks publication. **Do not generate a replacement key or change the
|
|
pinned fingerprint for a routine release.** Password changes preserve the
|
|
identity when the original private key and certificate are retained.
|
|
|
|
See [Android signing setup and recovery](android-signing.md) for the one-time
|
|
migration command, required secrets, backups, and Play App Signing.
|
|
|
|
Local developer builds can still generate a local test key. They only update
|
|
installations signed with that same local key.
|
|
|
|
## iOS
|
|
|
|
The iOS app runs on iPhone and iPad with iOS 17 or later. Apple only installs
|
|
signed apps and Flectar Mail isn't on the App Store yet, so each release
|
|
includes an unsigned `.ipa` that a sideloading tool signs with your own Apple
|
|
ID:
|
|
|
|
- [AltStore](https://altstore.io) or [SideStore](https://sidestore.io): add
|
|
the source
|
|
`https://github.com/flectar/mail/releases/latest/download/flectar-mail-altstore-source.json`
|
|
in the app's **Sources** and install Flectar Mail from it. Both offer each
|
|
new release as an update and check the download's SHA-256 before installing
|
|
it.
|
|
- [Sideloadly](https://sideloadly.io) on Windows or macOS: install
|
|
`flectar-mail-<version>-ios-arm64.ipa` from the
|
|
[release](https://github.com/flectar/mail/releases) with your Apple ID.
|
|
|
|
After the first install, turn on **Settings > Privacy & Security > Developer
|
|
Mode**. With a free Apple ID, sideloaded apps stop opening after 7 days unless
|
|
AltStore or SideStore refreshes them or you install them again, and only three
|
|
can be installed at once, counting AltStore or SideStore. A paid Apple
|
|
Developer Program membership extends this to a year.
|
|
|
|
Flectar Mail checks for new mail in the background when iOS lets it, and shows
|
|
notifications for it, as
|
|
[New-mail notifications](features.md#new-mail-notifications) describes.
|
|
|
|
Releases built with Flectar's iOS registrations sign in to Gmail and Outlook
|
|
directly. Your own keys in **Sign-in settings** must be iOS registrations: a
|
|
Google OAuth client of type iOS, or a Microsoft app registration with the
|
|
iOS / macOS platform and the redirect `msauth.com.flectar.mail://auth`.
|
|
|
|
## HarmonyOS and OpenHarmony
|
|
|
|
HarmonyOS and OpenHarmony have a community port maintained by
|
|
[springmin](https://github.com/springmin). It isn't part of GitHub releases;
|
|
see [platform/ohos](../platform/ohos/README.md) to build it.
|
|
|
|
## Building from source
|
|
|
|
Install the [Rust toolchain](https://rustup.rs/), then run:
|
|
|
|
```bash
|
|
cargo run --bin flectar-mail
|
|
```
|
|
|
|
On Linux, the app needs the keyring and desktop portal described above. The
|
|
iOS app builds with Xcode, as [platform/ios](../platform/ios/README.md)
|
|
describes.
|
|
|
|
Podman and Docker development shells commonly have neither the host session
|
|
D-Bus nor the host browser's loopback network. Debug builds support that setup
|
|
with a clearly marked, owner-only development credential file and an accordion
|
|
for pasting the final loopback callback URL. The file backend is excluded from
|
|
release builds.
|