Ubuntu

Ubuntu 12.04 mailmanでメーリングリストを開設

はい。明らかに大げさです。

でも、せっかくメールも開設したし、家族のやり取りが記録として残ってブラウザーで閲覧できるのもいいんじゃないかと思ったのです。

今回の作業はここ(※リンク切れのためアーカイブへ)ここ(※リンク切れのためアーカイブへ)を参考にさせていただいた。

2021/10/05
Ubuntu20.04+Mailman3のDockerイメージで、メーリングリストを開設する記事を書きました。
Ubuntu20.04 Mailman3でマルチドメインなメーリングリスト 前編後編



広告


なお、今回の運用環境は80番ポートをインターネットに向けて開放していない。よって、外部からのアクセスは遮断されるため80番ポートを使用しているが、80番ポートを開放している場合にはプライベートなメールがさらされないように設定に注意する必要がありそう。


作業のおおまかな流れは以下の通り。

  • mailmanをインストールして基本設定を行う。
  • デフォルトのメーリングリストを作る。
    これもメールの一つなので、postfixで配信設定する。

  • apacheを設定する。
  • メーリングリストの条件を色々と設定する。(今回の記事では対象外)

他の方法もあるのかもしれないけれど、想像と違っていたのは・・・

  • mailmanのサイト基本設定はCUIで行う。
    細かいところはブラウザーでもできるけど、サイト全体の基本的なところはCUI。
    また、mailman自体を稼働させるためには、最初のメーリングリストが必要。

  • mailmanがメールボックスとかメールアドレスを作る。
    これは現在稼働中のZarafaとは全く別物。

  • 当然といえば当然だけど、ブラウザーで操作をするのでapacheの設定が必要。
  • mailmanが動き出したら、メーリングリストの細かな設定はブラウザーでできる。

というところ。

実際に稼働させてみるまでの過程で、まぁ、そうですよねと感じたところ。


■mailmanをインストールして基本設定を行う

$ sudo apt-get install mailman

インストール中に以下の問い合わせがある。ここでは、日本語のみ選択した。

サポートする言語:
[*] ja (日本語)

以下のメッセージが表示されたのでメモしておく。

サイトリストがありません

mailman は、パスワードリマインダとそれがどこから送られるのかのリストである "サイトリスト" と呼ばれるものを必要とします。このリストは mailman を開始する前に作成されていなければなりません。

リストを作成するには、"newlist mailman" を実行して、画面に現れる指示に従ってください。このあと、/etc/init.d/mailman start を使って mailman を開始する必要があることにも注意してください。

確かに起動しなかった。

 * Site list for mailman missing (looking for list named 'mailman').
 * Please create it; until then, mailman will refuse to start.

★★★ 超重要 ★★★
さらに、日本語を選んだはずだったのに、英語のみインストールされていて、デフォルト言語も英語になっていた。そのため、以下を実行して再度日本語をインストールした。

$ sudo dpkg-reconfigure mailman

これでようやく日本語がインストールされた。


インストールされたファイルをちょっと見てみた。

/etc/mailman/ja/listinfo.html

  <tr>
    <td colspan="2">
      <P><MM-List-Info></P>
<p> ?3?I\a!?\e\o\°\e\1\E?EAe1A?μ?i??2aμi?I\a!?\e?I,
    <MM-Archive><MM-List-Name>
        EYA,?n,E</MM-Archive>?o?´I÷2??μ??.
    <MM-Restricted-List-Message>

確かに、色々な所で書かれているように UTF-8 ではなく別の文字コートセットで書かれている模様。

$ sudo apt-get install nkf
$ nkf --guess /etc/mailman/ja/listinfo.html
EUC-JP (LF)

そう、確かにEUC-JPだ。


これから先の操作はEUC-JPで行わないと日本語がちゃんと表示されないので、以下を実行し、Teratermの漢字コードもEUC-JPに変更して進めることにする。

$ export LANG=ja_JP.eucJP
$ printenv LANG
ja_JP.eucJP ←変わった

サイトパスワードを設定する。このパスワードでML全体を変更できるらしいので、それなりに複雑なものを設定しておく必要がある。

$ sudo mmsitepass
新しい サイト のパスワード:
パスワード確認:
パスワードを変更しました.

