Postorius

出自 ArchWiki

Postorius 是一个基于 DjangoMailman 管理界面。

安装

要使用 Postorius,需要一个可用的 web 服务器 设置(例如,使用 Apache HTTP Server 转发到 WSGI,或使用 Nginx 将请求转发到诸如 UWSGI 的应用服务器)。

安装 postorius 软件包。

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

配置

Web 应用程序托管在 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://127.0.0.1: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 配置文件。

安装 nginxuwsgi-plugin-python,为 uWSGI 创建每个应用程序的套接字(有关参考,请参阅 UWSGI#uWSGI 套接字的可访问性)并启用 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 用户身份运行以下命令(例如,使用 sudosu)。

首次安装后,请确保生成数据库

[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 菜单中更改域的设置。

参见