「Hyperkitty」の版間の差分
(→Nginx と uWSGI: リンクを修正) |
|||
(同じ利用者による、間の9版が非表示) | |||
1行目: | 1行目: | ||
[[Category:メールサーバー]] |
[[Category:メールサーバー]] |
||
[[Category:ウェブアプリケーション]] |
[[Category:ウェブアプリケーション]] |
||
+ | [[en:Hyperkitty]] |
||
[https://gitlab.com/mailman/hyperkitty Hyperkitty] は、[[Django]] ベースのアーカイバおよび [[Mailman]] のアーカイブインターフェイスです。 |
[https://gitlab.com/mailman/hyperkitty Hyperkitty] は、[[Django]] ベースのアーカイバおよび [[Mailman]] のアーカイブインターフェイスです。 |
||
78行目: | 79行目: | ||
Hyperkitty には、{{ic|/etc/uwsgi/hyperkitty.ini}} に動作する [[uWSGI]] 設定ファイルが付属しています。 |
Hyperkitty には、{{ic|/etc/uwsgi/hyperkitty.ini}} に動作する [[uWSGI]] 設定ファイルが付属しています。 |
||
− | {{Pkg|nginx}}と{{Pkg|uwsgi-plugin-python}} を [[インストール]] し、[[uWSGI]] 用のアプリケーションごとのソケットを作成し ([[ |
+ | {{Pkg|nginx}}と{{Pkg|uwsgi-plugin-python}} を [[インストール]] し、[[uWSGI]] 用のアプリケーションごとのソケットを作成し ([[uWSGI#uWSGI ソケットのアクセシビリティ]] を参照)、{{ic|uwsgi-secure@hyperkitty.socket}} ユニットを [[Systemd#ユニットを使う|activate]] します。 |
− | ローカル |
+ | ローカルテストセットアップの場合、http://localhost/hyperkitty/ で Hyperkitty を提供し、次の [[Nginx]] 設定をセットアップに追加します。 |
{{hc|/etc/nginx/hyperkitty.conf|<nowiki> |
{{hc|/etc/nginx/hyperkitty.conf|<nowiki> |
||
143行目: | 144行目: | ||
[hyperkitty]$ django-admin hyperkitty_import --pythonpath /usr/share/webapps/hyperkitty --settings settings -l ''ADDRESS'' ''mbox_file'' [''mbox_file'' ...] |
[hyperkitty]$ django-admin hyperkitty_import --pythonpath /usr/share/webapps/hyperkitty --settings settings -l ''ADDRESS'' ''mbox_file'' [''mbox_file'' ...] |
||
− | ここで、{{ic|''ADDRESS''}} は完全修飾リスト名 (例: {{ic|list@example.com}}) で、引数 {{ic|''mbox_file''}} は既存のアーカイブを表します。([[Wikipedia:Mbox|mbox]] 形式) でインポートします (通常は {{ic|/var/lib/mailman/archives/private/''LIST_NAME''.mbox/''LIST_NAME''.mbox} にあります |
+ | ここで、{{ic|''ADDRESS''}} は完全修飾リスト名 (例: {{ic|list@example.com}}) で、引数 {{ic|''mbox_file''}} は既存のアーカイブを表します。([[Wikipedia:Mbox|mbox]] 形式) でインポートします (通常は {{ic|/var/lib/mailman/archives/private/''LIST_NAME''.mbox/''LIST_NAME''.mbox}} にあります。) |
その後、全文検索インデックスを手動で更新します。 |
その後、全文検索インデックスを手動で更新します。 |
||
151行目: | 152行目: | ||
{{Note|全文検索インデックスは、分単位で実行される cron ジョブによって自動的に作成されます。}} |
{{Note|全文検索インデックスは、分単位で実行される cron ジョブによって自動的に作成されます。}} |
||
− | === Content-Security-Policy |
+ | === Content-Security-Policy ヘッダー === |
− | + | HyperKitty の [https://content-security-policy.com/Content-Security-Policy] HTTP 応答ヘッダーを定義できます。これにより、指定された場所からのコンテンツとリソースのみが許可されます。 |
|
+ | [[nginx]] を使用する場合は、HyperKitty がセットアップされている {{ic|server}} ディレクティブに以下を追加します。 |
||
− | When using [[nginx]] add the following to the {{ic|server}} directive in which HyperKitty is setup in: |
||
{{hc|/etc/nginx/hyperkitty.conf|2= |
{{hc|/etc/nginx/hyperkitty.conf|2= |
||
163行目: | 164行目: | ||
}} |
}} |
||
− | === |
+ | === Gravatar サポートの無効化 === |
− | + | 組み込みの [[Wikipedia:ja:Gravatar|Gravatar]] サポートは、設定で無効にすることができます。 |
|
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
||
171行目: | 172行目: | ||
}} |
}} |
||
+ | このオプションは Hyperkitty 1.3.4 で導入されました。以前のバージョンでは、代わりにこれを使用してください。 |
||
− | This option was introduced in Hyperkitty 1.3.4. In earlier versions, use this instead: |
||
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
||
177行目: | 178行目: | ||
}} |
}} |
||
+ | === メールの添付ファイルをディスクに保存する === |
||
− | === Saving mail attachments to disk === |
||
+ | デフォルトでは、Hyperkitty はメールの添付ファイルをデータベースに保存します。ただし、代わりに添付ファイルをディスクに保存するように構成できます。 |
||
− | By default Hyperkitty stores mail attachments in its database. However, it can be configured to save the attachments to disk instead: |
||
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
||
185行目: | 186行目: | ||
}} |
}} |
||
+ | {{Note|この場所には、{{ic|hyperkitty}} ユーザーがアクセスおよび書き込みできる必要があります。}} |
||
− | {{Note|The location needs to be accessible and writable by the {{ic|hyperkitty}} user.}} |
||
+ | === テンプレートのカスタマイズ === |
||
− | === Template customization === |
||
− | + | [[Django]] の [https://docs.djangoproject.com/en/3.0/ref/settings/#std:setting-TEMPLATES-DIRS TEMPLATES-DIRS] 機能を使用すると、次のテンプレートをオーバーライドすることができます。アプリケーションの外観を変更します。 |
|
* {{ic|hyperkitty/headers.html}}: the content will appear before the {{ic|</head>}} tag |
* {{ic|hyperkitty/headers.html}}: the content will appear before the {{ic|</head>}} tag |
||
195行目: | 196行目: | ||
* {{ic|hyperkitty/bottom.html}}: the content will appear before the {{ic|</body>}} tag |
* {{ic|hyperkitty/bottom.html}}: the content will appear before the {{ic|</body>}} tag |
||
− | === Xapian |
+ | === Xapian 検索バックエンド === |
− | Hyperkitty |
+ | Hyperkitty は、Xapian ベースの検索バックエンドを利用できます。{{Pkg|python-xapian-haystack}} パッケージを [[インストール]] してバックエンドを設定します。 |
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
{{hc|/etc/webapps/hyperkitty/settings_local.py|2= |
||
208行目: | 209行目: | ||
}} |
}} |
||
+ | その後、必ずすべてのリストの検索インデックスを作成してください。次のコマンドを {{ic|hyperkitty}} ユーザーとして実行します (例: [[sudo]] または [[su]] を使用) |
||
− | Make sure to create the search index for all lists afterwards. Run the following command as the {{ic|hyperkitty}} user (e.g. using [[sudo]] or [[su]]): |
||
[hyperkitty]$ django-admin update_index --pythonpath /usr/share/webapps/hyperkitty --settings settings |
[hyperkitty]$ django-admin update_index --pythonpath /usr/share/webapps/hyperkitty --settings settings |
||
+ | == トラブルシューティング == |
||
− | == Troubleshooting == |
||
− | === SMTP AUTH |
+ | === SMTP AUTH 拡張子はサーバーでサポートされていません === |
− | + | 管理者ユーザーとして初めてログインしたときに、{{ic|SMTNotSupportedError}} がスローされた場合 ({{ic|/var/log/hyperkitty/hyperkitty.log}} に記録されます)、必ず {{ic|/etc/webapps/hyperkitty/settings_local.py}} の {{ic|EMAIL_*}} 設定を確認してください |
|
+ | デフォルトでは、たとえば {{ic|EMAIL_USE_TLS}} は {{ic|False}} に設定されており、SMTP 経由でのログイン失敗がトリガーされる可能性があります。 |
||
− | By default e.g. {{ic|EMAIL_USE_TLS}} is set to {{ic|False}} which might trigger a failed login via SMTP. |
||
− | == |
+ | == 参照 == |
− | * [https://hyperkitty.readthedocs.io/en/latest/ Hyperkitty Documentation] - |
+ | * [https://hyperkitty.readthedocs.io/en/latest/ Hyperkitty Documentation] - ドキュメント |
− | * [https://docs.mailman3.org/en/latest/ Mailman Suite Documentation] - |
+ | * [https://docs.mailman3.org/en/latest/ Mailman Suite Documentation] - Mailman スイート全体 (Mailman、Hyperkitty、Postorius) の (高レベルの) アップストリームドキュメント |
2023年10月28日 (土) 14:51時点における最新版
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 します。
ローカルテストセットアップの場合、http://localhost/hyperkitty/ で 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 形式) でインポートします (通常は /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
トラブルシューティング
SMTP AUTH 拡張子はサーバーでサポートされていません
管理者ユーザーとして初めてログインしたときに、SMTNotSupportedError
がスローされた場合 (/var/log/hyperkitty/hyperkitty.log
に記録されます)、必ず /etc/webapps/hyperkitty/settings_local.py
の EMAIL_*
設定を確認してください
デフォルトでは、たとえば EMAIL_USE_TLS
は False
に設定されており、SMTP 経由でのログイン失敗がトリガーされる可能性があります。
参照
- Hyperkitty Documentation - ドキュメント
- Mailman Suite Documentation - Mailman スイート全体 (Mailman、Hyperkitty、Postorius) の (高レベルの) アップストリームドキュメント