メーリングリストサーバー(mailman)の構築

1.はじめに

majordomoはportsから消えたので、mailmanを入れてみました。

2.インストール

portsからインストールします
# cd /usr/ports/japanese/mailman
# make config
MTAにsendmailを選択、他はnamazu2など
設定後にインストール
# make install clean

nkfが必要なのでインストールします
# cd /usr/ports/japanese/nkf
# make install clean

3.設定

メーリングリスト自身はwebサーバーを介して設定するので、まずはApacheからアクセスできるようにします。
/usr/local/etc/apache24/httpd.conf へ追記
ScriptAlias /mailman/ "/usr/local/mailman/cgi-bin/"
Alias /pipermail/ "/usr/local/mailman/archives/public/"
 <Directory "/usr/local/mailman/cgi-bin">
  AllowOverride None
  Options None
  Require all granted
 </Directory>
<Directory "/usr/local/mailman/archives/public/">
 Options FollowSymLinks Indexes
 AllowOverride None
 Require all granted
</Directory>

#文字化けする場合は
AddDefaultCharset EUC-JP #を追記

次にmailmanの設定
/usr/local/mailman/Mailman/mm_cfg.py
DEFAULT_SERVER_LANGUAGE = 'ja'
SENDMAIL_CMD = '/usr/local/etc/mail/jsendmail'
DEFAULT_REPLY_GOES_TO_LIST = 1
DEFAULT_URL_PATTERN = 'https://hogehoge.mydns.jp/mailman/'
PUBLIC_ARCHIVE_URL = 'https://hogehoge.mydns.jp/pipermail/%(listname)s'
DEFAULT_SUBJECT_PREFIX = "[%(real_name)s:%%04d]"
DEFAULT_LIST_ADVERTISED = No
DEFAULT_ARCHIVE_PRIVATE = 1
DEFAULT_FIRST_STRIP_REPLY_TO = Yes
ARCHIVE_TO_MBOX = 2
OLD_STYLE_PREFIXING = No
DEFAULT_SEND_WELCOME_MSG = No
DEFAULT_SUBSCRIBE_POLICY = 2
DEFAULT_PRIVATE_ROSTER = 2
ALLOW_RFC2369_OVERRIDES = No
DEFAULT_MAX_MESSAGE_SIZE = 1000
DEFAULT_DIGESTABLE = No
DEFAULT_DEFAULT_MEMBER_MODERATION = Yes
add_virtualhost('ml.example.ne.jp', 'ml.example.ne.jp')

マスターパスワード設定
# cd /usr/ports/japanese/nkf
# make install clean

majordomo.cfの$sendmail_commandを書き換えます
/usr/local/majordomo/majordomo.cf
$sendmail_command = "/usr/sbin/sendmail";を
$sendmail_command = "/usr/local/majordomo/jsendmail"; とします

これでHELPや送られて来るメールが日本語化されます。

4.メーリングリスト設定

あとはAmacheでScriptAliasに設定したURLへアクセスしてメーリングリストを設定します。
上記の場合は
http://hogehoge.mydns.jp/mailman/
へアクセスしてください。
.htaccessを置いて誰でも入れないようにしておくのが良いかもしれません。

上記設定ではメーリングリストの投稿に番号を付けていますが、番号を変更する事があったのでメモ代わりに方法を記載します。
# cd /usr/local/mailman/bin
# ./withlist fireworks
Loading list ML名 (unlocked)
The variable `m’ is the ML名-ml MailList instance
>>> m.Lock()
>>> m.post_id
現在の番号
>>> m.post_id=1 ←次の番号を入力
>>> m.Save()
>>> ^D
Unlocking (but not saving) list: ML名-ml
Finalizing