🦀Crabmail🦀 =========== Installation and usage ---------------------- Clone the project: ```shell git clone https://git.42d.io/reda/crabmail ``` Install dependencies: ```shell cd crabmail && cargo install --path . ``` For Linux environment build and run: ```shell cargo run --release ``` For WASI environment install Wasmedge ```shell curl -sSf https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | bash ``` Add WASM target for cargo toolchain: ```shell rustup target add wasm32-wasi ``` For WASI environment build: ```shell cargo build --target wasm32-wasi --release ``` For WASI environment run: ```shell wasmedge --dir {path with config} --dir {path to store results} --dir {path with maildir} {path to .wasm file} -h -c {path to the config file} -d {path to the result dir} -m {path to maildir} ``` Note: To give WASI access to a directory, you need to use the --dir flag and specify the path in the {actual_path}:{virtual_path} format, where {actual_path} should be replaced with the actual path in the local file system, and {virtual_path} should represent the virtual path that WASI will use in the code.

For WASI environment run example: ``` wasmedge --dir /home/yura/crabmailConfig/:/home/yura/crabmailConfig/ --dir /home/yura/crabmailResult/:/home/yura/crabmailResult/ --dir /home/yura/lists/:/home/yura/lists/ ./target/wasm32-wasi/release/crabmail.wasm -h -c /home/yura/crabmailConfig/crabmail.conf -d /home/yura/crabmailResult -m /home/yura/lists/ ``` Copy `crabmail.conf` and set the variables as needed. Sonic search ----- For Sonic Search to work, a Sonic [server](https://github.com/valeriansaliou/sonic) must be running in the background. Additionally, ensure that IPv6 is not used with WASI, as it is not yet supported. Iroh sync ----- This is a separate [module](https://git.42d.io/yurii/Iroh_sync) NOTES ----- The program works on Linux and WASI. You need to use Wasmedge to run WASM code because the project uses libraries from Wasmedge for networking and asynchronous tasks Etc --- Crabmail is AGPLv3 licenses, but some files are licensed under 0BSD or other more permissive licenses. I call this out when I can.