「Mailman」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(Pkg/AUR テンプレートの更新)
(→‎参照: 翻訳)
 
(2人の利用者による、間の13版が非表示)
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 の設定 ==
+
== 設定 ==
   
  +
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 = +
 
}}
 
   
=== Exim ===
+
==== 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}&#125;&#125;{post&#125;&#125;' $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 &#61; '/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}}{{Broken package link|置換パッケージ: {{Pkg|mailman3}}}} (または {{AUR|mailman-core-git}}) は Mailman のコアコンポーネントを提供します。
 
* {{AUR|python2-django-postorius}}{{Broken package link|パッケージが存在しません}} (または {{AUR|python2-django-postorius-git}}{{Broken package link|パッケージが存在しません}}) は Mailman の管理インターフェイスを提供します。
 
* {{AUR|python2-django-hyperkitty}}{{Broken package link|パッケージが存在しません}} (または {{AUR|python2-django-hyperkitty-git}}{{Broken package link|パッケージが存在しません}}) はメーリングリストのアーカイブのインターフェイスです。
 
* {{Pkg|python-mailmanclient}} と {{AUR|python2-mailmanclient}}{{Broken package link|パッケージが存在しません}} は Mailman の REST API の python バインディングを提供します。
 
* {{AUR|python-mailman-hyperkitty-plugin}}{{Broken package link|置換パッケージ: {{Pkg|mailman3-hyperkitty}}}} はメールを 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
 
   
=== UTF-8 ===
+
=== 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 はメーリングリスト管理システムです。メールサーバーと組み合わせて使用します。

インストール

mailman3 パッケージをインストールします。

ノート: mailman3 は近い将来 mailman に置き換わる予定です。両方のアプリケーションが /var/lib/mailman をステートディレクトリ、mailman ユーザーとして使うので、現在衝突していて、一緒にインストールすることはできません。

Mailman は Postorius (設定用) と Hyperkitty (アーカイブ用)と一緒に使うことができます。

ノート: Mailman は専用の mailman ユーザーとして実行されます。したがって、mailman 実行ファイルは、mailman ユーザーとして実行する必要があります。

設定

Mailman の設定はすべて /etc/mailman.cfg で行われます。全ての可能な設定オプションとデフォルトの設定を説明するスキーマは /usr/lib/python3.8/site-packages/mailman/config/schema.cfg に格納されています。

また、コマンドラインからも設定にアクセスすることができます。mailman ユーザーとして (例: sudosu を使って) 以下のコマンドを実行します。

[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_useradmin_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] セクションを設定する必要があります。 アップストリームドキュメント では、postfixeximsendmail の例について説明していますが、その他の例も説明しています。 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 の設定に応じて、これらは次のようになります。

ノート: 次の例では、transport_mapslocal_recipient_mapsrelay_domainsvirtual_mailbox_domains、および virtual_alias_maps の既存の値がマージされることを前提としています。追加の値。
/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
[..]

ノート: タイプを変更した後(例: hash から regexp へ)、必ず新しいエイリアスマップを作成してください: [mailman]$ mailman aliases

仮想メール セットアップを使用してローカルの 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 は、リストのファイルへのパスを表します。

ノート: インポートされる mailman2 リストは、ターゲットの mailman インスタンスにすでに存在している必要があります。

REST API

Mailman は REST API を公開しています。これは、python-mailmanclient をベースにしたスタムツールを使用できます。

参照