従来は直接aliasを書き換えていたが、ML管理作業の負担を軽減するために Mailman を導入してみた。

インストール

aptで入れるだけだが、Mailman は元々 EUC-JP の環境で開発されていたので、コンソールの日本語文字コードが UTF-8 だとインストール時の設定がうまく設定されない。
仕方がないので、一時的に LANG=C として英語モードでインストールする。

$ export LANG=C
$ sudo apt-get install mailman
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  pwgen
Suggested packages:
  spamassassin lynx listadmin
The following NEW packages will be installed:
  mailman pwgen
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/9670 kB of archives.
After this operation, 33.5 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
mailman-setup01.jpg

サポートする言語で英語と日本語を指定する。

mailman-setup02.jpg

デフォルトの言語は日本語を指定。

mailman-setup03.jpg

newlist mailmanを実行するようメッセージが出るので、指示に従う。(ただし、サーバ移行の場合はしなくていよい?)

mailman-setup04.jpg

英語環境にしておけば日本語もインストールされると思ったが、Ubuntu 12.04 では英語しかインストールされなかった。

Looking for enabled languages (this may take some time) ... done.
Installing site language en ............................................ done.
Configuring mailman for domain hostname.domainname ...
Upgrading from version 0x0 to 0x2010ef0
getting rid of old source files
 * Site list for mailman missing (looking for list named 'mailman').
 * Please create it; until then, mailman will refuse to start.

仕方がないので、dpkg-reconfigure で再度日本語を指定してインストールした。

$ sudo dpkg-reconfigure mailman
 * Stopping Mailman master qrunner mailmanctl                                   PID unreadable in: /var/run/mailman/mailman.pid
[Errno 2] No such file or directory: '/var/run/mailman/mailman.pid'
Is qrunner even running?
                                                                         [ OK ]
Looking for enabled languages (this may take some time) ... done.
Installing site language en ............................................ done.
Installing site language ja ............................................ done.
No updates are necessary.
 * Site list for mailman missing (looking for list named 'mailman').
 * Please create it; until then, mailman will refuse to start.

/etc/mailman ディレクトリに ja ディレクトリができていればOK。

$ ls -al /etc/mailman
total 40
drwxr-xr-x   4 root list 4096 May 11 06:40 .
drwxr-xr-x 100 root root 4096 May 11 06:39 ..
-rw-r--r--   1 root root 2477 Oct 19  2011 apache.conf
drwxr-xr-x   2 root root 4096 May 11 06:39 en
drwxr-xr-x   2 root root 4096 May 11 06:40 ja
-rw-r--r--   1 root root    0 May 11 06:40 leftover
-rw-r--r--   1 root root 4388 May 11 06:40 mm_cfg.py
-rwxr-xr-x   1 root root 6240 Oct 19  2011 postfix-to-mailman.py
-rwxrwxr-x   1 root root 4090 Oct 19  2011 qmail-to-mailman.py

設定

初期設定

ターミナルの文字コードがUFT-8だと文字化けするので、端末の文字コードをEUC-JPに変更するか、環境変数LANGをCに変更する。オプションを付けずに実行するとチェックだけする。

$ export LANG=C
$ sudo check_perms
directory must be at least 02775: /var/lib/mailman/logs
/var/lib/mailman/pythonlib bad group (has: root, expected list)
/var/lib/mailman/cron bad group (has: root, expected list)

中略

directory permissions must be 02775: /var/lib/mailman/messages/ar/LC_MESSAGES
directory permissions must be 02775: /var/lib/mailman/messages/it/LC_MESSAGES
Problems found: 77
Re-run as list (or root) with -f flag to fix

設定を変更するには、-f オプションをつけて実行する。

$ sudo check_perms -f
directory must be at least 02775: /var/lib/mailman/logs (fixing)
/var/lib/mailman/pythonlib bad group (has: root, expected list) (fixing)
/var/lib/mailman/cron bad group (has: root, expected list) (fixing)

中略

directory permissions must be 02775: /var/lib/mailman/messages/ar/LC_MESSAGES (fixing)
directory permissions must be 02775: /var/lib/mailman/messages/it/LC_MESSAGES (fixing)
Problems found: 77
Re-run as list (or root) with -f flag to fix

Mailmanの管理パスワードの設定

ターミナルの文字コードがUFT-8だと文字化けするので、環境変数LANGをCに変更してから、コマンドを実行する。

$ export LANG=C
$ sudo mmsitepass
New site password:		←Mailman管理用のパスワードを入力する
Again to confirm password:	←同じパスワードをもう一度入力する
Password changed.

/var/lib/mailman/data/adm.pw ファイルが作成される。

/etc/mailman/mm_cfg.pyの編集

