跳转至内容

Modoboa

来自 ArchWiki

本文或本节需要在语言、wiki 语法或风格方面进行改进。请参阅 Help:Style 获取参考。

原因:需要进行的更改过多,无法一一列出。(请在 Talk:Modoboa 讨论)

Modoboa 是一个邮件托管和管理平台,包含一个现代且简化的 Web 用户界面,旨在与 PostfixDovecot 一起使用。

有关背景信息,请参阅 List of applications/Internet#Mail servers

在设置此程序时,AUR 仓库似乎是安装依赖项的一种基本方式,但缺少您目前需要手动完成的许多系统设置。以下是有关如何将 modoboa 设置为系统服务的详细信息。

注意 目前安装 Modoboa 有一些问题,因此此 Wiki 文章尚未完成,需要修订。

安装

提示 在撰写本文时,AUR 仓库已过时,不支持 python3.12。有一个用户维护的仓库可用于安装 modoboaAUR,该仓库会将 Python 模块安装到 /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

注意 在构建 modoboa 之前需要以下软件包:base-devel python libxml2 libxslt libjpeg-turbo rrdtool libffi openssl pkgconf cairo
pip install modoboa


如果您愿意,可以 阅读文档。此外,这里是 GitHub 的链接供参考:Modoboa-Github

安装 modoboaAUR 后,您将可以使用两个命令行实用程序

  • modoboa-cli
  • modoboa-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

对于 MySQLMariaDB,您必须安装 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。