#mail-server #domain #user #alias #setup #command #command-line

app vmail-rs

用于vmail的命令行客户端(基于Dovecot、Postfix、MySQL、Rspamd的邮件服务器设置)

1个不稳定版本

0.4.0 2021年1月13日

#1201数据库接口

BSD-3-Clause

76KB
2K SLoC

Rust 1K SLoC // 0.0% comments BASH 652 SLoC SQL 45 SLoC // 0.0% comments Shell 10 SLoC

vmail-rs

Build status License Crates.io

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