• Stars
    star
    115
  • Rank 305,916 (Top 7 %)
  • Language
    Rust
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Tokio-based IMAP implementation

imap-proto and tokio-imap

Build status Join the chat at https://gitter.im/djc/tokio-imap MIT license Apache License 2.0

All feedback welcome. Feel free to file bugs, requests for documentation and any other feedback to the issue tracker or tweet me.

tokio-imap and imap-proto were created by and are maintained by Dirkjan Ochtman. If you are in a position to support ongoing maintenance and further development or use it in a for-profit context, please consider supporting my open source work on Patreon.

tokio-imap: futures-based IMAP client

crates.io, downloads crates.io, latest release API docs, latest release

A Tokio stack-based, fully asynchronous IMAP library, with strong focus on following the relevant specs, mainly IMAP4rev1, but with limited support for the Conditional STORE extension. The type system is used to help enforce correctness where possible. So far, there is only client code and lots of infrastructure that supposedly could be shared -- no server yet. (If you want a tokio-based server, look at IMAPServer.)

Feature highlights

  • Fully asynchronous by using tokio-core and tokio-io
  • Uses the type system to help enforce correct operation according to spec
  • nom-based parser (in imap-proto), so far only used for server response messages

Limitations

  • Alpha-level implementation -- no tests yet, limited protocol coverage
  • Server is totally unimplemented at this stage

How to get started

Have a look at the mailsync crate for example usage.

imap-proto: IMAP types and protocol parser

crates.io, downloads crates.io, latest release API docs, latest release

imap-proto is a low-level IMAP protocol support crate, using the type system to provide a safe API. It was extracted from tokio-imap into a separate crate so that different protocol implementations can share it as common infrastructure (as proposed by rust-imap contributors). The code tries to closely follow the IMAP4rev1 RFC, plus extensions.

Protocol support is implemented in three parts:

  • Types that attempt to closely reflect specification requirements
  • A parser implementation to help consume protocol messages
  • Builder types to help produce protocol messages

Progress

  • Client
    • Parser: many common server responses implemented
    • Types: most common types implemented
    • Message builder: most common commands implemented
  • Server
    • Parser: not started
    • Types: not started
    • Message builder: not started

More Repositories

1

askama

Type-safe, compiled Jinja-like templates for Rust
Rust
3,302
star
2

bb8

Full-featured async (tokio-based) postgres connection pool (like r2d2)
Rust
647
star
3

instant-distance

Fast approximate nearest neighbor searching in Rust, based on HNSW index
Rust
308
star
4

couchdb-python

Python library for working with CouchDB
Python
202
star
5

instant-segment

Fast English word segmentation in Rust
Rust
89
star
6

instant-acme

Simple ACME client
Rust
85
star
7

runa

A Python-like systems programming language
Python
84
star
8

pyrtls

rustls-based modern TLS for Python
Rust
75
star
9

gcp_auth

Minimal authentication library for Google Cloud Platform (GCP)
Rust
63
star
10

rustc-version-rs

Rust
58
star
11

mendes

Rust web toolkit for impatient perfectionists
Rust
40
star
12

topfew-rs

Rust implementation of Tim Bray's topfew tool
Rust
40
star
13

awmy

arewemeetingyet.com: help communicate meeting times to timezone-challenged participants
Python
34
star
14

no-close-buttons

Firefox addon to remove close buttons from tabs
Makefile
18
star
15

instant-xml

Rust
18
star
16

rnc2rng

RELAX NG Compact to regular syntax conversion library
Python
16
star
17

persona-totp

A minimal Python implementation of a Persona IdP
Python
15
star
18

fixlib

Pythonic library for dealing with the FIX protocol
Python
14
star
19

mailsync

Rust
12
star
20

imap-proto

IMAP protocol parser and datastructures in Rust
12
star
21

abna

Python library to automatically retrieve mutations from ABN Amro
Python
10
star
22

instant-akismet

Akismet spam detection client written in Rust
Rust
9
star
23

galatna

Create SVG-based maps from Google Latitude location history
Python
9
star
24

appdirs-rs

Rust crate for determining platform-specific application directories
Rust
9
star
25

talks

Materials for presentations I've given
HTML
8
star
26

instant-epp

Rust
7
star
27

s3-fifo

Rust
6
star
28

corda-rpc

Rust libraries for doing Corda RPC
Rust
6
star
29

sign-cert-remote

Rust
5
star
30

pmf

Script to submit RSS/Atom feed content to Reddit
Python
4
star
31

mbox-reader

Minimal mmap-backed mbox format reader in Rust
Rust
4
star
32

jasinja

Jasinja is a compiler for Jinja templates targeting Javascript
Python
4
star
33

candotti

Oxidizing Thread & Matter
Rust
3
star
34

rst-parser

reStructuredText parser and writers in Rust
Rust
3
star
35

awijan

Tool to help create release notes
Rust
3
star
36

lecertman

Let's Encrypt certificate manager -- manage a group of certificates, ensure they are renewed on time
Python
3
star
37

cs143-python

Python parser for CS143 AST serialization
Python
2
star
38

cryptopals

Rust
2
star
39

edit-chunks

Split out chunks of a large file for editing, then put them back together again
Rust
2
star
40

email-parser

Lazy liberal email (RFC 5322) parser in Rust
Rust
1
star
41

nested-input

Rust
1
star
42

djc-overlay

My experimental Gentoo overlay
1
star
43

kv

Rust
1
star
44

lang-repo-analysis

Code for https://dirkjan.ochtman.nl/writing/2017/05/19/rust-is-a-big-tent.html
Python
1
star
45

mime-types

Rust
1
star
46

clang-format-find

Find the clang-format configuration that best fits your codebase
Python
1
star
47

wsgrep

Proof of concept grep (Rust Utrecht workshop 2018-05-03)
Rust
1
star
48

tz-tmp

Rust
1
star
49

modern-lang-analysis

Code and data for my blog post "Rust is a big tent"
Python
1
star