crymap 2.0.1

A simple, secure IMAP server with encrypted data at rest
[package]
name = "crymap"
version = "2.0.1"
authors = ["Jason Lingle <jason@lin.gl>"]
license = "GPL-3.0"
edition = "2021"
readme = "README.md"
repository = "https://github.com/altsysrq/crymap"
homepage = "https://altsysrq.github.io/crymap/index.html"
keywords = ["imap", "lmtp"]
exclude = ["/gen-*.sh", "/readme-*.md", "book", "*.org"]
description = "A simple, secure IMAP server with encrypted data at rest"

[dependencies]
# Newer versions of base64 have a substantially inferior API in exchange for no
# improvements useful to crymap.
base64 = "0.12"
bitflags = "2.4.1"
byteorder = "1.5.0"
clap = { version = "2.33", default-features = false }
crossbeam = "0.7"
encoding_rs = "0.8.33"
# Using the zlib backend and not miniz_oxide is a hard requirement currently
# because with miniz_oxide, it sometimes blocks for more data when a full frame
# is available. This is reproduceable by connecting thunderbird and doing a
# bulk copy from another IMAP server.
# TODO Investigate more so we can file a bug report with whichever repo is
# causing the problem here.
flate2 = { version = "1.0", default-features = false, features = ["zlib"] }
futures = "0.3.29"
hickory-resolver = "0.24.0"
itertools = "0.12.0"
lazy_static = "1.4"
log = "0.4.8"
memchr = "2.6.4"
nom = { version = "7.1.3" }
num_cpus = "1.13"
openssl = "0.10.60"
rand = "0.8.5"
regex = "1.10.2"
rpassword = "7.3.1"
rust-argon2 = "0.8"
secstr = "0.5.1"
serde = { version = "<=1.0.171", features = ["derive"] }
serde_bytes = "0.11"
serde_cbor = "0.11"
serde_repr = "0.1"
structopt = { version = "0.3.15", default-features = false }
syslog = "5.0"
tempfile = "3.8.1"
thiserror = "1.0"
tiny-keccak = { version = "2.0", features = ["sha3", "kmac"] }
toml = "0.5"
walkdir = "2.4.0"
zstd = "0.13.0"

libsqlite3-sys = { version = "0.27.0", features = ["bundled"] }
rusqlite = { version = "0.30.0", features = ["bundled"] }

[dependencies.chrono]
version = "0.4.31"
default-features = false
features = [ "std", "clock", "serde" ]

[dependencies.log4rs]
version = "1.2.0"
default-features = false
features = [
  "console_appender",
  "file_appender",
  "rolling_file_appender",
  "compound_policy",
  "delete_roller",
  "fixed_window_roller",
  "size_trigger",
  "threshold_filter",
  "toml_format",
  "config_parsing",
]

[dependencies.nix]
version = "0.27.1"
features = [ "event", "fs", "hostname", "inotify", "net", "poll", "process", "user" ]

[dependencies.tokio]
version = "1.35.1"
default-features = false
# We deliberately exclude things like `fs` and `io-std` which cause tokio to
# spin up a thread pool. Filesystem operations are done synchronously, even
# within the async context. stdio operations used for networking are done by
# manually implementing the async interfaces by hand on the raw file
# descriptors.
features = [ "rt", "net", "time", "macros", "sync", "io-util" ]

[dev-dependencies]
proptest = "0.10"
rayon = "1.3"

# rust-argon2 and openssl can be quite slow without optimisations. We don't
# need to debug them, so optimise even in dev/test builds.
[profile.dev.package.rust-argon2]
opt-level = 3

[profile.dev.package.openssl]
opt-level = 3

[profile.dev.package.tiny-keccak]
opt-level = 3

[profile.release]
panic = "abort"

[features]
# Enable tooling which is mainly useful for the development of Crymap.
dev-tools = []
# Build and run tests that require a live network. This does not change the
# non-test build.
live-network-tests = []