Modoboa
Modoboa 是一个邮件托管和管理平台,包含一个现代且简化的 Web 用户界面,旨在与 Postfix 和 Dovecot 一起使用。
有关背景信息,请参阅 List of applications/Internet#Mail servers
在设置此程序时,AUR 仓库似乎是安装依赖项的一种基本方式,但缺少您目前需要手动完成的许多系统设置。以下是有关如何将 modoboa 设置为系统服务的详细信息。
安装
/usr/lib/python3.12/site-packages/modoboa 或您当前运行的任何 Python 版本中。但它缺少一些软件包,包括 python-django-rqAUR python-magic python-tldextract python-reportlab python-aiosmtplibAUR,并且与 python-lxml 存在版本冲突。在这些问题解决之前,请使用 pip 进行 Python 安装。要通过 pip 安装 modoboa,请创建一个 python-virtualenv。如果您想封装该程序,也可以创建一个 modoboa 用户。
找到一个放置 modoboa 的地方,然后运行
mkdir modoboa cd /modoboa virtualenv env . env/bin/activate.fish
然后,一旦您进入虚拟环境,即可安装 modoboa
pip install modoboa
如果您愿意,可以 阅读文档。此外,这里是 GitHub 的链接供参考:Modoboa-Github。
安装 modoboaAUR 后,您将可以使用两个命令行实用程序
modoboa-climodoboa-admin.py
数据库
Modoboa 需要以下数据库之一
请按照您想使用的任何数据库的安装流程进行操作,并在继续之前进行设置。
使用 PostgreSQL
如果您使用 PostgreSQL,则必须安装 Python 依赖项 [1]
pip install psycopg[binary]>=3.1
然后为 modoboa 创建一个用户和数据库以供使用
sudo -l -u postgres createuser --no-createdb modoboa sudo -l -u postgres createdb --owner=modoboa modoboa
使用 MySQL 或 MariaDB
对于 MySQL 或 MariaDB,您必须安装 Python 依赖项 [2]
pip install mysqlclient
安装后创建一个关联用户
CREATE DATABASE modoboa; CREATE USER 'modoboa'@'localhost' IDENTIFIED BY 'my-strong-password-here'; GRANT ALL PRIVILEGES ON modoboa.* TO 'modoboa'@'localhost';
使用 SQLite
除了安装 SQLite 外,没有其他必需的依赖项。
创建 Modoboa 实例
要开始使用 Modoboa,在 AUR 仓库修复之前,请按照上述说明安装虚拟环境并通过 pip 安装 modoboa。然后您可以继续创建 Django 项目。
构建您的实例
现在部署您的 modoboa。在安装完所有内容后,您可以使用命令 modoboa-admin.py deploy instance ... 创建一个 Django Web 服务器实例。这将在您的工作目录中的 ./instance 目录中创建一个 Django 项目。
默认情况下,如果不引入任何数据库参数,Modoboa 将通过交互式控制台提示您选择要使用的数据库。如果您使用 SQLite 方法,它将在您的工作目录下创建一个名为 ./instance 的数据库。
modoboa-admin.py deploy instance --collectstatic --domain <hostname of your server>
交互式提示将询问您想要哪个数据库,刚开始时,您可以在设置系统时只使用 sqlite3
Configuring database connection: default Database type (mysql, postgres or sqlite3): sqlite3
指定 Sqlite 位置
或者,您可以指定 SQLite 数据库的位置。
modoboa-admin.py deploy instance --collectstatic --domain <hostname of your server> --dburl default:sqlite:////full/path/to/your/database/file.sqlite
其他数据库
如果您要使用其他数据库,请使用此语法 <mysql|postgres>://[user:pass@][host:port]/dbname 作为连接字符串。这是一个填写完整的示例,
modoboa-admin.py deploy instance_name --collectstatic --domain example.com --dburl default:postgres://user:pass@[localhost]/modoboa
有关运行不同数据库的更多信息,请参阅
modoboa-admin.py help deploy
运行 Django 实例
在运行 modoboa 之前,您需要设置您的 Web 服务器,因为它依赖于您的域。
使用 modoboa-admin.py 创建 instance 目录后,您可以 cd 进入该目录,其中会有一个 manage.py 文件,对于任何使用 Django 的人来说,这应该很熟悉。
要查看 Django 项目中的各种服务,您可以在 instance 目录中运行
python manage.py
设置 Nginx
在此示例中,我们将使用 Gunicorn 为 modoboa Web 服务器运行一个 Unix 套接字。在 modoboa 的虚拟环境中,请安装 gunicorn 来托管 Web 服务器。您也可以使用 uwsgi。
pip install gunicorn
然后,我们可以相应地设置一个 Nginx 配置。无论您如何配置,请创建您的配置文件。我有一个 /etc/nginx/available 目录,我将配置文件放在里面,然后将它们符号链接到 /etc/nginx/enables,后者包含在 /etc/nginx/nginx.conf 中。
我将以下内容放在 /etc/nginx/available/modoboa.conf 中
upstream modoboa {
server unix:/var/run/gunicorn/modoboa.sock fail_timeout=0;
}
server {
server_name domain.com;
root <modoboa_instance_path>;
access_log /var/log/nginx/modoboa.access.log;
error_log /var/log/nginx/modoboa.error.log;
location /sitestatic/ {
autoindex on;
}
location /media/ {
autoindex on;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-Protocol ssl;
proxy_pass http://modoboa;
}
}
现在对于 SSL,您需要安装 certbot 和 nginx 插件 certbot-nginx。然后运行
sudo certbot --nginx run
以启用 TLS。