GNU/MailManはメーリングリストの運営と管理を行うためのツールである。 Postfixとの親和性に優れ、比較的簡単に導入することができる。 特に、メーリングリストを新規に作成した際に、FMLなどでは必要であった、aliasesへの登録を自動で行ってくれる点は、運用上、非常に大きなポイントである。 また、管理をブラウザ経由で行うことができるため、管理・運用の敷居が低い。 日本語化もされており、この点も、運用する上でのメリットである。
パッケージなどがあればそれを利用するのが簡単であろう。 とはいえ、スクラッチからビルドする場合でも、それほど難しくはない。 詳細は日本語インストールガイドを参照されたい。
ここではPostfix、Python、Apache2が導入済みであるという前提で、以下に導入について簡単に触れる。
MailManの運用は、専用のユーザとグループで行うことが推奨されている。 rootなどの管理権限の強いユーザでの運用を避ける今風のスタイルである。
以下の要領でユーザとグループとを作っておく。
# groupadd mailman # useradd -c 'GNU MailMan' -s /bin/false -d /var/lib/mailman -m -g mailman mailman
ホームディレクトリはどこでもいいかと思うが、mailman のパッケージの導入先としても使いたいので、上記のようにするのがいいだろう。
運用のため、ホームディレクトリの権限と所有者を以下のようにしておく。
# chown -R mailman.mailman /var/lib/mailman # chmod -R a+rx,g+ws /var/lib/mailman
MailManはpythonを利用する関係で、dnspythonパッケージが必要となる。 パッケージがあればそれを、なければpipなどで導入する。
# apt install python-dns
または
# pip install dnspython
といった要領である。
ビルドとインストールは、多くのアプリケーションがそうであるように、configureとmakeである。
$ tar -zxf mailman-2.1.29.tgz $ cd mailman-2.1.29 $ ./configure --prefix=/var/lib/mailman $ make $ sudo make install
インストールがすんだら、インストールされているファイルやディレクトリの権限を確認し修正する。
$ cd /var/lib/mailman $ bin/check_perms
もしここで権限に関する問題が出たら、-f をつけてcheck_permを実行しこれを修正する。
$ sudo bin/check_perms -f
この処理は、管理権限のあるユーザで行う。
Postfix に関しては、main.cfに以下の設定を行う。
owner_request_special = no recipient_delimiter = + unknown_local_recipient_reject_code = 550 alias_maps = hash:/etc/postfix/aliases, hash:/var/lib/mailman/data/aliases
alias_mapsには既存のものに加えて hash:/var/lib/mailman/data/aliases を追記する。 これにより、管理画面から追加されたメーリングリストが自動的に配信対象となる。
/etc/apache2/conf.d/mailman.conf1) を以下の内容で作成する。
ScriptAlias /mailman/ /var/lib/mailman/cgi-bin/ Alias /pipermail/ /var/lib/mailman/archives/public/
まず、画像ファイルを適切な場所にコピーする。 例えば以下のようにする。
$ cp icons/*.{jpg,png} /var/www/icons
/var/www/icons が /icons という Locationにマップされているとする。 以下の内容を、MailMan/mm_cfg.py に記述する。
IMAGE_LOGOS = '/icons/' MTA = 'Postfix' DEFAULT_EMAIL_HOST = 'メールサーバー' DEFAULT_URL_HOST = 'ウェブサービスのURI' DEFAULT_URL_PATTERN = 'https://%s/mailman/' add_virtualhost(DEFAULT_URL_HOST, DEFAULT_URL_HOST) DEFAULT_SERVER_LANGUAGE = 'ja'
起動用のスクリプトをコピーして、登録する。
# cp scripts/mailman /etc/init.d # chkconfig --add mailman # service mailman start
MailManはダイジェストの送信などをcronで行うので、この登録を行う。
# crontab -u mailman cron/crontab.in
管理用パスワードには、サイトパスワードとリスト作成用パスワードの二種類がある。 リスト作成用パスワードはMLを作成する権限のみがあり、サイトパスワードはこれを包含しているため、サイトパスワードだけを作成しても運用上問題はない。
複数人で管理を行い、MLの作成権限のみを分与したい場合に、リスト作成用パスワードを作成すればいいだろう。
パスワードは、それぞれ以下のコマンドで作成する。
サイトパスワード:
$ bin/mmsitepass
リスト作成用パスワード:
$ bin/mmsitepass -c
管理は基本的にはブラウザ経由で行う。2)
http://<mm_cfg.pyに設定したURI>/mailman/admin
管理画面の言語は、mm_cfg.py のDEFAULT_SERVER_LANGUAGEに従う。