$ diff -Nur /tmp/mm_cfg.py.orig /etc/mailman/mm_cfg.py
--- /tmp/mm_cfg.py.orig 2009-01-11 16:33:21.000000000 +0900
+++ /etc/mailman/mm_cfg.py      2009-01-11 14:31:11.000000000 +0900
@@ -57,8 +57,8 @@
 #-------------------------------------------------------------
 # If you change these, you have to configure your http server
 # accordingly (Alias and ScriptAlias directives in most httpds)
-DEFAULT_URL_PATTERN = 'http://%s/cgi-bin/mailman/'
-PRIVATE_ARCHIVE_URL = '/cgi-bin/mailman/private'
+DEFAULT_URL_PATTERN = 'https://%s/mailman/'
+PRIVATE_ARCHIVE_URL = '/pipermail'
 IMAGE_LOGOS         = '/images/mailman/'

 #-------------------------------------------------------------
@@ -92,7 +92,7 @@
 #-------------------------------------------------------------
 # Uncomment if you use Postfix virtual domains, but be sure to
 # see /usr/share/doc/mailman/README.Debian first.
-# MTA='Postfix'
+MTA='Postfix'

 #-------------------------------------------------------------
 # Uncomment if you want to filter mail with SpamAssassin. For
@@ -102,3 +102,12 @@

 # Note - if you're looking for something that is imported from mm_cfg, but you
 # didn't find it above, it's probably in /usr/lib/mailman/Mailman/Defaults.py.
+
+##################################################
+# Put YOUR site-specific settings below this line.
+DEFAULT_LIST_ADVERTISED = No
+OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes
+DEFAULT_SUBJECT_PREFIX = "[%(real_name)s:%%d] "
+DEFAULT_REPLY_GOES_TO_LIST = 1
+DEFAULT_NEW_MEMBER_OPTIONS = 258
+DEFAULT_GENERIC_NONMEMBER_ACTION = 2

aliasesの設定

/etc/aliases

root や postmaster 宛などのメールの配送先を指定する。また、Mailman はユーザ list の権限で実行されるので、list 宛にもエラーメールが送信されるため、list 宛のメールもどこか実アドレスに配送されるよう指定するとよいかも。その他のエイリアスもこのファイルに記述する。

root:		hoge@hogehoge
postmaster:	root
list:		kore@korekore
test:		hoge@hogehoge

ファイルを変更したら、手動で反映させる。

$ sudo newaliases

Mailman 用

他のディストリビューションでは /etc/mailman ディレクトリ以下に aliasesファイルが作成されるが、Ubuntu では /var/lib/mailma//data ディレクトリ以下に作成されるので注意。

$ sudo chmod 0664 /var/lib/mailman/data/aliases.db
$ sudo /usr/lib/mailman/bin/genaliases
$ sudo chown list:list /var/lib/mailman/data/aliases*
$ ls -al /var/lib/mailman/data
total 48
drwxrwsr-x 2 root list  4096 Jan 11 14:45 .
drwxrwsr-x 9 root list  4096 Jan 10 09:00 ..
-rw-r----- 1 root list    41 Jan 11 14:13 adm.pw
-rw-rw---- 1 list list   355 Jan 11 15:18 aliases
-rw-rw-r-- 1 list list 12288 Jan 11 15:18 aliases.db
-rw-rw-r-- 1 root list    10 Jan 10 09:01 last_mailman_version
-rw-r--r-- 1 root list 14114 Mar  7  2008 sitelist.cfg

/etc/postfix/main.cfの変更

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
	↓
alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases
alias_database = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases

Postfixを再起動する。

# /etc/rc.d/init.d/postfix restart ← Postfix再起動

Apache2の設定

Mailmanで提供されている設定ファイルを一部変更して Apache2 を再起動する。

$ sudo cp /etc/mailman/apache.conf /etc/apache2/conf.d/mailman
$ sudo vi /etc/apache2/conf.d/mailman
$ sudo /etc/init.d/apache2 force-reload
  • /etc/apache2/conf.d/mailman
    $ diff -Nur /etc/mailman/apache.conf /etc/apache2/conf.d/mailman
    --- /etc/mailman/apache.conf    2008-03-07 14:21:59.000000000 +0900
    +++ /etc/apache2/conf.d/mailman 2009-01-11 16:00:45.000000000 +0900
    @@ -10,13 +10,14 @@
     # Use this if you don't want the "cgi-bin" component in your URL:
     # In case you want to access mailman through a shorter URL you should enable
     # this:
    -#ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/
    +ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/
     # In this case you need to set the DEFAULT_URL_PATTERN in
     # /etc/mailman/mm_cfg.py to http://%s/mailman/ for the cookie
     # authentication code to work.  Note that you need to change the base
     # URL for all the already-created lists as well.
    
     <Directory /usr/lib/cgi-bin/mailman/>
    +    SSLRequireSSL
         AllowOverride None
         Options ExecCGI
         AddHandler cgi-script .cgi
    

