「Mailman」の版間の差分
Kusakata.bot2 (トーク | 投稿記録) (Pkg/AUR テンプレートの更新) |
(→参照: 翻訳) |
||
(3人の利用者による、間の14版が非表示) | |||
1行目: | 1行目: | ||
[[Category:メール]] |
[[Category:メール]] |
||
+ | [[Category:メールサーバー]] |
||
− | [[en:Mailman]] |
||
+ | [[en:mailman]] |
||
− | {{Note|このページでは Mailman 2 を対象としています。Mailman 3 については [[#Mailman 3]] を見てください。}} |
||
+ | [https://gitlab.com/mailman/mailman Mailman] はメーリングリスト管理システムです。[[メールサーバー]]と組み合わせて使用します。 |
||
− | '''Mailman''' は電子メーリングリストを管理するためのアプリケーションです。基本的に''メールサーバー''や''ウェブサーバー''と合わせて使うことになるため、最初にメールサーバーを [[Postfix]], [[Exim]], [[Sendmail]], Qmail などから選択して (どれが良いかわからないときは、Postfix を選ぶことを推奨します)、それから [[Apache]], [[Lighttpd]], [[Nginx]] などのウェブサーバーを決めて下さい (どのウェブサーバーでもかまいません)。Mailman とメールサーバー、ウェブサーバーは必ずしも同一のコンピュータで実行する必要はありません。 |
||
+ | == インストール == |
||
− | この記事では Mailman のインストールだけを扱います。メールサーバーやウェブサーバーのインストールについてはそれぞれの wiki ページを参照してください。 |
||
+ | {{Pkg|mailman3}} パッケージを[[インストール]]します。 |
||
− | このガイドでは "arch" という名前のマシンを使って "a", "b", "c" という名前の組織のメーリングリストをセットアップすることにします。それぞれサンプルドメイン "a.org", "b.org", "c.org" が存在して "arch" にアクセスできるようになっているとします。各ドメインで以下のように設定します: |
||
− | * Mailman の'''ウェブインターフェイス'''に {{ic|lists.''example''.org}} からアクセスできるようにする。 |
||
− | * {{ic|lists.''example''.org/archives}} に'''リストのアーカイブ'''を配置する。 |
||
− | * '''リストのアドレス'''は {{ic|''list''@''example''.org}} などとする。 |
||
+ | {{Note|{{Pkg|mailman3}} は近い将来 {{Pkg|mailman}} に置き換わる予定です。両方のアプリケーションが {{ic|/var/lib/mailman}} をステートディレクトリ、{{ic|mailman}} ユーザーとして使うので、現在衝突していて、一緒にインストールすることはできません。}} |
||
− | '''注意事項''': Mailman を使うことで複数のドメインのリストを管理することはできますが、たとえドメインが違っていても同じ名前のリストを作ることはできません。 |
||
+ | Mailman は [[Postorius]] (設定用) と [[Hyperkitty]] (アーカイブ用)と一緒に使うことができます。 |
||
− | == Mailman のインストール == |
||
+ | {{Note|''Mailman'' は専用の {{ic|mailman}} ユーザーとして実行されます。したがって、{{ic|mailman}} 実行ファイルは、{{ic|mailman}} ユーザーとして実行する必要があります。}} |
||
− | {{Pkg|mailman}} パッケージを[[インストール]]してください。 |
||
− | == |
+ | == 設定 == |
+ | Mailman の設定はすべて {{ic|/etc/mailman.cfg}} で行われます。全ての可能な設定オプションとデフォルトの設定を説明するスキーマは {{ic|/usr/lib/python3.8/site-packages/mailman/config/schema.cfg}} に格納されています。 |
||
− | デフォルト設定は {{ic|/usr/lib/mailman/Mailman/Defaults.py}} ファイルに全て記述されています。ただしこのファイルを修正してはいけません。代わりに、'''mm_cfg.py''' ({{ic|/etc/mailman/mm_cfg.py}}) ファイルに変更を加えて下さい。Defaults.py のデフォルト設定と異なる値だけを mm_cfg.py に追加してください。Mailman をアップグレードしても mm_cfg.py に勝手に手が加えられることはありません。 |
||
+ | また、コマンドラインからも設定にアクセスすることができます。{{ic|mailman}} ユーザーとして (例: [[sudo]] や [[su]] を使って) 以下のコマンドを実行します。 |
||
− | === ウェブサーバーの統合 === |
||
+ | [mailman]$ mailman conf |
||
− | {{bc|<nowiki> |
||
− | DEFAULT_URL_HOST = 'lists.a.org' |
||
+ | === データベース === |
||
− | VIRTUAL_HOSTS.clear() |
||
− | add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST) |
||
− | add_virtualhost('lists.b.org', 'b.org') |
||
− | add_virtualhost('lists.c.org', 'c.org') |
||
+ | Mailman はデフォルトで、{{ic|/var/lib/mailman/data/ の [[SQLite]] [https://mailman.readthedocs.io/en/latest/src/mailman/docs/database.html データベース] を使用します。}} ですが、[[MariaDB]] または [[PostgreSQL]] を使用するように設定できます。 |
||
− | POSTFIX_STYLE_VIRTUAL_DOMAINS = ['a.org', 'b.org', 'c.org'] |
||
+ | ==== SQLite ==== |
||
− | DEFAULT_URL_PATTERN = 'http://%s/' |
||
− | PUBLIC_ARCHIVE_URL = 'http://%(hostname)s/archives/%(listname)s' |
||
− | </nowiki>}} |
||
+ | [[SQLite]] データベースのデフォルトの場所はすでに {{ic|schema.cfg}} に反映されているため、Mailman で設定する必要はありません。 |
||
− | Apache の場合を以下のように変更してください: |
||
− | {{bc|<nowiki> |
||
− | DEFAULT_URL_PATTERN = 'http://%s/lists/' |
||
− | </nowiki>}} |
||
+ | {{hc|/etc/mailman.cfg| |
||
− | === MTA の統合 === |
||
+ | [database] |
||
+ | url: sqlite:////var/lib/mailman/data/mailman.db |
||
+ | }} |
||
+ | ==== MariaDB ==== |
||
− | 選択したメールサーバーに合わせて {{ic|/etc/mailman/mm_cfg.py}} の中身を変更します。 |
||
+ | {{Pkg|python-pymysql}} パッケージを [[インストール]] し、[[MariaDB]] にデータベースを設定します。 |
||
− | === Postfix の統合 === |
||
+ | {{hc|/etc/mailman.cfg|2= |
||
− | {{bc|<nowiki> |
||
+ | [database] |
||
− | DEFAULT_EMAIL_HOST = 'a.org' |
||
+ | class: mailman.database.mysql.MySQLDatabase |
||
− | MTA = 'Postfix' |
||
+ | url: mysql+pymysql://''myuser'':''mypassword''@''mymysqlhost''/mailman?charset=utf8&use_unicode=1 |
||
− | </nowiki>}} |
||
+ | }} |
||
+ | ==== PostgreSQL ==== |
||
− | {{ic|mm_cfg.py}} を編集したら、以下を実行して Postfix が必要とする aliases ファイルを作成してください: |
||
− | # /usr/lib/mailman/bin/genaliases |
||
+ | {{Pkg|python-psycopg2}} パッケージを [[インストール]] し、[[PostgreSQL]] を使用してデータベースを作成します。 |
||
− | === Exim の統合 === |
||
+ | {{hc|/etc/mailman.cfg| |
||
− | {{bc|<nowiki> |
||
+ | [database] |
||
− | DEFAULT_EMAIL_HOST = 'a.org' |
||
+ | class: mailman.database.postgresql.PostgreSQLDatabase |
||
− | MTA = None |
||
+ | url: postgres://''myuser'':''mypassword''@''mypghost''/mailman |
||
− | </nowiki>}} |
||
+ | }} |
||
+ | === REST API === |
||
− | == メールサーバーの設定 == |
||
+ | Mailman は、設定の {{ic|[webservice]}} セクションの設定に基づいて REST API を公開します。{{ic|admin_user}} と {{ic|admin_pass}} のデフォルト値を必ず置き換えてください (以下の例の値は使用しないでください) |
||
− | {{Note|ドメインネームサーバー (DNS) の設定を確認してください。インターネット上でメールを送るには、DNS が正しくないといけません。MX レコードがメールホストに設定されている必要があります。DNS に関する情報はこのドキュメントでは扱いません。}} |
||
+ | {{hc|/etc/mailman.cfg| |
||
− | === Postfix === |
||
+ | [webservice] |
||
+ | admin_user: my_new_admin_user_name |
||
+ | admin_pass: my_new_admin_user_password |
||
+ | }} |
||
+ | === ARC === |
||
− | Postfix のインストールと設定については、[[Postfix]] を見て下さい (Mailman 用にのみ Postfix を使う場合は設定はとてもシンプルです: ''mailbox'' や ''database'' などは無視してかまいません)。 |
||
+ | デフォルトでは、[[Wikipedia:ja:DMARC|DMARC]] および [[Wikipedia:ja:DKIM|DKIM]] は無効になっています。設定は、設定ファイルの {{ic|[ARC]}} セクションで行われます。必ず必要な値を設定し、デフォルトに関するドキュメントを読んでください。 |
||
− | {{ic|/etc/postfix/main.cf}} に以下のフィールドと値を記述してください: |
||
+ | {{hc|/etc/mailman.cfg| |
||
− | {{bc|1= |
||
+ | [ARC] |
||
− | myhostname = arch.a.org |
||
+ | enabled: yes |
||
− | mydomain = a.org |
||
+ | authserv_id: mailserver.tld |
||
− | myorigin = $mydomain |
||
+ | trusted_authserv_ids: subdomain.mailserver.tld, other.mailserver.tld |
||
− | mydestination = localhost, a.org, b.org, c.org |
||
+ | privkey: /path/to/privatekey.pem |
||
− | mynetworks_style = host |
||
+ | selector: test |
||
+ | domain: mailserver.tld |
||
+ | }} |
||
+ | === MTA === |
||
− | alias_maps = hash:/etc/postfix/aliases, hash:/var/lib/mailman/data/aliases |
||
− | alias_database = $alias_maps |
||
− | virtual_alias_maps = hash:/etc/postfix/virtual, hash:/var/lib/mailman/data/virtual-mailman |
||
+ | メール転送エージェント (MTA) を接続するには、設定ファイルの {{ic|[mta]}} セクションを設定する必要があります。 [https://mailman.readthedocs.io/en/latest/src/mailman/docs/mta.html アップストリームドキュメント] では、[[postfix]]、[[exim]]、[[sendmail]] の例について説明していますが、その他の例も説明しています。 MTA は技術的には可能です。 |
||
− | recipient_delimiter = + |
||
− | }} |
||
− | === |
+ | ==== Postfix ==== |
+ | ローカル [[postfix]] インスタンスに接続するには、次の構成セクションを使用できます。 |
||
− | {{ic|/etc/mail/exim.conf}} を編集して以下のセクションにエントリを追加してください: |
||
+ | {{hc|/etc/mailman.cfg| |
||
− | {{ic|routers}} セクション: |
||
+ | [mta] |
||
− | |||
+ | incoming: mailman.mta.postfix.LMTP |
||
− | {{bc|1= |
||
+ | outgoing: mailman.mta.deliver.deliver |
||
− | local_mailman_list: |
||
+ | lmtp_host: mail.example.com |
||
− | driver = accept |
||
+ | lmtp_port: 8024 |
||
− | require_files = /var/lib/mailman/lists/${lc::$local_part}/config.pck |
||
+ | smtp_host: mail.example.com |
||
− | local_part_suffix = -admin : -bounces : -bounces+* : -confirm : -confirm+* : -join : -leave : -owner : -request : -subscribe : -unsubscribe |
||
+ | smtp_port: 25 |
||
− | local_part_suffix_optional |
||
− | transport = mailman_transport |
||
}} |
}} |
||
+ | [[postfix]] 設定は互換性を確保するために拡張する必要があります ([https://mailman.readthedocs.io/en/latest/src/mailman/docs/mta.html#basic-postfix-connections アップストリームのメモ] を参照) |
||
− | {{ic|transports}} セクション: |
||
+ | {{hc|/etc/postfix/main.cf| |
||
− | {{bc|1= |
||
+ | <nowiki> |
||
− | mailman_transport: |
||
+ | [..] |
||
− | driver = pipe |
||
+ | recipient_delimiter = + |
||
− | user = mailman |
||
+ | unknown_local_recipient_reject_code = 550 |
||
− | group = mailman |
||
+ | owner_request_special = no |
||
− | home_directory = /usr/lib/mailman |
||
+ | [..] |
||
− | current_directory = /usr/lib/mailman |
||
+ | </nowiki> |
||
− | command = /usr/lib/mailman/mail/mailman '${if def:local_part_suffix {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}}{post}}' $local_part |
||
}} |
}} |
||
+ | さらに、[[postfix]] は mailman の [https://mailman.readthedocs.io/en/latest/src/mailman/docs/mta.html#transport-maps トランスポートマップ] を認識する必要があります。postfix の設定に応じて、これらは次のようになります。 |
||
− | == ウェブサーバーの設定 == |
||
+ | {{Note| 次の例では、{{ic|transport_maps}}、{{ic|local_recipient_maps}}、{{ic|relay_domains}}、{{ic|virtual_mailbox_domains}}、および {{ic|virtual_alias_maps}} の既存の値がマージされることを前提としています。追加の値。}} |
||
− | === Nginx === |
||
+ | {{hc|/etc/postfix/main.cf| |
||
− | Nginx のインストールと設定については、[[Nginx]] を見て下さい。Mailman のウェブインターフェイスは CGI を使います。以下の設定では Nginx と {{Ic|fcgiwrap}} を使います。詳しくは [[Nginx#CGI を動かす]] を参照。 |
||
+ | <nowiki> |
||
+ | [..] |
||
+ | transport_maps = hash:/var/lib/mailman/data/postfix_lmtp |
||
+ | local_recipient_maps = hash:/var/lib/mailman/data/postfix_lmtp |
||
+ | relay_domains = hash:/var/lib/mailman/data/postfix_domains |
||
+ | [..] |
||
+ | </nowiki> |
||
+ | }} |
||
+ | デフォルトのハッシュベースのエイリアスマップを作成するために mailman が {{ic|postmap}} に直接アクセスできない場合は、代わりに正規表現ベースのエイリアスマップを生成します。 |
||
− | ドメインごとに {{ic|/etc/nginx/nginx.conf}} に以下の設定を記述 (例: ''a.org''): |
||
+ | デフォルトの Python クラスベースの設定を上書きするために、mailman は設定ファイルの使用を許可します。次のファイルを作成します。 |
||
+ | {{hc|/etc/postfix-mailman.cfg| |
||
− | {{bc|1= |
||
+ | [postfix] |
||
− | server { |
||
+ | postmap_command: /usr/bin/postmap |
||
− | server_name lists.a.org; |
||
+ | transport_file_type: regex |
||
− | root /usr/lib/mailman/cgi-bin; |
||
+ | }} |
||
+ | このファイルを mailman の設定ファイルの {{ic|[mta]}} セクションに追加します。 |
||
− | location = / { |
||
− | rewrite ^ /listinfo permanent; |
||
− | } |
||
+ | {{hc|/etc/mailman.cfg| |
||
− | location / { |
||
+ | [mta] |
||
− | fastcgi_split_path_info ^(/[^/]*)(.*)$; |
||
+ | ''[..]'' |
||
− | fastcgi_pass unix:/run/fcgiwrap.sock; |
||
+ | configuration: /etc/postfix-mailman.cfg |
||
− | include fastcgi.conf; |
||
+ | }} |
||
− | fastcgi_param PATH_INFO $fastcgi_path_info; |
||
− | fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; |
||
− | } |
||
+ | その後、{{ic|regexp}} ベースのエクスポートを [[postfix]] 設定で使用できるようになります。 |
||
− | location /icons { |
||
− | alias /usr/lib/mailman/icons; |
||
− | } |
||
+ | {{hc|/etc/postfix/main.cf| |
||
− | location /archives { |
||
+ | <nowiki> |
||
− | alias /var/lib/mailman/archives/public; |
||
+ | [..] |
||
− | autoindex on; |
||
+ | transport_maps = regexp:/var/lib/mailman/data/postfix_lmtp |
||
− | } |
||
+ | local_recipient_maps = regexp:/var/lib/mailman/data/postfix_lmtp |
||
− | |||
+ | relay_domains = regexp:/var/lib/mailman/data/postfix_domains |
||
− | } |
||
+ | [..] |
||
+ | </nowiki> |
||
}} |
}} |
||
+ | {{Note| タイプを変更した後(例: {{ic|hash}} から {{ic|regexp}} へ)、必ず新しいエイリアスマップを作成してください: {{ic|[mailman]$ mailman aliases}}}} |
||
− | {{Note|Nginx は {{ic|user}} http と {{ic|group}} http で動作させないと Mailman はエラーを吐きます。{{ic|/etc/nginx/conf/nginx.conf}} の {{ic|user}} ディレクティブを次のように定義されていることを確認してください ({{Ic|html}} ブロックの外側): {{ic|user http http;}}。}} |
||
− | |||
− | === Lighttpd === |
||
− | |||
− | server.modules = ("mod_rewrite", |
||
− | "mod_cgi") |
||
− | |||
− | url.rewrite = ( "^/$" => "/listinfo" ) |
||
− | alias.url = ( |
||
− | "/icons" => "/usr/lib/mailman/icons", |
||
− | "/archives" => "/var/lib/mailman/archives/public" |
||
− | ) |
||
− | |||
− | cgi.assign = ( |
||
− | "/usr/lib/mailman/cgi-bin/admin" => "", |
||
− | "/usr/lib/mailman/cgi-bin/admin/" => "", |
||
− | "/usr/lib/mailman/cgi-bin/admindb" => "", |
||
− | "/usr/lib/mailman/cgi-bin/admindb/" => "", |
||
− | "/usr/lib/mailman/cgi-bin/confirm" => "", |
||
− | "/usr/lib/mailman/cgi-bin/confirm/" => "", |
||
− | "/usr/lib/mailman/cgi-bin/create" => "", |
||
− | "/usr/lib/mailman/cgi-bin/create/" => "", |
||
− | "/usr/lib/mailman/cgi-bin/edithtml" => "", |
||
− | "/usr/lib/mailman/cgi-bin/edithtml/" => "", |
||
− | "/usr/lib/mailman/cgi-bin/listinfo" => "", |
||
− | "/usr/lib/mailman/cgi-bin/listinfo/" => "", |
||
− | "/usr/lib/mailman/cgi-bin/options" => "", |
||
− | "/usr/lib/mailman/cgi-bin/options/" => "", |
||
− | "/usr/lib/mailman/cgi-bin/private" => "", |
||
− | "/usr/lib/mailman/cgi-bin/private/" => "", |
||
− | "/usr/lib/mailman/cgi-bin/rmlist" => "", |
||
− | "/usr/lib/mailman/cgi-bin/rmlist/" => "", |
||
− | "/usr/lib/mailman/cgi-bin/roster" => "", |
||
− | "/usr/lib/mailman/cgi-bin/roster/" => "", |
||
− | "/usr/lib/mailman/cgi-bin/subscribe" => "", |
||
− | "/usr/lib/mailman/cgi-bin/subscribe/" => "" |
||
− | ) |
||
− | |||
− | $HTTP["host"] =~ "(^|\.)lists.a.org$" { |
||
− | server.document-root = "/usr/lib/mailman/cgi-bin/" |
||
− | server.errorlog = "/var/log/lighttpd/lists.a.org_error.log" |
||
− | accesslog.filename = "/var/log/lighttpd/lists.a.org_access.log" |
||
− | } |
||
− | |||
− | === Apache === |
||
− | |||
− | 以下の行を {{ic|/etc/mailman/mm_cfg.py}} に追加してください: |
||
− | |||
− | {{ic|IMAGE_LOGOS = '/mailman-icons/'}} |
||
− | |||
− | lists.a.org の作成にはバーチャルホストの作成も含まれます。{{ic|httpd.conf}} を編集するかわりに以下の設定をバーチャルホストの定義に移動すると良いでしょう。 |
||
− | |||
− | {{ic|/etc/httpd/conf/httpd.conf}} を編集して以下のスニペットを追加してください: |
||
− | |||
− | {{bc| |
||
− | <IfModule alias_module> |
||
− | Alias /mailman-icons/ "/usr/lib/mailman/icons/" |
||
− | Alias /archives/ "/var/lib/mailman/archives/public/" |
||
− | ScriptAlias /lists/ "/usr/lib/mailman/cgi-bin/" |
||
− | ScriptAlias / "/usr/lib/mailman/cgi-bin/listinfo" |
||
− | </IfModule> |
||
− | |||
− | <Directory "/usr/lib/mailman/cgi-bin/"> |
||
− | AllowOverride None |
||
− | Options Indexes FollowSymlinks ExecCGI |
||
− | Require all granted |
||
− | </Directory> |
||
+ | [[Postfix#Virtual_mail|仮想メール]] セットアップを使用してローカルの [[postfix]] インスタンスに接続するには、まず [[Postorius#Set_an_Alias_Domain|エイリアス ドメインを設定]] します。その後、それぞれの設定を変更します。 |
||
− | <Directory "/usr/lib/mailman/icons/"> |
||
− | Require all granted |
||
− | </Directory> |
||
+ | {{hc|/etc/postfix/main.cf| |
||
− | <Directory "/var/lib/mailman/archives/public/"> |
||
+ | <nowiki> |
||
− | Require all granted |
||
+ | [..] |
||
− | </Directory> |
||
+ | local_recipient_maps = regexp:/var/lib/mailman/data/postfix_lmtp |
||
+ | transport_maps = regexp:/var/lib/mailman/data/postfix_lmtp |
||
+ | virtual_mailbox_domains = regexp:/var/lib/mailman/data/postfix_domains |
||
+ | virtual_alias_maps = regexp:/var/lib/mailman/data/postfix_vmap |
||
+ | [..] |
||
+ | </nowiki> |
||
}} |
}} |
||
+ | == 起動 == |
||
− | httpd [[systemd]] サービスを再起動してください。 |
||
+ | {{ic|mailman3.service}} を [[有効化]] して [[起動]] します。 |
||
− | == その後の設定 == |
||
+ | タイマーを備えた [[systemd]] サービスがいくつか存在し、リスト管理のさまざまな側面を処理します。 |
||
− | === Site-wide メーリングリスト === |
||
+ | * {{ic|mailman3-digests.timer}}: 毎日のダイジェストを購読者に送信するため |
||
− | Mailman が正しく動作するために必要なリストを作成するために、以下のコマンドを実行 (パスワードリマインダーなどに使われます): |
||
+ | * {{ic|mailman3-gatenews.timer}}: ニュースに関する [[Wikipedia:ja:Network News Transfer Protocol|NNTP]] サーバーの時間ごとのポーリング用 |
||
− | # /usr/lib/mailman/bin/newlist mailman |
||
+ | * {{ic|mailman3-notify.timer}}: 保留中のリクエストに関する通知を管理者に毎日送信するため |
||
− | デフォルトドメインで "mailman" という名前のリストが作成されます (例: ''mailman@a.org'')。他のドメインでも作成する必要はありません (''b.org'' や ''c.org'')。 |
||
+ | == セットアップ == |
||
− | 後でサイトリストを購読するようにしてください。 |
||
− | === |
+ | === メールサーバとの統合 === |
+ | === Hyperkitty との統合 === |
||
− | 定期的に実行される Mailman の機能があるため、[[systemd/タイマー|タイマー]]を設定して適切なプログラムを適切な時に実行させる必要があります: |
||
− | # cd /usr/lib/systemd/system |
||
− | # for X in mailman-*.timer ; do systemctl enable $X && systemctl start $X ; done |
||
+ | Mailman は、それ自体ではメールを自動的にアーカイブしません。[[Hyperkitty]] Web アプリケーションはこの目的に使用されます。 プラグインに基づいて、mailman はアーカイブのために [[Hyperkitty]] インスタンスにメールを送信できます。 |
||
− | === Mailman の起動 === |
||
+ | {{Pkg|mailman3-hyperkitty}} パッケージを [[インストール]] し、{{ic|/etc/mailman-hyperkitty.cfg}} を設定します。 |
||
− | [[systemd#ユニットを使う|systemctl]] で {{ic|mailman}} が起動されるまで、Mailman は処理を開始してメールを送ることはありません。 |
||
+ | {{hc|/etc/mailman-hyperkitty.cfg| |
||
− | 何か問題が発生したら、より多くの情報を出力させることでトラブルシューティングに役立ちます: |
||
+ | [general] |
||
− | # /usr/lib/mailman/bin/mailmanctl start |
||
+ | base_url: https://example.tld/hyperkitty/ |
||
+ | api_key: super_secret_password |
||
+ | }} |
||
+ | その後、mailman にプラグインを認識させます。 |
||
− | === パスワードの作成 === |
||
− | コマンドラインから作成できるパスワードは2つ存在します。1番目のパスワードはどこでも使えるパスワードであるジェネラルパスワード (サイトパスワード) です。サイトパスワードは全てのリストの管理者ページに入ることができ、どのユーザーでもログインできます。 |
||
+ | {{hc|/etc/mailman.cfg| |
||
− | 2番目のパスワードはリストクリエイターパスワードです。サイトパスワードのような全ての権限を与える代わりに、新しいメーリングリストを作成する権限を与えることができます。サイトパスワードを持っていれば新しいメーリングリストを作ることもできますが、リストクリエイターパスワードはリストの作成だけに権限が制限されています。 |
||
+ | [archiver.hyperkitty] |
||
− | |||
+ | class: mailman_hyperkitty.Archiver |
||
− | ジェネラルパスワードを設定するには、以下のコマンドを実行: |
||
+ | enable: yes |
||
− | # /usr/lib/mailman/bin/mmsitepass <general-password> |
||
+ | configuration: /etc/mailman-hyperkitty.cfg |
||
− | リストクリエイターパスワードを設定するには、以下のコマンドを実行: |
||
+ | }} |
||
− | # /usr/lib/mailman/bin/mmsitepass -c <list-creator-password> |
||
− | リストクリエイターパスワードは必ずしも設定する必要はありませんが、ジェネラルパスワードは設定してください。 |
||
− | |||
− | == Mailman を使う == |
||
− | |||
− | リストを管理 (リストを作成・設定、ユーザーを管理など) するときはウェブインターフェイスを使います。それぞれのドメインごとに別々のインターフェイスが作られます。例えば、組織 "a" の URL は ''http://lists.a.org'' という具合です。 |
||
− | |||
− | コマンドラインから Mailman を管理することもできます。例えばリストを作成するには: |
||
− | # newlist --urlhost=lists.b.org --emailhost=b.org list_name |
||
− | |||
− | == Mailman 3 == |
||
− | |||
− | Mailman 3 はモジュール形式で設計されています: |
||
− | |||
− | * {{AUR|mailman-core}} (または {{AUR|mailman-core-git}}) は Mailman のコアコンポーネントを提供します。 |
||
− | * {{AUR|python2-django-postorius}} (または {{AUR|python2-django-postorius-git}}) は Mailman の管理インターフェイスを提供します。 |
||
− | * {{AUR|python2-django-hyperkitty}} (または {{AUR|python2-django-hyperkitty-git}}) はメーリングリストのアーカイブのインターフェイスです。 |
||
− | * {{AUR|python-mailmanclient}} と {{AUR|python2-mailmanclient}} は Mailman の REST API の python バインディングを提供します。 |
||
− | * {{AUR|python-mailman-hyperkitty-plugin}} はメールを hyperkitty に転送するのに使われるプラグインです。 |
||
− | |||
− | postorius や hyperkitty をデプロイするには django が必要になります。{{AUR|mailman-suite-git}}{{Broken package link|パッケージが存在しません}} にデプロイするのに使える django のプロジェクトスケルトンが入っています。付属している README.md を読んで postorius や hyperkitty をデプロイしてください。 |
||
− | |||
− | mailman-core は {{ic|/var/lib/mailman/var/etc/mailman.cfg}} で設定でき、次のコマンドで起動できます: |
||
+ | == ヒントとテクニック == |
||
− | # systemctl start mailman.service |
||
+ | === mailman 3.0 未満からのマイグレート === |
||
− | 詳しくはプロジェクトの公式ドキュメントを参照してください。 |
||
+ | Mailman は、mailman < 3.0 ベースのリストデータベース ({{ic|config.pck}}) をインポートする機能を提供します。 {{ic|mailman}} ユーザーとして次のコマンドを実行します (例: [[sudo]] または [[su]] を使用。) |
||
− | == トラブルシューティング == |
||
+ | [mailman]$ mailman import21 ''LISTSPEC'' ''PICKLE_FILE'' |
||
− | '''check_perms''' スクリプトを実行してパーミッションがグループの所有権が正しいことを確認してください: |
||
− | # /usr/lib/mailman/bin/check_perms |
||
− | 何か問題が表示される場合、手動で修正するか、同じプログラムを使用して修正してください (後者のほうが簡単です): |
||
− | # /usr/lib/mailman/bin/check_perms -f |
||
− | エラーが全く表示されなくなるまで上のコマンドを繰り返し実行してください。 |
||
+ | ここで、{{ic|''LISTSPEC''}} はインポートするリストの完全修飾名 (例: {{ic|list@example.com}}) を表し、{{ic|''PICKLE_FILE''}} はインポートするリストの完全修飾名を表し、{{ic|config.pck}} は、リストのファイルへのパスを表します。 |
||
− | === Postfix === |
||
+ | {{Note|インポートされる mailman2 リストは、ターゲットの mailman インスタンスにすでに存在している必要があります。}} |
||
− | {{ic|/var/lib/mailman/data/}} にある以下のファイルの所有者と所有ユーザーが ''mailman'' となっておりグループに書き込み権限が与えられていることを確認してください: |
||
− | * aliases.db |
||
− | * aliases |
||
− | * virtual-mailman |
||
− | * virtual-mailman.db |
||
− | === |
+ | === REST API === |
+ | Mailman は [https://mailman.readthedocs.io/en/latest/src/mailman/rest/docs/rest.html#the-rest-server REST API] を公開しています。これは、{{Pkg|python-mailmanclient}} をベースにしたスタムツールを使用できます。 |
||
− | http://www.divideandconquer.se/2009/08/17/convert-mailman-translation-to-utf-8. |
||
== 参照 == |
== 参照 == |
||
+ | * [https://mailman.readthedocs.io/en/latest/ Mailman Documentation] - ドキュメント |
||
− | * [http://list.org/mailman-install/index.html GNU Mailman インストールマニュアル] |
||
+ | * [https://mailmanclient.readthedocs.io/en/latest/ Mailmanclient Documentation] - 上流のドキュメント |
||
+ | * [https://hyperkitty.readthedocs.io/en/latest/install.html#connecting-to-mailman Connecting to Mailman] - {{Pkg|mailman3-hyperkitty}} に関するアップストリームのドキュメント |
||
+ | * [https://docs.mailman3.org/en/latest/ Mailman Suite Documentation] - Mailman スイート全体 (Mailman、Hyperkitty、Postorius) の (高レベルの) アップストリームドキュメント |
2023年10月28日 (土) 19:49時点における最新版
Mailman はメーリングリスト管理システムです。メールサーバーと組み合わせて使用します。
目次
インストール
Mailman は Postorius (設定用) と Hyperkitty (アーカイブ用)と一緒に使うことができます。
設定
Mailman の設定はすべて /etc/mailman.cfg
で行われます。全ての可能な設定オプションとデフォルトの設定を説明するスキーマは /usr/lib/python3.8/site-packages/mailman/config/schema.cfg
に格納されています。
また、コマンドラインからも設定にアクセスすることができます。mailman
ユーザーとして (例: sudo や su を使って) 以下のコマンドを実行します。
[mailman]$ mailman conf
データベース
Mailman はデフォルトで、/var/lib/mailman/data/ の SQLite データベース を使用します。
ですが、MariaDB または PostgreSQL を使用するように設定できます。
SQLite
SQLite データベースのデフォルトの場所はすでに schema.cfg
に反映されているため、Mailman で設定する必要はありません。
/etc/mailman.cfg
[database] url: sqlite:////var/lib/mailman/data/mailman.db
MariaDB
python-pymysql パッケージを インストール し、MariaDB にデータベースを設定します。
/etc/mailman.cfg
[database] class: mailman.database.mysql.MySQLDatabase url: mysql+pymysql://myuser:mypassword@mymysqlhost/mailman?charset=utf8&use_unicode=1
PostgreSQL
python-psycopg2 パッケージを インストール し、PostgreSQL を使用してデータベースを作成します。
/etc/mailman.cfg
[database] class: mailman.database.postgresql.PostgreSQLDatabase url: postgres://myuser:mypassword@mypghost/mailman
REST API
Mailman は、設定の [webservice]
セクションの設定に基づいて REST API を公開します。admin_user
と admin_pass
のデフォルト値を必ず置き換えてください (以下の例の値は使用しないでください)
/etc/mailman.cfg
[webservice] admin_user: my_new_admin_user_name admin_pass: my_new_admin_user_password
ARC
デフォルトでは、DMARC および DKIM は無効になっています。設定は、設定ファイルの [ARC]
セクションで行われます。必ず必要な値を設定し、デフォルトに関するドキュメントを読んでください。
/etc/mailman.cfg
[ARC] enabled: yes authserv_id: mailserver.tld trusted_authserv_ids: subdomain.mailserver.tld, other.mailserver.tld privkey: /path/to/privatekey.pem selector: test domain: mailserver.tld
MTA
メール転送エージェント (MTA) を接続するには、設定ファイルの [mta]
セクションを設定する必要があります。 アップストリームドキュメント では、postfix、exim、sendmail の例について説明していますが、その他の例も説明しています。 MTA は技術的には可能です。
Postfix
ローカル postfix インスタンスに接続するには、次の構成セクションを使用できます。
/etc/mailman.cfg
[mta] incoming: mailman.mta.postfix.LMTP outgoing: mailman.mta.deliver.deliver lmtp_host: mail.example.com lmtp_port: 8024 smtp_host: mail.example.com smtp_port: 25
postfix 設定は互換性を確保するために拡張する必要があります (アップストリームのメモ を参照)
/etc/postfix/main.cf
[..] recipient_delimiter = + unknown_local_recipient_reject_code = 550 owner_request_special = no [..]
さらに、postfix は mailman の トランスポートマップ を認識する必要があります。postfix の設定に応じて、これらは次のようになります。
/etc/postfix/main.cf
[..] transport_maps = hash:/var/lib/mailman/data/postfix_lmtp local_recipient_maps = hash:/var/lib/mailman/data/postfix_lmtp relay_domains = hash:/var/lib/mailman/data/postfix_domains [..]
デフォルトのハッシュベースのエイリアスマップを作成するために mailman が postmap
に直接アクセスできない場合は、代わりに正規表現ベースのエイリアスマップを生成します。
デフォルトの Python クラスベースの設定を上書きするために、mailman は設定ファイルの使用を許可します。次のファイルを作成します。
/etc/postfix-mailman.cfg
[postfix] postmap_command: /usr/bin/postmap transport_file_type: regex
このファイルを mailman の設定ファイルの [mta]
セクションに追加します。
/etc/mailman.cfg
[mta] [..] configuration: /etc/postfix-mailman.cfg
その後、regexp
ベースのエクスポートを postfix 設定で使用できるようになります。
/etc/postfix/main.cf
[..] transport_maps = regexp:/var/lib/mailman/data/postfix_lmtp local_recipient_maps = regexp:/var/lib/mailman/data/postfix_lmtp relay_domains = regexp:/var/lib/mailman/data/postfix_domains [..]
仮想メール セットアップを使用してローカルの postfix インスタンスに接続するには、まず エイリアス ドメインを設定 します。その後、それぞれの設定を変更します。
/etc/postfix/main.cf
[..] local_recipient_maps = regexp:/var/lib/mailman/data/postfix_lmtp transport_maps = regexp:/var/lib/mailman/data/postfix_lmtp virtual_mailbox_domains = regexp:/var/lib/mailman/data/postfix_domains virtual_alias_maps = regexp:/var/lib/mailman/data/postfix_vmap [..]
起動
mailman3.service
を 有効化 して 起動 します。
タイマーを備えた systemd サービスがいくつか存在し、リスト管理のさまざまな側面を処理します。
mailman3-digests.timer
: 毎日のダイジェストを購読者に送信するためmailman3-gatenews.timer
: ニュースに関する NNTP サーバーの時間ごとのポーリング用mailman3-notify.timer
: 保留中のリクエストに関する通知を管理者に毎日送信するため
セットアップ
メールサーバとの統合
Hyperkitty との統合
Mailman は、それ自体ではメールを自動的にアーカイブしません。Hyperkitty Web アプリケーションはこの目的に使用されます。 プラグインに基づいて、mailman はアーカイブのために Hyperkitty インスタンスにメールを送信できます。
mailman3-hyperkitty パッケージを インストール し、/etc/mailman-hyperkitty.cfg
を設定します。
/etc/mailman-hyperkitty.cfg
[general] base_url: https://example.tld/hyperkitty/ api_key: super_secret_password
その後、mailman にプラグインを認識させます。
/etc/mailman.cfg
[archiver.hyperkitty] class: mailman_hyperkitty.Archiver enable: yes configuration: /etc/mailman-hyperkitty.cfg
ヒントとテクニック
mailman 3.0 未満からのマイグレート
Mailman は、mailman < 3.0 ベースのリストデータベース (config.pck
) をインポートする機能を提供します。 mailman
ユーザーとして次のコマンドを実行します (例: sudo または su を使用。)
[mailman]$ mailman import21 LISTSPEC PICKLE_FILE
ここで、LISTSPEC
はインポートするリストの完全修飾名 (例: list@example.com
) を表し、PICKLE_FILE
はインポートするリストの完全修飾名を表し、config.pck
は、リストのファイルへのパスを表します。
REST API
Mailman は REST API を公開しています。これは、python-mailmanclient をベースにしたスタムツールを使用できます。
参照
- Mailman Documentation - ドキュメント
- Mailmanclient Documentation - 上流のドキュメント
- Connecting to Mailman - mailman3-hyperkitty に関するアップストリームのドキュメント
- Mailman Suite Documentation - Mailman スイート全体 (Mailman、Hyperkitty、Postorius) の (高レベルの) アップストリームドキュメント