There are various email synchronization programs like offlineimap or mbsync, which have some inherent limitations:
- mbsync does not support IMAP IDLE
- offlineimap does not yet support Python 3, proper IDLE and threading support would need a complete rewrite
Features
- support only IMAP, no POP3
- IMAP IDLE support is a must, especially:
- reconnection of dropped IDLE connections
- support IDLE for all IMAP folders
- be able to synchronize IMAP <-> Maildir at first, IMAP <-> IMAP would be nice to have
- bullet-proof cryptography, especially with respect to certificate validation and resistance to downgrade attacks (preferably make the TLS version configurable)
- use inotify API to support immediate synchronization back to the server if a message changes locally
- as simple configuration as possible with good defaults
nice to have:
- incorporate an API for external tagging tools like notmuch to synchronize tags if the remote supports it
- GMail support
Implementation
Preferably in Rust, using the imap crate as the core.
Scope
Try to create a MVP, especially flesh out proper testing and learn enough about the problem.
This project is part of:
Hack Week 18
Activity
Comments
Similar Projects
Implement a CLI tool for Trento - trentoctl by nkopliku
Description
Implement a trentoctl
CLI for interacting with a trento installation
Goals
- learn rust
- implement an initial
trentoctl
tool to enhance trento automation - have fun
Resources
trento rust. TUIs listed on this other hackweek project Hack on rich terminal user interfaces
Better diff'ing experience by MSirringhaus
Description
For diff-ing directories, I usually like to use meld, but it struggles a lot with large trees. Experiment with writing a TUI meld-clone for diffing directories and files
Goals
Get first prototype going of a TUI that can show
- diffs of text-files
- diffs of directories.
Stretch goals
- Themes
- Filters (no whitespace, etc.)
- Live config changes (Show/hide line numbers, etc.)
Hacking on sched_ext by flonnegren
Description
Sched_ext upstream has some interesting issues open for grabs:
Goals
Send patches to sched_ext upstream
Also set up perfetto to trace some of the example schedulers.
Resources
https://github.com/sched-ext/scx
Kanidm: A safe and modern IDM system by firstyear
Kanidm is an IDM system written in Rust for modern systems authentication. The github repo has a detailed "getting started" on the readme.
In addition Kanidm has spawn a number of adjacent projects in the Rust ecosystem such as LDAP, Kerberos, Webauthn, and cryptography libraries.
In this hack week, we'll be working on Quokca, a certificate authority that supports PKCS11/TPM storage of keys, issuance of PIV certificates, and ACME without the feature gatekeeping implemented by other CA's like smallstep.
For anyone who wants to participate in Kanidm, we have documentation and developer guides which can help.
I'm happy to help and share more, so please get in touch!
Grapesss: a physical Shamir's Secret Sharing application [ESP32-C3 + Mobile] by ecandino
Description
A couple of years ago I created StegoSecretS, a small cli used to encrypt and split a secret into multiple keys, using the Shamir's Secret Sharing algorithm.
The idea is to re-implement the project using physical devices. One device alone will be useless, but when close together they can be used to decrypt the secret.
On a practical side the user encrypts the secret with a mobile application. The same application is used to split the secret, and load the partial keys into different micro-controllers. Another user will be able to decrypt the secret only having at least N devices close together (using the application).
I'm planning to use a couple of ESP32-C3 I bought, and build a very simple Android mobile application.
Goals
- Learn about Rust and micro-controllers (ESP32-C3)
- Learn about mobile applications (Android and Kotlin)
Resources