「Hyperkitty」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (カテゴリを修正) |
(一部翻訳) |
||
1行目: | 1行目: | ||
[[Category:メールサーバー]] |
[[Category:メールサーバー]] |
||
[[Category:ウェブアプリケーション]] |
[[Category:ウェブアプリケーション]] |
||
− | [https://gitlab.com/mailman/hyperkitty Hyperkitty] |
+ | [https://gitlab.com/mailman/hyperkitty Hyperkitty] は、[[Django]] ベースのアーカイバおよび [[Mailman]] のアーカイブインターフェイスです。 |
− | == |
+ | == インストール == |
− | + | Hyperkitty を使用するには、動作する [[ウェブサーバー]] のセットアップが必要です (たとえば、[[Apache HTTP Server]] を使用して [[wikipedia:Wsgi|WSGI]] に直接転送するか、[[Nginx]] を使用してリクエストを転送します) [[UWSGI]] などのアプリケーションサーバー) |
|
− | + | {{Pkg|hyperkitty}} パッケージを [[インストール]] します。 |
|
+ | {{Warning|Hyperkitty には [[TLS]] 経由でのみアクセスしてください (テスト目的でハイパーキティを実行しているマシンから直接アクセスする場合を除く)。そうしないと、パスワードやユーザー データがネットワークに公開されてしまいます。}} |
||
− | {{Warning|Hyperkitty should only be accessed over [[TLS]] (unless only accessed directly from the machine running it for testing purposes), as it otherwise exposes passwords and user data to the network.}} |
||
− | == |
+ | == 設定 == |
− | + | Web アプリケーションは、{{ic|/etc/webapps/hyperkitty/settings_local.py}} で設定されます (これは、{{ic|/usr/share/webapps/hyperkitty/settings.py}} のデフォルト設定に含まれています) |
|
− | {{Note|Hyperkitty |
+ | {{Note|Hyperkitty は、ユーザーの機密データ (sqlite データベースなど) を {{ic|/var/lib/hyperkitty/data/}} に保存する必要があります。このディレクトリには root とアプリケーション自体だけがアクセスできるためです。}} |
+ | アプリケーションのデフォルトのシークレットを変更します。 |
||
− | Change the default secret for the application: |
||
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
||
23行目: | 23行目: | ||
}} |
}} |
||
+ | 運用環境で実行する場合は、必ずデバッグを無効にしてください。 |
||
− | Make sure to disable debugging when running in production: |
||
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
||
29行目: | 29行目: | ||
}} |
}} |
||
+ | 有効な電子メール設定を追加します ([[Django]] アプリケーションが購読者を確認できるようにします) |
||
− | Add a valid email configuration (so that the [[Django]] application can verify subscribers): |
||
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
||
39行目: | 39行目: | ||
}} |
}} |
||
− | {{Note| |
+ | {{Note|{{ic|DEFAULT_FROM_MAIL}} 設定オプションと {{ic|SERVER_MAIL}} 設定オプションを使用して、それぞれ内部認証とエラー報告のために送信されるメールの {{ic|From:}} ヘッダーを定義できます。}} |
+ | 実行中の [[mailman]] インスタンスの REST API に接続するには、設定オプションを hyperkitty の構成に追加する必要があります。 |
||
− | To connect with a running [[mailman]] instance's REST API, configuration options have to be added to hyperkitty's configuration. |
||
{{hc|/etc/webapps/hyperkitty/settings_local.py|<nowiki> |
{{hc|/etc/webapps/hyperkitty/settings_local.py|<nowiki> |
||
49行目: | 49行目: | ||
</nowiki>}} |
</nowiki>}} |
||
− | + | [[mailman]] インスタンスとのアーカイブ統合を構成するには、Mailman 側で [[Mailman#Integrate with Hyperkitty|integration with hyperkitty]] をセットアップし、次にそれらの接続を受け入れるように hyperkitty を設定します。 |
|
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
||
56行目: | 56行目: | ||
}} |
}} |
||
+ | アプリケーションの有効なホスト名またはドメイン名を定義する必要があります。 |
||
− | The valid hosts or domain names for the application need to be defined: |
||
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
||
65行目: | 65行目: | ||
}} |
}} |
||
− | == |
+ | == ホスティング == |
{{Expansion|Example for a setup using [[Apache HTTP Server]].}} |
{{Expansion|Example for a setup using [[Apache HTTP Server]].}} |
||
{{Note| |
{{Note| |
||
− | * Hyperkitty |
+ | * Hyperkitty は独自のユーザーおよびグループ (すなわち {{ic|hyperkitty}}) として実行する必要があります。{{ic|/etc/webapps/hyperkitty/}}、{{ic|/var/lib/hyperkitty/}}、{{ic|/run/hyperkitty/}} をそれぞれ設定、静的キャッシュ、(潜在的な) ソケットに使用します。 |
− | * |
+ | * 静的ファイルはデフォルトではトップレベルの {{ic|static/}} ディレクトリから提供され、同じ (サブ) ドメイン上の [[postorius]] と衝突するため、{{ic|/etc/webapps/hyperkitty/settings_local.py}} 内の {{ic|STATIC_URL}} 変数をユニークなもの (例えば{{ic|'/hyperkitty_static/'}}) に設定することを推奨します。 |
}} |
}} |
||
− | === Nginx |
+ | === Nginx と uWSGI === |
− | Hyperkitty |
+ | Hyperkitty には、{{ic|/etc/uwsgi/hyperkitty.ini}} に動作する [[uWSGI]] 設定ファイルが付属しています。 |
− | + | {{Pkg|nginx}}と{{Pkg|uwsgi-plugin-python}} を [[インストール]] し、[[uWSGI]] 用のアプリケーションごとのソケットを作成し ([[UWSGI#uWSGIソケットのアクセシビリティ]] を参照)、{{ic|uwsgi-secure@hyperkitty.socket}} ユニットを [[Systemd#Using units|activate]] します。 |
|
− | + | ローカルのテストセットアップでは、Hyperkitty を http://localhost/hyperkitty/、以下の [[Nginx]] を設定に追加してください: |
|
{{hc|/etc/nginx/hyperkitty.conf|<nowiki> |
{{hc|/etc/nginx/hyperkitty.conf|<nowiki> |
||
103行目: | 103行目: | ||
</nowiki>}} |
</nowiki>}} |
||
− | == |
+ | == セットアップ == |
{{Note| Run the following commands as the {{ic|hyperkitty}} user (e.g. using [[sudo]] or [[su]]).}} |
{{Note| Run the following commands as the {{ic|hyperkitty}} user (e.g. using [[sudo]] or [[su]]).}} |
||
133行目: | 133行目: | ||
{{Note|After adding a new {{ic|site}} make sure to set the {{ic|SITE_ID}} variable in {{ic|/etc/webapps/hyperkitty/settings_local.py}} to the respective ID!}} |
{{Note|After adding a new {{ic|site}} make sure to set the {{ic|SITE_ID}} variable in {{ic|/etc/webapps/hyperkitty/settings_local.py}} to the respective ID!}} |
||
+ | == ヒントとテクニック == |
||
− | == Tips and tricks == |
||
=== Importing mailman2 archives === |
=== Importing mailman2 archives === |
2023年10月28日 (土) 02:11時点における版
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; } }
セットアップ
After first installation make sure to generate a database:
[hyperkitty]$ django-admin migrate --pythonpath /usr/share/webapps/hyperkitty/ --settings settings
Afterwards, the static data for the application needs to be collected:
[hyperkitty]$ django-admin collectstatic --pythonpath /usr/share/webapps/hyperkitty/ --settings settings
To compress the data, run the following:
[hyperkitty]$ django-admin compress --pythonpath /usr/share/webapps/hyperkitty/ --settings settings
Enable and start the hyperkitty-qcluster.service
systemd service for required asynchronous operations on the web application.
Populate the database with default data (when setting up for the first time):
[hyperkitty]$ django-admin loaddata --pythonpath /usr/share/webapps/hyperkitty/ --settings settings first_start
Create a superuser account for the Django application:
[hyperkitty]$ django-admin createsuperuser --pythonpath /usr/share/webapps/hyperkitty --settings settings
Log in to the admin interface of the Django application at http://localhost/hyperkitty/admin to be able to add more Sites
besides the default example.com
or to add additional Mail domains
.
ヒントとテクニック
Importing mailman2 archives
Hyperkitty can import archives from mailman < 3.0.
[hyperkitty]$ django-admin hyperkitty_import --pythonpath /usr/share/webapps/hyperkitty --settings settings -l ADDRESS mbox_file [mbox_file ...]
Here ADDRESS
is the fully-qualified list name (e.g. list@example.com
) and the mbox_file
argument represents existing archives (in mbox format) to import (usually found in /var/lib/mailman/archives/private/LIST_NAME.mbox/LIST_NAME.mbox
).
Afterwards the full-text search index can be updated manually:
[hyperkitty]$ django-admin update_index_one_list --pythonpath /usr/share/webapps/hyperkitty --settings settings ADDRESS
Content-Security-Policy Header
It is possible to define a Content-Security-Policy HTTP response header for HyperKitty. This allows content and resources only from specified locations.
When using nginx add the following to the server
directive in which HyperKitty is setup in:
/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'"; [..]
Disabling Gravatar support
The builtin Gravatar support can be disabled in the configuration:
/etc/webapps/hyperkitty/settings_local.py
HYPERKITTY_ENABLE_GRAVATAR = False
This option was introduced in Hyperkitty 1.3.4. In earlier versions, use this instead:
/etc/webapps/hyperkitty/settings_local.py
GRAVATAR_SECURE_URL = ''
Saving mail attachments to disk
By default Hyperkitty stores mail attachments in its database. However, it can be configured to save the attachments to disk instead:
/etc/webapps/hyperkitty/settings_local.py
HYPERKITTY_ATTACHMENT_FOLDER = /var/lib/hyperkitty/data/attachments
Template customization
Using Django's TEMPLATES-DIRS capabilities, it is possible to override the following templates to change the looks of the application:
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 search backend
Hyperkitty can make use of a Xapian based search backend. Install the python-xapian-haystack package and configure the backend:
/etc/webapps/hyperkitty/settings_local.py
HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'xapian_backend.XapianEngine', 'PATH': "/var/lib/hyperkitty/data/xapian_index", }, }
Make sure to create the search index for all lists afterwards. Run the following command as the hyperkitty
user (e.g. using sudo or 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)