🦀Crabmail🦀 =========== Installation and usage ---------------------- Clone the project: ```bash git clone https://git.42d.io/reda/crabmail ``` Install dependencies: ```bash cd crabmail && cargo install --path . ``` Add WASM target for cargo toolchain: ```bash rustup target add wasm32-wasi ``` For Linux environment build and run: ```bash cargo run --release ``` For WASI environment build: ```bash cargo build --target wasm32-wasi --release ``` For WASI environment run: 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. ```bash 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} ``` 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.