管理用ページは SSL 経由でアクセスさせたいので、/mailman/ 以下も強制的に https: にリダイレクトするように設定する。詳しくは、http → https へリダイレクトする を参照のこと。

  • /etc/apache2/sites-available/default
    $ diff -Nur /tmp/default /etc/apache2/sites-available/default
    --- /tmp/default        2009-01-11 16:12:23.000000000 +0900
    +++ /etc/apache2/sites-available/default        2009-01-11 15:56:21.000000000 +0900
    @@ -11,6 +11,7 @@
     #              RewriteLogLevel 9
                    RewriteCond %{SERVER_PORT} !^443$
                    RewriteRule ^/webmail/(.*)$ https://%{HTTP_HOST}/webmail/$1 [R]
    +               RewriteRule ^/mailman/(.*)$ https://%{HTTP_HOST}/mailman/$1 [R]
                    RewriteRule ^/roundcubemail-0.2-stable/(.*)$ https://%{HTTP_HOST}/webmail/$1 [R,L]
            </IfModule>
    
    

めもめも

$ sudo /etc/init.d/postfix restart
 * Stopping Postfix Mail Transport Agent postfix                         [ OK ]
 * Starting Postfix Mail Transport Agent postfix                         [ OK ]

$ sudo cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman
$ sudo vi /etc/apache2/sites-available/mailman
$ sudo vi /etc/apache2/sites-available/default
$ sudo a2ensite mailman
Enabling site mailman.
To activate the new configuration, you need to run:
  service apache2 reload
$ sudo service apache2 reload
 * Reloading web server config apache2                                   [ OK ]

ML の作成

ML の管理

ML の削除

https://サーバー名/mailman/rmlist/ML名 にアクセスする
※httpsでアクセスすること

サーバの移行

サーバの入れ替えなどで Mailman を別マシンで稼働させるには、Mailman で利用されるファイルを新マシンにコピーし、設定もコピーすればよい。

データファイルのコピー

Mailman で利用されるファイルは、/var/lib/mailman ディレクトリ中の

archive/*
lists/*
data/adm.pw
data/aliases
data/aliases.db

である。

まずは、移行元のサーバで mailman のデーモンを停止し、データのバックアップを取る。

$ sudo /etc/init.d/mailman stop
 * Stopping Mailman master qrunner mailmanctl                            [ OK ]
$ cd /var/lib/mailman
$ sudo tar czvf /tmp/mailman-backup-`date +%Y%m%d`.tar.gz archives lists data/a*

バックアップしたファイルを scp などで移行先のサーバへコピーして、展開する。

$ sudo tar zxvfp mailman-backup-20120511.tar.gz -C /var/lib/mailman

設定ファイルのコピー

あとは、新規インストールと同じ手順で /etc/mailman/mm_cfg.pyの編集  → aliasesの設定  → Apache2の設定 と作業する。

既存MLの設定の変更

各MLの設定は、/var/lib/mailman/lists/(ML名)/config.pck に保存されている。設定ファイルに埋まっているサイトの URL が変更されないため、URL が違うために,投稿が保留されたメールの承認などができなくなった.

config.pck はバイナリファイルなのでエディタで直接編集できない。内容を閲覧するには /usr/lib/mailman/bin/dumpdb コマンドを用いる。

#highlighter(){{
$ sudo /usr/lib/mailman/bin/dumpdb /var/lib/mailman/lists/(ML名)/config.pck
[----- start pickle file -----]
<----- start object 1 ----->
{ 'accept_these_nonmembers': [],
'acceptable_aliases': '\n',
'admin_immed_notify': True,

<中略>

'volume': 1,
'web_page_url': 'http://dobokupc4.bio.mie-u.ac.jp/mailman/',
'welcome_msg': ''}
[----- end pickle file -----]
}} 上の例では、web_page_url が https:// になっていないので、/usr/lib/mailman/bin/withlist コマンドを用いて編集する。

#highlighter(){{
$ sudo /usr/lib/mailman/bin/withlist -l -i ML名
Loading list mietsuru (locked)
The variable `m' is the mietsuru MailList instance
>>> m.web_page_url
'http://dobokupc4.bio.mie-u.ac.jp/mailman/'
>>> m.web_page_url='https://dobokupc4.bio.mie-u.ac.jp/mailman/'
>>> m.Save
<bound method MailList.Save of <mailing list "mietsuru" (locked) at 7f173865cea8>>
>>> Ctrl+D
Unlocking (but not saving) list: mietsuru
Finalizing
}}

参考

設定を反映させる

設定がすべて終了したら、Mailman を起動するのを忘れないように。

$ sudo /etc/init.d/mailman start

リンク


添付ファイル: filemailman-setup01.jpg 615件 [詳細] filemailman-setup04.jpg 674件 [詳細] filemailman-setup03.jpg 667件 [詳細] filemailman-setup02.jpg 682件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-05-27 (月) 14:15:23 (2627d)