🦀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.