mailmanをインストールしてできあがったディレクトリの権限チェックをしてみる。
権限がちゃんと設定できていないと、mailmanが正しく稼働しないから。

$ sudo check_perms
/var/lib/mailman/logs: ディレクトリは最低 02775 でなければいけません
/var/lib/mailman/logs グループの誤り (root ですが list にしてください)
/var/lib/mailman/cron グループの誤り (root ですが list にしてください)
/var/lib/mailman/bin グループの誤り (root ですが list にしてください)
/var/lib/mailman/icons グループの誤り (root ですが list にしてください)
/var/lib/mailman/Mailman グループの誤り (root ですが list にしてください)
/var/lib/mailman/templates グループの誤り (root ですが list にしてください)
/var/lib/mailman/mail グループの誤り (root ですが list にしてください)
/var/lib/mailman/cgi-bin グループの誤り (root ですが list にしてください)
/var/lib/mailman/messages: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/scripts グループの誤り (root ですが list にしてください)
/var/lib/mailman/locks グループの誤り (root ですが list にしてください)
/var/lib/mailman/messages/sr: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/hr: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/no: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/sv: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ar: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/eu: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/he: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/hu: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/pl: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ko: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/cs: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/it: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/pt_BR: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/fi: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/vi: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ca: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/da: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ru: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ast: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/fr: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/pt: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/tr: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/nl: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/gl: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ia: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/sl: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/es: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ja: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/zh_CN: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/lt: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/zh_TW: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/et: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/de: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/sk: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/uk: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ro: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/sr/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/hr/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/no/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/sv/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ar/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/eu/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/he/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/hu/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/pl/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ko/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/cs/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/it/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/pt_BR/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/fi/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/vi/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ca/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/da/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ru/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ast/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/fr/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/pt/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/tr/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/nl/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/gl/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ia/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/sl/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/es/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ja/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/zh_CN/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/lt/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/zh_TW/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/et/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/de/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/sk/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/uk/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/messages/ro/LC_MESSAGES: ディレクトリのパーミッションは 02775 でなければいけません
/var/lib/mailman/archives/private グループの誤り (www-data ですが list にしてください)
問題があります: 85
修正するには -f オプションをつけて list か root の権限で実行してください

いやはや85件はすごいな・・・それに???ユーザーに list なんていたっけ???

$ cut -d: -f1 /etc/passwd
・・・
list
・・・
hogeuser
hogewife

あらっ、いた(どうやら、インストール前からいたらしい)。

じゃあ、直してもらっちゃおう。

$ sudo check_perms -f
問題があります: 85 ← あれっ?
$ sudo check_perms -f
問題があります: 10 ← あれれっ?

listユーザーになって -f を試してみてもシンボリックリンクは修正できなかったため、以下を実行。

$ sudo chgrp -h list /var/lib/mailman/cron
$ sudo chgrp -h list /var/lib/mailman/bin
$ sudo chgrp -h list /var/lib/mailman/icons
$ sudo chgrp -h list /var/lib/mailman/Mailman
$ sudo chgrp -h list /var/lib/mailman/templates
$ sudo chgrp -h list /var/lib/mailman/mail
$ sudo chgrp -h list /var/lib/mailman/cgi-bin
$ sudo chgrp -h list /var/lib/mailman/scripts
$ sudo chgrp -h list /var/lib/mailman/locks
$ sudo chgrp -h list /var/lib/mailman/logs
$ sudo check_perms
問題ありません

ひとまずこれで権限関係はよさそう。
この権限を直してくれるツール、いいな、とっても。


続いて、mailmanの設定ファイルを編集。

/etc/mailman/mm_cfg.py

# -*- python -*-

# Copyright (C) 1998,1999,2000 by the Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301 USA


"""This is the module which takes your site-specific settings.

From a raw distribution it should be copied to mm_cfg.py.  If you
already have an mm_cfg.py, be careful to add in only the new settings
you want.  The complete set of distributed defaults, with annotation,
are in ./Defaults.  In mm_cfg, override only those you want to
change, after the

  from Defaults import *

line (see below).

Note that these are just default settings - many can be overridden via the
admin and user interfaces on a per-list or per-user basis.

Note also that some of the settings are resolved against the active list
setting by using the value as a format string against the
list-instance-object's dictionary - see the distributed value of
DEFAULT_MSG_FOOTER for an example."""


