Hyperkitty
Hyperkitty は、Django ベースのアーカイバおよび Mailman のアーカイブインターフェイスです。
目次
インストール
Hyperkitty を使用するには、動作する ウェブサーバー のセットアップが必要です (たとえば、Apache HTTP Server を使用して WSGI に直接転送するか、Nginx を使用してリクエストを転送します) UWSGI などのアプリケーションサーバー)
hyperkitty パッケージを インストール します。
設定
Web アプリケーションは、/etc/webapps/hyperkitty/settings_local.py
で設定されます (これは、/usr/share/webapps/hyperkitty/settings.py
のデフォルト設定に含まれています)
アプリケーションのデフォルトのシークレットを変更します。
/etc/webapps/hyperkitty/settings_local.py
SECRET_KEY = 'something-very-secret'
運用環境で実行する場合は、必ずデバッグを無効にしてください。
/etc/webapps/hyperkitty/settings_local.py
DEBUG = False
有効な電子メール設定を追加します (Django アプリケーションが購読者を確認できるようにします)
/etc/webapps/hyperkitty/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
実行中の mailman インスタンスの REST API に接続するには、設定オプションを hyperkitty の構成に追加する必要があります。
/etc/webapps/hyperkitty/settings_local.py
MAILMAN_REST_API_URL = 'http://localhost:8001' MAILMAN_REST_API_USER = 'rest_admin' MAILMAN_REST_API_PASS = 'rest_admin_password'
mailman インスタンスとのアーカイブ統合を構成するには、Mailman 側で integration with hyperkitty をセットアップし、次にそれらの接続を受け入れるように hyperkitty を設定します。
/etc/webapps/hyperkitty/settings_local.py
MAILMAN_ARCHIVER_KEY = 'SecretArchiverAPIKey' MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')
アプリケーションの有効なホスト名またはドメイン名を定義する必要があります。
/etc/webapps/hyperkitty/settings_local.py
ALLOWED_HOSTS = [ 'localhost', 'lists.example.com' ]
ホスティング
Nginx と uWSGI
Hyperkitty には、/etc/uwsgi/hyperkitty.ini
に動作する uWSGI 設定ファイルが付属しています。
nginxとuwsgi-plugin-python を インストール し、uWSGI 用のアプリケーションごとのソケットを作成し (UWSGI#uWSGIソケットのアクセシビリティ を参照)、uwsgi-secure@hyperkitty.socket
ユニットを activate します。
ローカルのテストセットアップでは、Hyperkitty を http://localhost/hyperkitty/、以下の Nginx を設定に追加してください:
/etc/nginx/hyperkitty.conf
server { listen 80; server_name localhost; charset utf-8; client_max_body_size 75M; root /usr/share/webapps/hyperkitty; access_log /var/log/nginx/access.hyperkitty.log; error_log /var/log/nginx/error.hyperkitty.log; location /hyperkitty_static { alias /var/lib/hyperkitty/static; } location ~^/(hyperkitty|user-profile)/(.*)$ { include /etc/nginx/uwsgi_params; uwsgi_pass unix:/run/hyperkitty/hyperkitty.sock; } }
セットアップ
最初のインストール後、必ずデータベースを生成してください。
[hyperkitty]$ django-admin migrate --pythonpath /usr/share/webapps/hyperkitty/ --settings settings
その後、アプリケーションの静的データを収集する必要があります。
[hyperkitty]$ django-admin collectstatic --pythonpath /usr/share/webapps/hyperkitty/ --settings settings
データを圧縮するには、次のコマンドを実行します。
[hyperkitty]$ django-admin compress --pythonpath /usr/share/webapps/hyperkitty/ --settings settings
Web アプリケーションで必要な非同期操作のための hyperkitty-qcluster.service
systemd サービスを 有効化 および 起動 します。
データベースにデフォルトデータを入力します (初めてセットアップする場合)
[hyperkitty]$ django-admin loaddata --pythonpath /usr/share/webapps/hyperkitty/ --settings settings first_start
Django アプリケーションのスーパーユーザーアカウントを作成します。
[hyperkitty]$ django-admin createsuperuser --pythonpath /usr/share/webapps/hyperkitty --settings settings
http://localhost/hyperkitty/admin にある Django アプリケーションの管理インターフェイスにログインして、デフォルトの example.com
以外に Sites
を追加できるようにするか、さらに Mail ドメイン
を追加します。
ヒントとテクニック
mailman2 アーカイブのインポート
Hyperkitty は、mailman 3.0 より前のバージョンからアーカイブをインポートできます。
[hyperkitty]$ django-admin hyperkitty_import --pythonpath /usr/share/webapps/hyperkitty --settings settings -l ADDRESS mbox_file [mbox_file ...]
ここで、ADDRESS
は完全修飾リスト名 (例: list@example.com
) で、引数 mbox_file
は既存のアーカイブを表します。(mbox 形式) でインポートします (通常は {{ic|/var/lib/mailman/archives/private/LIST_NAME.mbox/LIST_NAME.mbox} にあります) })
その後、全文検索インデックスを手動で更新します。
[hyperkitty]$ django-admin update_index_one_list --pythonpath /usr/share/webapps/hyperkitty --settings settings ADDRESS
Content-Security-Policy ヘッダー
HyperKitty の [1] HTTP 応答ヘッダーを定義できます。これにより、指定された場所からのコンテンツとリソースのみが許可されます。
nginx を使用する場合は、HyperKitty がセットアップされている server
ディレクティブに以下を追加します。
/etc/nginx/hyperkitty.conf
[..] add_header Content-Security-Policy "default-src 'self'; connect-src 'self'; img-src 'self' https://secure.gravatar.com; script-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'"; [..]
Gravatar サポートの無効化
組み込みの Gravatar サポートは、設定で無効にすることができます。
/etc/webapps/hyperkitty/settings_local.py
HYPERKITTY_ENABLE_GRAVATAR = False
このオプションは Hyperkitty 1.3.4 で導入されました。以前のバージョンでは、代わりにこれを使用してください。
/etc/webapps/hyperkitty/settings_local.py
GRAVATAR_SECURE_URL = ''
メールの添付ファイルをディスクに保存する
デフォルトでは、Hyperkitty はメールの添付ファイルをデータベースに保存します。ただし、代わりに添付ファイルをディスクに保存するように構成できます。
/etc/webapps/hyperkitty/settings_local.py
HYPERKITTY_ATTACHMENT_FOLDER = /var/lib/hyperkitty/data/attachments
テンプレートのカスタマイズ
Django の TEMPLATES-DIRS 機能を使用すると、次のテンプレートをオーバーライドすることができます。アプリケーションの外観を変更します。
hyperkitty/headers.html
: the content will appear before the</head>
taghyperkitty/top.html
: the content will appear before the<body>
taghyperkitty/bottom.html
: the content will appear before the</body>
tag
Xapian 検索バックエンド
Hyperkitty は、Xapian ベースの検索バックエンドを利用できます。python-xapian-haystack パッケージを インストール してバックエンドを設定します。
/etc/webapps/hyperkitty/settings_local.py
HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'xapian_backend.XapianEngine', 'PATH': "/var/lib/hyperkitty/data/xapian_index", }, }
その後、必ずすべてのリストの検索インデックスを作成してください。次のコマンドを hyperkitty
ユーザーとして実行します (例: sudo または su を使用)
[hyperkitty]$ django-admin update_index --pythonpath /usr/share/webapps/hyperkitty --settings settings
Troubleshooting
SMTP AUTH extension not supported by server
If upon first login with the admin user a SMTNotSupportedError
is thrown (logged to /var/log/hyperkitty/hyperkitty.log
), make sure to verify the EMAIL_*
settings in /etc/webapps/hyperkitty/settings_local.py
.
By default e.g. EMAIL_USE_TLS
is set to False
which might trigger a failed login via SMTP.
See also
- Hyperkitty Documentation - The upstream documentation
- Mailman Suite Documentation - The (high level) upstream documentation for the entire Mailman Suite (Mailman, Hyperkitty and Postorius)