docs.rs failed to build ma-0.10.3
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Visit the last successful build:
ma-0.9.0
ma
Mail Archivist. Downloads all mail from multiple accounts into a SQLite database, for backup and analysis.
Usage
Environment
- install rust: https://www.rust-lang.org/tools/install
- ensure
$HOME/.cargo/bin
is in your$PATH
cargo install ma
Initial
cd $mail_archive_directory
(any directory in which you wantma
to maintain the mail archive)ma fetch
(will generate initial config file and then exit with a failure to connect)- Create an App Password with your provider, for example:
- Google/Gmail: https://myaccount.google.com/apppasswords
- Fastmail: https://app.fastmail.com/settings/security/integrations
- Runbox: https://runbox.com/mail/account_security
$EDITOR ma.toml
(fill in the correct values in the generated config file)ma fetch
(should now work)
Routine
Like with git
, you can either cd
into $mail_archive_directory
or provide
it to ma
as an argument, like so:
ma --dir $mail_archive_directory fetch
to updatesqlite3 $mail_archive_directory/ma.db
to enjoy exploring your mail archive with SQL!
TODO
- fetch all messages from all mailboxes from all accounts
- store raw messages in content-addressed file tree (
dump/[hash..2]/[hash].eml.gz
) - insert headers and text body into SQLite
- store state, the highest seen msg per account per mailbox, and avoid re-downloads
- fetch directly to database and rebrand file-tree storing as
export
- snapshot (log?) mailboxes and message locations
- poll/idle for new messages (maybe not necessary, since once can just periodically re-fetch)
- post-update hooks (Can be used for custom notifications, aggregate query reruns, etc.)
- timeouts
- parallelize fetch
- parallelize import/export
- example analytics
-
Received
based route trace graph -
From -> To
directed graph with edges weighted by- frequency
- msg size
-
- export into
InfluxDB
or something similar that Grafana can read from
Questions
Automatic Address Book
How to measure confidence in sender/receiver identity, given that:
- any name can have any address
- any address can have any name