#######################################################
#    Here's where we get the distributed defaults.    #

from Defaults import *

##############################################################
# Put YOUR site-specific configuration below, in mm_cfg.py . #
# See Defaults.py for explanations of the values.            #

#-------------------------------------------------------------
# The name of the list Mailman uses to send password reminders
# and similar. Don't change if you want mailman-owner to be
# a valid local part.
MAILMAN_SITE_LIST = 'hogehogeml' ←'HogeHogeML'にしようと思っても全部小文字で。

#-------------------------------------------------------------
# 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'
IMAGE_LOGOS         = '/images/mailman/'

#-------------------------------------------------------------
# Default domain for email addresses of newly created MLs
DEFAULT_EMAIL_HOST = 'hogeserver.hogeddns.jp'
#-------------------------------------------------------------
# Default host for web interface of newly created MLs
DEFAULT_URL_HOST   = 'hogeserver.hogeddns.jp'
#-------------------------------------------------------------
# Required when setting any of its arguments.
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)

#-------------------------------------------------------------
# The default language for this server.
DEFAULT_SERVER_LANGUAGE = 'ja'

#-------------------------------------------------------------
# Iirc this was used in pre 2.1, leave it for now
USE_ENVELOPE_SENDER    = 0              # Still used?

#-------------------------------------------------------------
# Unset send_reminders on newly created lists
DEFAULT_SEND_REMINDERS = 0

#-------------------------------------------------------------
# Uncomment this if you configured your MTA such that it
# automatically recognizes newly created lists.
# (see /usr/share/doc/mailman/README.Exim4.Debian or
# /usr/share/mailman/postfix-to-mailman.py)
# MTA=None   # Misnomer, suppresses alias output on newlist

#-------------------------------------------------------------
# Uncomment if you use Postfix virtual domains (but not
# postfix-to-mailman.py), but be sure to see
# /usr/share/doc/mailman/README.Debian first.
MTA='Postfix'

#-------------------------------------------------------------
# Uncomment if you want to filter mail with SpamAssassin. For
# more information please visit this website:
# http://www.jamesh.id.au/articles/mailman-spamassassin/
# GLOBAL_PIPELINE.insert(1, 'SpamAssassin')

# 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.

#-------------------------------------------------------------
# My settings 2013/06/22追記
#-------------------------------------------------------------

# Are archives public or private by default?
# 0=public, 1=private
DEFAULT_ARCHIVE_PRIVATE = 1

# These format strings will be expanded w.r.t. the dictionary for the
# mailing list instance.
DEFAULT_SUBJECT_PREFIX = "[%(real_name)s:%%d]"
DEFAULT_MSG_FOOTER = ""

# Where to put subject prefix for 'Re:' messages:
#
#     old style: Re: [prefix] test
#     new style: [prefix 123] Re: test ... (number is optional)
#
# Old style is default for backward compatibility.  New style is forced if a
# list owner set %d (numbering) in prefix.  If the site owner had applied new
# style patch (from SF patch area) before, he/she may want to set this No in
# mm_cfg.py.
OLD_STYLE_PREFIXING = No

# Should a list, by default be advertised?  What is the default maximum number
# of explicit recipients allowed?  What is the default maximum message size
# allowed?
#DEFAULT_LIST_ADVERTISED = Yes
#DEFAULT_MAX_NUM_RECIPIENTS = 10
DEFAULT_MAX_MESSAGE_SIZE = 10240

# Send welcome messages to new users?
DEFAULT_SEND_WELCOME_MSG = No

# Mailman can be configured to "munge" Reply-To: headers for any passing
# messages.  One the one hand, there are a lot of good reasons not to munge
# Reply-To: but on the other, people really seem to want this feature.  See
# the help for reply_goes_to_list in the web UI for links discussing the
# issue.
# 0 - Reply-To: not munged
# 1 - Reply-To: set back to the list
# 2 - Reply-To: set to an explicit value (reply_to_address)
DEFAULT_REPLY_GOES_TO_LIST = 1

