[package] name = "crymap" version = "2.0.0" authors = ["Jason Lingle "] 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 = []