Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/awidegreen/vmail-rs
Command line mailbox account management tool for vmail (MySQL)
https://github.com/awidegreen/vmail-rs
Last synced: 17 days ago
JSON representation
Command line mailbox account management tool for vmail (MySQL)
- Host: GitHub
- URL: https://github.com/awidegreen/vmail-rs
- Owner: awidegreen
- License: bsd-3-clause
- Created: 2018-05-24T14:59:49.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-04-23T06:13:06.000Z (over 3 years ago)
- Last Synced: 2024-12-01T17:33:34.495Z (about 1 month ago)
- Language: Rust
- Homepage:
- Size: 127 KB
- Stars: 18
- Watchers: 5
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# vmail-rs
[![Build status](https://github.com/awidegreen/vmail-rs/workflows/ci/badge.svg)](https://github.com/awidegreen/vmail-rs/actions)
[![License](https://img.shields.io/badge/license-BSD--3--Clause-blue)](LICENSE)
[![Crates.io](https://img.shields.io/crates/v/vmail-rs.svg)](https://crates.io/crates/vmail-rs)`vmail-rs` is a command line tool for managing a mail-server database
based on the great [HowTo](https://thomas-leister.de/en/mailserver-debian-stretch) ([german version](https://thomas-leister.de/mailserver-debian-stretch/))
from [Thomas Leister](https://thomas-leister.de) written in Rust.
Although the tutorial is using a MySQL/MariaDB database, this command line tool
also supports postgres.## Prerequisites
Make sure you have a working mail setup as described in the tutorial.
You also need C libraries for your database client. For ubuntu, this is
the `libmysqlclient-dev` package (or `libpq-dev`, if you are using postgres).Further, as `vmail-rs` is written in Rust, you should have a working
[rustup/cargo setup](https://rustup.rs/).# Installation
vmail-rs contains the cli tool `vmail-cli`. By default, MySQL/MariaDB is used.
To enable postgres support, add `--features postgres` to the
following `cargo` commands.## From crates.io
Install `vmail-rs` via `cargo`.
```sh
> cargo install vmail-rs
```## From github
```sh
# default mysql [default]
> cargo install --git https://github.com/awidegreen/vmail-rs# use postgres
> cargo install --features postgres --git https://github.com/awidegreen/vmail-rs
```## Build from sources
Clone the repo and run
```sh
> cargo install
```or the release version
```sh
> cargo install --release
```# Usage
vmail-rs uses Rust's [dotenv](https://docs.rs/crate/dotenv/) crate to create
environment configuration from a `.env` file.Create a `.env` in the current directory containing the `DATABASE_URL`
configuration parameter (be aware of the URI character encoding for the
password).```
DATABASE_URL=mysql://vmail:vmailpassword@localhost/database_name
```If you are using postgres, a [key-value format](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING)
may be used instead of an URL.Use the command help to get started.
```shell
vmail-cli --help
```NOTE: all subcommands can also be shortcut'd. vmail-cli will automatically defer
the correct command: `vmail-cli u s` equals `vmail-cli user show`The `user` subcommands can work on default domain. Therefore set
`DEFAULT_DOMAIN=mydomain.org` in the `.env` file. More information below.## Subcommand `domain`
Available subcommands are:
* add
* help
* remove
* showUse help for more information.
```
# Create domain
vmail-cli domain add mydomain.org# Show domains
vmail-cli domain show# Delete domain
vmail-cli domain remove mydomain.org
```## Subcommand `user`
As the name suggests, this subcommand is used to mange the users/accounts within
the database. In order to add a new user, the associated domain need to exist.Available subcommands are:
* add
* edit
* help
* password
* remove
* showUse help for more information.
The `user` commands will assume a default domain, which can be set in `.env`:
`DEFAULT_DOMAIN=mydomain.org`. If you want to use different domain, the
parameter `--domain|-d` for the `user` subcommand should be used. Further, if no
default domain has been set, the domain parameter needs to be provided.
```
# Create user for default domain
vmail-cli user add foo# Create user for other domain
vmail-cli user -d otherdomain.org add foo# Show users for default domain
vmail-cli user show# Delete user for default domain
vmail-cli user remove foo# Delete user other domain
vmail-cli user -d otherdomain.org remove foo
```## Subcommand `alias`
In order to add a new alias, the associated user and domain need to exist.
Available subcommands are:
* add
* help
* remove
* showUse help for more information.
```
# Create alias '[email protected]' for existing user-account '[email protected]'
vmail-cli alias add bar mydomain.org foo# Create alias '[email protected]' for existing user-account '[email protected]'
vmail-cli alias add hello mydomain.org foo otherdomain.org# Show aliases for all user accounts
vmail-cli alias show# Show aliases for single user account
vmail-cli alias show foo mydomain.org# Delete alias '[email protected]'
vmail-cli alias remove bar mydomain.org
```
In order to add/remove a catch-all alias for a domain, the '%' (percentage)
should be used as a username for the alias. Make sure that your database
supports [such feature](https://thomas-leister.de/mailserver-debian-stretch/#wie-kann-ich-mit-diesem-setup-catch-all-adressen-realisieren).```
# Add catch-all alias for 'mydomain.org' domain (alias for user 'foo')
vmail-cli alias add % mydomain.org foo# Remove catch-all alias for 'mydomain.org' domain
vmail-cli alias remove % mydomain.org
```# Misc
## Shell completions
For bash, move `shell/vmail-cli.bash` to `$XDG_CONFIG_HOME/bash_completion/` or `/etc/bash_completion.d/`.
For fish, move `shell/vmail-cli.fish` to `$HOME/.config/fish/completions/`.
For zsh, move `shell/_vmail-cli` to one of your `$fpath` directories.
For regenerating the shell completions, run `shell/gen_comp.sh` from the root of
the repository. The files in `shell/` will be updated accordingly. This will use
vmail-cli hidden `completions` subcommand.# How to contribute
Create new issues if you find bugs or want to a new features. Pull requests are
very welcomed.# License
Copyright (C) 2021 by Armin Widegreen
This is free software, licensed under The [BSD-3-Clause](LICENSE).