ココで書いた hogehogeml というのが、メーリングリストの宛先メールアドレスになる。

なお、デフォルト値のファイルがどこにあるのかと探してみると・・・
/usr/lib/mailman/Mailman/Defaults.py
にある。これとマニュアル(※リンク切れのためアーカイブへ)を参考にして mm_cfg.py を設定すると、思い通りのメーリングリストにできそう。さらにココ(※リンク切れのためアーカイブへ)あたりを参考にしてみたらいいかな。

サイトリストを作成し、サービスを起動する。

$ sudo newlist hogehogeml ←ここも小文字で我慢
リスト管理者のメールアドレスを入力してください: hogeuser@hogeserver.hogeddns.jp
mailman の初期パスワード:
Enter を押して mailman の管理者にメール通知する...[Enterを入力]

だが、このタイミングではメールは飛んでこない。あとで飛んでくるので乞うご期待。

なお、管理者をhogeuserにしてみたが、結果としてはこれでいいみたい。最初のメーリングリストをここでつくっていて、それはそれで運用するよ、という話であり、このメーリングリストの管理風な人にメールを送るとそれはhogeuserに届くようになる。
逆に、別のアドレスに届いて欲しい時は、そのメールアカウントを入力しておけばいい。

最初のメーリングリストができたので、mailmanを起動する。

$ sudo service mailman start
 * Starting Mailman master qrunner mailmanctl            [ OK ]

この段階でhogeuserに以下のメールが飛んでくる。

Sender: hogehogeml-bounces@hogeserver.hogeddns.jp    (1)
X-BeenThere: hogehogeml@hogeserver.hogeddns.jp       (2)
From: hogehogeml-owner@hogeserver.hogeddns.jp        (3)
To: hogeuser@hogeserver.hogeddns.jp                  (4)
Subject: 新しいメーリングリスト: hogehogeml

