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-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
对于 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。