1个不稳定版本
0.4.0 | 2021年1月13日 |
---|
#1201 在 数据库接口
76KB
2K SLoC
vmail-rs
vmail-rs
是一个基于Rust编写的命令行工具,用于管理基于 HowTo (德语版本) 的邮件服务器数据库管理工具,该工具由 Thomas Leister 编写。虽然教程中使用的是MySQL/MariaDB数据库,但此命令行工具也支持PostgreSQL。
先决条件
请确保您已按照教程中的描述设置了邮件服务。您还需要数据库客户端的C库。对于Ubuntu,这是 libmysqlclient-dev
包(如果您使用的是PostgreSQL,则为 libpq-dev
)。
另外,由于 vmail-rs
是用Rust编写的,您应该有一个正常工作的 rustup/cargo 设置。
安装
vmail-rs
包含命令行工具 vmail-cli
。默认情况下,使用MySQL/MariaDB。要启用PostgreSQL支持,请在以下 cargo
命令中添加 --features postgres
。
从crates.io安装
使用 cargo
安装 vmail-rs
。
> cargo install vmail-rs
从GitHub安装
# 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
从源码构建
克隆仓库并运行
> cargo install
或发布版本
> cargo install --release
用法
vmail-rs
使用Rust的 dotenv crate 从 ..env
文件创建环境配置。
在当前目录中创建一个包含 DATABASE_URL
配置参数的 ..env
文件(注意密码的URI字符编码)。
DATABASE_URL=mysql://vmail:vmailpassword@localhost/database_name
如果您使用的是PostgreSQL,可以使用 键值格式 代替URL。
使用命令帮助开始。
vmail-cli --help
注意:所有子命令也可以缩写。vmail-cli将自动转发正确的命令: vmail-cli u s
等于 vmail-cli user show
user
子命令可以用于默认域名。因此,在 ..env
文件中将 DEFAULT_DOMAIN=mydomain.org
设置为。更多信息见下文。
子命令 domain
可用子命令包括
- add
- help
- remove
- show
使用帮助获取更多信息。
# Create domain
vmail-cli domain add mydomain.org
# Show domains
vmail-cli domain show
# Delete domain
vmail-cli domain remove mydomain.org
子命令 user
正如其名所示,此子命令用于管理数据库中的用户/账户。为了添加新用户,关联的域必须存在。
可用子命令包括
- add
- 编辑
- help
- 密码
- remove
- show
使用帮助获取更多信息。
user
命令将假设一个默认域,该域可以在 .env
中设置:DEFAULT_DOMAIN=mydomain.org
。如果您想使用不同的域,请在 user
子命令中使用参数 --domain|-d
。此外,如果没有设置默认域,则必须提供域参数。
# 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
子命令 alias
为了添加新的别名,关联的用户和域必须存在。
可用子命令包括
- add
- help
- remove
- show
使用帮助获取更多信息。
# Create alias 'bar@mydomain.org' for existing user-account 'foo@mydomain.org'
vmail-cli alias add bar mydomain.org foo
# Create alias 'hello@mydomain.org' for existing user-account 'foo@otherdomain.org'
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 'bar@mydomain.org'
vmail-cli alias remove bar mydomain.org
为了添加/删除域的catch-all别名,请在别名中使用'%'(百分比)作为用户名。确保您的数据库支持此功能。
# 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
其他
Shell补全
对于bash,将 shell/vmail-cli.bash
移动到 $XDG_CONFIG_HOME/bash_completion/
或 /etc/bash_completion.d/
。
对于fish,将 shell/vmail-cli.fish
移动到 $HOME/.config/fish/completions/
。
对于zsh,将 shell/_vmail-cli
移动到您的 $fpath
目录之一。
要重新生成shell补全,从存储库的根目录运行 shell/gen_comp.sh
。将根据需要更新 shell/
目录中的文件。这将使用 vmail-cli 隐藏的 completions
子命令。
如何贡献
如果您发现错误或想要添加新功能,请创建新问题。Pull requests 非常受欢迎。
许可证
版权(C)2021 由 Armin Widegreen
这是免费软件,根据 BSD-3-Clause 许可。
依赖关系
~6MB
~119K SLoC