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。