GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com โ€” GitHub - chatmail/core: Chatmail Rust Core library, used by Android/iOS/desktop chatmail apps, bindings and bots ๐Ÿ“ง

BranchesTags
Open more actions menu

Latest commit

 

History

10,830 Commits
10,830 Commits

Folders and files

NameName
Last commit message
Last commit date
.cargo
.cargo
 
 
.github
.github
 
 
assets
assets
 
 
benches
benches
 
 
deltachat-contact-tools
deltachat-contact-tools
 
 
deltachat-ffi
deltachat-ffi
 
 
deltachat-jsonrpc-bindings
deltachat-jsonrpc-bindings
 
 
deltachat-jsonrpc
deltachat-jsonrpc
 
 
deltachat-ratelimit
deltachat-ratelimit
 
 
deltachat-repl
deltachat-repl
 
 
deltachat-rpc-client
deltachat-rpc-client
 
 
deltachat-rpc-server
deltachat-rpc-server
 
 
deltachat-time
deltachat-time
 
 
deltachat_derive
deltachat_derive
 
 
docs
docs
 
 
draft
draft
 
 
format-flowed
format-flowed
 
 
fuzz
fuzz
 
 
nix
nix
 
 
proptest-regressions
proptest-regressions
 
 
python
python
 
 
scripts
scripts
 
 
src
src
 
 
test-data
test-data
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
.npmignore
.npmignore
 
 
.npmrc
.npmrc
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CMakeLists.txt
CMakeLists.txt
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
Cargo.lock
Cargo.lock
 
 
Cargo.toml
Cargo.toml
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
RELEASE.md
RELEASE.md
 
 
STYLE.md
STYLE.md
 
 
cliff.toml
cliff.toml
 
 
deny.toml
deny.toml
 
 
flake.lock
flake.lock
 
 
flake.nix
flake.nix
 
 
release-date.in
release-date.in
 
 
spec.md
spec.md
 
 
standards.md
standards.md
 
 
webxdc.md
webxdc.md
 
 

Repository files navigation

Chatmail logo

Rust CI dependency status

The chatmail core library implements low-level network and encryption protocols, integrated by many chat bots and higher level applications, allowing to securely participate in the globally scaled e-mail server network. We provide reproducibly-built deltachat-rpc-server static binaries that offer a stdio-based high-level JSON-RPC API for instant messaging purposes.

The following protocols are handled without requiring API users to know much about them:

  • secure TLS setup with DNS caching and shadowsocks/proxy support

  • robust SMTP and IMAP handling

  • safe and interoperable MIME parsing and MIME building.

  • security-audited end-to-end encryption with rPGP and Autocrypt and SecureJoin protocols

  • ephemeral Peer-to-Peer networking using Iroh for multi-device setup and webxdc realtime data.

  • a simulation- and real-world tested P2P group membership protocol without requiring server state.

Installing Rust and Cargo

To download and install the official compiler for the Rust programming language, and the Cargo package manager, run the command in your user environment:

$ curl https://sh.rustup.rs -sSf | sh

On Windows, you may need to also install Perl to be able to compile deltachat-core.

Using the CLI client

Compile and run the command line utility, using cargo:

$ cargo run --locked -p deltachat-repl -- ~/profile-db

where ~/profile-db is the database file. The utility will create it if it does not exist.

Optionally, install deltachat-repl binary with

$ cargo install --locked --path deltachat-repl/

and run as

$ deltachat-repl ~/profile-db

Set display name for the profile and add transports:

Chatmail is awaiting your commands.
> set displayname Alice
> init

Connect:

> connect

Export your public key to a vCard file:

> make-vcard my.vcard 1

Create contacts by address or vCard file:

> addcontact [email protected]
> import-vcard key-contact.vcard

List contacts:

> listcontacts
Contact#Contact#11: [email protected] <[email protected]>
Contact#Contact#Self: Me โˆš <[email protected]>
2 key contacts.
Contact#Contact#10: [email protected] <[email protected]>
1 address contacts.

Create a chat with your friend and send a message:

> createchat 10
Single#Chat#12 created successfully.
> chat 12
Selecting chat Chat#12
Single#Chat#12: [email protected] [[email protected]] Icon: profile-db-blobs/4138c52e5bc1c576cda7dd44d088c07.png
0 messages.
81.252ยตs to create this list, 123.625ยตs to mark all messages as noticed.
> send hi

List messages when inside a chat:

> chat

For more commands type:

> help

Installing libdeltachat system wide

$ git clone https://github.com/chatmail/core.git
$ cd deltachat-core-rust
$ cmake -B build . -DCMAKE_INSTALL_PREFIX=/usr
$ cmake --build build
$ sudo cmake --install build

Development

# run tests
$ cargo test --all
# build c-ffi
$ cargo build -p deltachat_ffi --release

Debugging environment variables

  • DCC_MIME_DEBUG: if set outgoing and incoming message will be printed

  • RUST_LOG=async_imap=trace,async_smtp=trace: enable IMAP and SMTP tracing in addition to info messages.

Expensive tests

Some tests are expensive and marked with #[ignore], to run these use the --ignored argument to the test binary (not to cargo itself):

$ cargo test -- --ignored

Fuzzing

Install cargo-bolero with

$ cargo install --locked cargo-bolero

Run fuzzing tests with

$ cd fuzz
$ cargo bolero test fuzz_mailparse -s NONE

Corpus is created at fuzz/fuzz_targets/corpus, you can add initial inputs there. For fuzz_mailparse target corpus can be populated with ../test-data/message/*.eml.

Features

  • vendored: When using Openssl for TLS, this bundles a vendored version.

Update Provider Data

To add the updates from the provider-db to the core, check line REV= inside ./scripts/update-provider-database.sh and then run the script.

Language bindings and frontend projects

Language bindings are available for:

  • C [๐Ÿ“‚ source | ๐Ÿ“š docs]
    • -> libdeltachat is going to be deprecated and only exists because Android, iOS and Ubuntu Touch are still using it. If you build a new project, then please use the jsonrpc api instead.
  • JS: [๐Ÿ“‚ source | ๐Ÿ“ฆ npm | ๐Ÿ“š docs]
  • Python [๐Ÿ“‚ source | ๐Ÿ“ฆ pypi | ๐Ÿ“š docs]
  • Go [๐Ÿ“‚ source]
  • Java and Swift (contained in the Android/iOS repos)

The following "frontend" projects make use of the Rust-library or its language bindings:

  • Android
  • iOS
  • Desktop
  • Pidgin
  • Telepathy
  • Ubuntu Touch
  • several Bots

About

Chatmail Rust Core library, used by Android/iOS/desktop chatmail apps, bindings and bots ๐Ÿ“ง

delta.chat/en/contribute

Topics

chatchatmaile-mailemailimapinstant-messagingmessagingmessengeropenpgppgprustsmtp

Resources

Readme
License

Contributing

Contributing
Activity
Custom properties

Stars

949 stars

Watchers

24 watching

Forks

151 forks
Report repository

Releases

Sponsor this project

Used by

Contributors

Languages

You are visitor 01402503 โ€” GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800ร—600. No cookies required.