跳转至内容

Postorius

来自 ArchWiki

Postorius 是一个基于 Django 的 Mailman 管理界面。

安装

要使用 Postorius,需要配置好一个工作的 Web 服务器(例如,使用 Apache HTTP Server 直接转发到 WSGI,或者使用 Nginx 将请求转发给 UWSGI 等应用程序服务器)。

安装 postorius 包。

警告 Postorius 应仅通过 TLS 访问(除非仅为测试目的直接从运行它的机器访问),否则会将密码和用户数据暴露给网络。

配置

该 Web 应用程序托管在 Django 上,并且几乎完全通过 Django 进行配置:Web 应用程序在 /etc/webapps/postorius/settings_local.py 中配置,该文件被 /usr/share/webapps/postorius/settings.py 中的默认配置所包含。

注意 Postorius 应将用户敏感数据(例如 sqlite 数据库)存储在 /var/lib/postorius/data/ 中,因为该目录仅对 root 用户和应用程序本身可访问。

更改应用程序的默认密钥

/etc/webapps/postorius/settings_local.py
SECRET_KEY = 'something-very-secret'

确保在生产环境中运行时禁用调试

/etc/webapps/postorius/settings_local.py
DEBUG = False

为了能够配置正在运行的 mailman 实例,必须将其 REST API 的配置选项添加到 postorius 的配置中。

/etc/webapps/postorius/settings_local.py
MAILMAN_REST_API_URL = 'https://:8001'
MAILMAN_REST_API_USER = 'rest_admin'
MAILMAN_REST_API_PASS = 'rest_admin_password'

添加有效的电子邮件配置(以便 Django 应用程序可以验证订阅者)

/etc/webapps/postorius/settings_local.py
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 25
EMAIL_HOST_USER = username
EMAIL_HOST_PASSWORD = password
注意 DEFAULT_FROM_EMAILSERVER_EMAIL 配置选项可用于分别定义发送的用于内部身份验证和错误报告邮件的 From: 头部。

需要定义应用程序的有效主机或域名

/etc/webapps/postorius/settings_local.py
ALLOWED_HOSTS = [
    'localhost',
    'lists.example.com'
]

托管

本文章或章节需要扩充。

原因: 使用 Apache HTTP Server 进行设置的示例。(在 Talk:Postorius 讨论)
注意 Postorius 需要以其自己的用户和组(即 postorius)运行。它分别使用 /etc/webapps/postorius//var/lib/postorius//run/postorius/ 来进行配置、静态缓存和(潜在的)套接字。
注意 由于默认情况下静态文件是从顶级 static/ 目录提供的,这会与同一(子)域上的 hyperkitty 冲突,因此建议将 /etc/webapps/postorius/settings_local.py 中的 STATIC_URL 变量设置为唯一值(例如 '/postorius_static/')。

Nginx 和 uWSGI

Postorius 在 /etc/uwsgi/postorius.ini 中提供了一个可用的 uWSGI 配置文件。

安装 nginx 和 uwsgi-plugin-python,为 uWSGI 创建一个应用程序专用的套接字(参考 UWSGI#Accessibility of uWSGI socket),并启用 uwsgi-secure@postorius.socket

对于本地测试设置,在 http://127.0.0.1:80/postorius 提供 Postorius,请将以下 Nginx 配置添加到您的设置中

/etc/nginx/postorius.conf
server {
  listen 80;
  server_name localhost;
  charset utf-8;
  client_max_body_size 75M;
  root /usr/share/webapps/postorius;
  access_log /var/log/nginx/access.postorius.log;
  error_log /var/log/nginx/error.postorius.log;

  location /postorius_static {
    alias /var/lib/postorius/static;
  }

  location ~^/(accounts|admin|postorius)/(.*)$ {
    include /etc/nginx/uwsgi_params;
    uwsgi_pass unix:/run/postorius/postorius.sock;
  }
}

设置

注意postorius 用户身份运行以下命令(例如使用 sudo 或 su)。

首次安装后,请务必生成数据库

[postorius]$ django-admin migrate --pythonpath /usr/share/webapps/postorius/ --settings settings

之后,需要收集应用程序的静态数据

[postorius]$ django-admin collectstatic --pythonpath /usr/share/webapps/postorius/ --settings settings

为 Django 应用程序创建超级用户帐户

[postorius]$ django-admin createsuperuser --pythonpath /usr/share/webapps/postorius/ --settings settings

技巧与提示

设置别名域

要与 postfix 一起在虚拟别名域设置中使用域名,必须设置该域的 Alias Domain。域名不必存在。

要设置 Alias Domain,请使用管理员用户(默认为 postorius)登录,并在 Domains 菜单中修改该域的设置。

参见

  • Postorius 文档 - 上游文档
  • Mailman Suite 文档 - 整个 Mailman Suite(Mailman、Hyperkitty 和 Postorius)的(高级)上游文档

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.