`mailman' メーリングリストが作成されました.
以下は,このメーリングリストの基本的な情報です.

メーリングリストのパスワード:

    password

メーリングリストの設定を行うにはこのパスワードが必要です.
また,発言の制限があるリストへの投稿を承認する場合など,管理上の申請を
処理する際にも必要になります.

メーリングリストの設定は以下の Web ページで行うことができます.

    http://hogeserver.hogeddns.jp/cgi-bin/mailman/admin/hogehogeml    (A)

一般のリスト会員用の Webページは,以下のURLになります.

    http://hogeserver.hogeddns.jp/cgi-bin/mailman/listinfo/hogehogeml (B)

HTMLの知識がある方は, これらの Webページをリスト設定ページで変更する
こともできます.

一般の会員向けに, メールによるコマンド・インターフェースもあります.
(管理者用のコマンド・インターフェイスはありません)
コマンド・インターフェイスに関する情報は, 件名または本文に help と書い
て以下のアドレスにメールを送ってください.

    hogehogeml-request@hogeserver.hogeddns.jp        (5)

会員を退会させる場合,listinfo
のページで会員のメールアドレスを入力し,
パスワードに管理用のパスワードを入力することができます.また, まとめ読
みの設定や配送停止などの会員オプションも変更できます.

質問があれば  mailman-owner@hogeserver.hogeddns.jp までどうぞ.

ということで、この段階で5つのメールアドレスが出てきている。

例えば、hogehogeml-request@hogeserver.hogeddns.jpはユーザーがメーリングリストに入会するとき、入会確認の折り返しメール送付先となる(ユーザーは送られてくるメールのURLにて確認ボタンを押すか、入会確認メールへの返信で入会確認ができる)。

じゃあ、これらのメールアドレスはどこにどう作られたの?といろいろ見てみると・・・
mailmanは自分でhogehogemlというメールアドレスを作り、他のメールアドレスへのaliasesを作成していることがわかる。

/var/lib/mailman/data/aliases

hogehogeml:             "|/var/lib/mailman/mail/mailman post hogehogeml"
hogehogeml-admin:       "|/var/lib/mailman/mail/mailman admin hogehogeml"
hogehogeml-bounces:     "|/var/lib/mailman/mail/mailman bounces hogehogeml"
hogehogeml-confirm:     "|/var/lib/mailman/mail/mailman confirm hogehogeml"
hogehogeml-join:        "|/var/lib/mailman/mail/mailman join hogehogeml"
hogehogeml-leave:       "|/var/lib/mailman/mail/mailman leave hogehogeml"
hogehogeml-owner:       "|/var/lib/mailman/mail/mailman owner hogehogeml"
hogehogeml-request:     "|/var/lib/mailman/mail/mailman request hogehogeml"
hogehogeml-subscribe:   "|/var/lib/mailman/mail/mailman subscribe hogehogeml"
hogehogeml-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe hogehogeml"

これらに宛てたメールアドレスが正しく配送されるよう、postfixの設定をいくつか変更する。

main.cf

alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases
#
# for mailman
#
owner_request_special = no
recipient_delimiter = +
unknown_local_recipient_reject_code = 550

$ sudo service postfix reload

また、最初のメールには2つのURLが出てきている。これまでに構築してきた環境では apache2 の default が有効になっており、その default と同じディレクトリに cgi が配置されることから、この段階でブラウザーからアクセスができる(だけど、いけてないなぁ・・・)。

(A) http://hogeserver.hogeddns.jp/cgi-bin/mailman/admin/mailman

メーリングリストの管理者(今回はhogeuser)向けのページ。

(B) http://hogeserver.hogeddns.jp/cgi-bin/mailman/listinfo/mailman

ユーザー向けの入退会、オプション設定ができるページ。

とりあえず、EUC-JPのTeratermを閉じてmailmanの設定を終える。


■apacheを設定する

ちょっと default のままで動かしていることに気が引けてきたので、これをやめる。
そして、mailman ページを設定する。

まずは、default の無効化。

$ sudo a2dissite default
$ sudo service apache2 reload

これにて、 http://hogeserver.hogeddns.jp にアクセスすると Not Found が表示される。

/etc/mailmanにあるapache設定ファイルを apache2 のディレクトリにコピーして編集する。

$ sudo cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman
$ sudo vi /etc/apache2/sites-available/mailman

コピーしたファイルに変更を加える。

# Sample configuration for Debian mailman with Apache
<VirtualHost *:80>
        ServerAdmin postmaster@hogeserver.hogeddns.jp
        DocumentRoot /var/www

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>

        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        # マニュアル3種類も見られるようにしておく 2013/06/19 追記
        Alias /mailman-admin/ /usr/share/doc/mailman/mailman-admin/
        <Directory /usr/share/doc/mailman/mailman-admin/>
                Options Indexes FollowSymLinks
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        Alias /mailman-member/ /usr/share/doc/mailman/mailman-member/
        <Directory /usr/share/doc/mailman/mailman-member/>
                Options Indexes FollowSymLinks
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        Alias /mailman-install/ /usr/share/doc/mailman/mailman-install/
        <Directory /usr/share/doc/mailman/mailman-install/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

# We can find mailman here:
ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/
# And the public archives:
Alias /pipermail/ /var/lib/mailman/archives/public/
# Logos:
Alias /images/mailman/ /usr/share/images/mailman/

# 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/
# 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/>
    AllowOverride None
    Options ExecCGI
    AddHandler cgi-script .cgi
    Order allow,deny
    Allow from all
</Directory>
<Directory /var/lib/mailman/archives/public/>
    Options FollowSymlinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
<Directory /usr/share/images/mailman/>
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

</VirtualHost>

## The following describes how to configure mailman on
## a dedicated virtual host, courtesy Marco d'Itri.

# Add these lines in /etc/mailman/mm_cfg.py:
#DEFAULT_EMAIL_HOST = 'lists.example.net'
#DEFAULT_URL_HOST = 'lists.example.net'
#DEFAULT_URL_PATTERN = 'http://%s/'

#<VirtualHost *>
#ServerName lists.example.net
#DocumentRoot /var/www/lists
#ErrorLog /var/log/apache2/lists-error.log
#CustomLog /var/log/apache2/lists-access.log combined
#
#<Directory /var/lib/mailman/archives/>
#    Options FollowSymLinks
#    AllowOverride None
#</Directory>
#
#Alias /pipermail/ /var/lib/mailman/archives/public/
#Alias /images/mailman/ /usr/share/images/mailman/
#ScriptAlias /admin /usr/lib/cgi-bin/mailman/admin
#ScriptAlias /admindb /usr/lib/cgi-bin/mailman/admindb
#ScriptAlias /confirm /usr/lib/cgi-bin/mailman/confirm
#ScriptAlias /create /usr/lib/cgi-bin/mailman/create
#ScriptAlias /edithtml /usr/lib/cgi-bin/mailman/edithtml
#ScriptAlias /listinfo /usr/lib/cgi-bin/mailman/listinfo
#ScriptAlias /options /usr/lib/cgi-bin/mailman/options
#ScriptAlias /private /usr/lib/cgi-bin/mailman/private
#ScriptAlias /rmlist /usr/lib/cgi-bin/mailman/rmlist
#ScriptAlias /roster /usr/lib/cgi-bin/mailman/roster
#ScriptAlias /subscribe /usr/lib/cgi-bin/mailman/subscribe
#ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/
#</VirtualHost>

サイト mailman を有効化する。

$ sudo a2ensite mailman
$ sudo service apache2 reload

以上で、サービスが稼働する。


■メーリングリストの条件を色々と設定する

改めて以下のURLにアクセスし、mailmanのシステムが稼働したことを確認する。

http://hogeserver.hogeddns.jp/cgi-bin/mailman/admin/mailman
http://hogeserver.hogeddns.jp/cgi-bin/mailman/listinfo/mailman

後はブラウザーにて設定をしていく。

管理者向けページで小文字で我慢してきた hogehogeml を HogeHogeML に修正できる。
また、リプライ先をMLのメールアドレスにするとか、メールに番号をつけるといった変更も管理者向けページで実現できる。

そういったMLの設定は今回の記事の範囲外。


■その他

サイトリストを削除する場合は、以下のコマンドを実行する。
今回は最初のMLで迷いに迷ったので多用したコマンドでもある。

sudo rmlist -a <サイトリスト名>


■文字化け対応 2013/06/27追記

iPhoneやiPadでメールをやり取りしていたところ、MLに投稿しても問題はないのだが、これにリプライすると文字化けする。
ただし、 iOS5 では問題なく読むことができ、アーカイブも問題がないので、iOS6の端末固有の問題にも見える状況。

※注意。最初に下の赤文字部分(メーリングリストの設定)を試してみるべきだった。これだけでいけるかもしれない。

調べてみたら、ココに日本語対応パッケージが。ダウンロードする。
上書きインストールみたいなことができればいいのかもしれないが、ちょっと自身がないのでココに書かれていることを参考にして必要分だけを入れることにした。

適当なディレクトリにダウンロードしたファイルを持ってきて解凍し、必要ファイルのみインストールしていく。

$ tar -xzvf mailman-2.1.14+j7.tgz
$ sudo cp mailman-2.1.14+j7/Mailman/Handlers/iso2022jpfix.py /var/lib/mailman/Mailman/Handlers
$ cd misc/
$ tar -xzvf pykf-0.3.4.tar.gz
$ cd pykf-0.3.4
$ sudo apt-get install python2.7-dev
$ sudo python setup.py install

インストールしたファイルが動くように設定を追加する。

/etc/mailman/mm_cfg.py

# encoding...
GLOBAL_PIPELINE.insert(1, 'iso2022jpfix')

サービスを再起動する。

$ sudo service mailman restart

以上をやってみたけれども、やっぱり文字化けが発生している。

どうも、iPhoneから送信するメールがHTMLメールであって、それがMLから送信されるときに添付形式になっしまうのがよろしくないのではないか、と思えてきた。

そこで、メーリングリストの管理画面から以下を修正してみた。

添付ファイル除去 の部
filter_content ← はい、に変更。
convert_html_to_plaintext ← はい、に変更。

HTMLメールが添付されない形になり、文字化けが解消された。

今日最初にやってみた日本語対応パッケージの導入については、あったほうがいいだろうと思うので残しておくことにする。不要になったら、/etc/mailman/mm_cfg.py から

GLOBAL_PIPELINE.insert(1, 'iso2022jpfix')

を削除すればいい。

広告

コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他