qmail + vpopmail の環境にmailman をソースからインストールする際の手順。
vpopmail 環境は既にできている前提です。
※以下バーチャルホストをml.example.comとして表記
※mailmanの実行ユーザ mailman、グループ mailman
※ホームディレクトリ /var/mailman
1.vpopmailにML用バーチャルドメインを作成
既存のものでも可だが、ML名の重複などを避けるために新規で作成することを推奨)
~vpopmail/bin/vadddomain ml.example.com
2.mailman実行ユーザ・グループ・ホームディレクトリを作成
useradd -d /var/mailman mailman
chmod a+rx,g+ws /var/mailman
3.バーチャルホスト用mailman管理ディレクトリを作成
/var/mailman/virtualhosts/ml.example.com とする
mkdir -p /var/mailman/virtualhosts/ml.example.com
chmod a+rx,g+ws /var/mailman/virtualhosts/ml.example.com
4.mailmanインストール
# ソースの解凍
tar zxvf mailman-$PACK_VER.tgz
# configure(apacheの実行ユーザがnobodyの場合)
cd mailman-$PACK_VER
./configure \
--prefix=/var/mailman/virtualhosts/ml.example.com \
--with-mail-gid=vchkpw \
--with-cgi-gid=nobody \
--with-python=/usr/bin/python
# コンパイル/インストール
make
make install
5.mailmanディレクトリのパーミッションチェック
/var/mailman/virtualhosts/ml.example.com/bin/check_perms -f
(エラーが出なくなるまで実行)
6./var/mailman/virtualhosts/ml.example.com/Mailman/mm_cfg.py の編集
最低限以下を追加
DEFAULT_EMAIL_HOST = 'ml.example.com'
DEFAULT_URL_HOST = 'ml.example.com'
add_virtualhost('ml.example.com', 'ml.example.com')
DEFAULT_SERVER_LANGUAGE = 'ja'
下記はその他の項目の設定例。
設定可能な項目は、Mailman/Defaults.py 参照。
ALLOW_SITE_ADMIN_COOKIES = 1
DEFAULT_ARCHIVE_PRIVATE = 1
DEFAULT_ARCHIVE_VOLUME_FREQUENCY = 2
MAILMAN_SITE_LIST = 'ml_admin'
#IMAGE_LOGOS = 0
OWNERS_CAN_ENABLE_PERSONALIZATION = Yes
ADMIN_CATEGORIES = ['general' , 'passwords' , 'language', 'members' , 'nondigest' , 'digest', 'privacy','bounce','archive','autoreply','contentfilter','topics']
DEFAULT_NEW_MEMBER_OPTIONS = 0
OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes
# 新規作成MLのデフォルト値
DEFAULT_SUBJECT_PREFIX = "[%(real_name)s: %%d]"
DEFAULT_MSG_FOOTER = """
──────────────────────────────
■%(real_name)s メーリングリスト
%(description)s
・投稿アドレス→ %(real_name)s@%(host_name)s
・WebページURL→ %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
登録メンバーの確認もこちらのURLからできます。
"""
DEFAULT_ADMIN_NOTIFY_MCHANGES = Yes
DEFAULT_GENERIC_NONMEMBER_ACTION = 2
DEFAULT_SEND_REMINDERS = No
DEFAULT_REPLY_GOES_TO_LIST = 1
DEFAUTL_FIRST_STRIP_REPLY_TO = Yes
DEFAULT_SUBSCRIBE_POLICY = 3
DEFAULT_UNSUBSCRIBBE_POLICY = 1
ALLOW_RFC2369_OVERRIDES = No
DEFAULT_CONVERT_HTML_TO_PLAINTEXT = No
DEFAULT_MAX_MESSAGE_SIZE = 1024
7.qmail-to-mailman.py をコピー、編集
ソースの中にある build/contrib/qmail-to-mailman.py を/var/mailman/virtualhosts/ml.example.com にコピー、所有者・権限変更
cp build/contrib/qmail-to-mailman.py /var/mailman/virtualhosts/ml.example.com
chown mailman.mailman /var/mailman/virtualhosts/ml.example.com/qmail-to-mailman.py
chmod a+rx /var/mailman/virtualhosts/ml.example.com/qmail-to-mailman.py
qmail-to-mailman.py を編集
最初の以下の箇所を変更
※ build/contrib 以下のものであれば、コンパイル時に自動的に設定されているはず。
MailmanHome = "/var/mailman/virtualhosts/ml.example.com"; # Mailman home directory.
MailmanVar = "/var/mailman/virtualhosts/ml.example.com"; # Mailman directory for mutable data.
MailmanOwner = "postmaster@ml.example.com"; # Postmaster and abuse mail recepient.
中ほどにある local = re.sub("^lists.foo.com-","",local) を以下のように変更
local = re.sub("^ml.example.com-","",local)
vpopmail のバーチャルドメインの内部動作が qmail のusers を利用しており、foo@ml.example.com 宛のメールを ml.example.com-foo@ml.example.com 宛として扱うため。
.qmail-*** と同様の動作で @ml.example.com 宛のメールを全て ml.example.com というユーザ宛のメールとして扱い、ml.example.com ユーザの処理として各メールボックスに分けていることに起因。
8.起動スクリプト用意
cp /var/mailman/virtualhosts/ml.example.com/scripts/mailman /etc/rc.d/init.d/mailman-ml.example.com
chkconfig --add mailman-ml.example.com
9..qmail-default 作成
~vpopmail/domains/ml.example.com/.qmail-default として以下を設定
※つまり、来たメール全てを qmail-to-mailman.py で処理する。
|/var/qmail/bin/preline /usr/bin/python /var/mailman/virtualhosts/ml.example.com/qmail-to-mailman.py
10.mailmanのcronに以下のファイルの内容を追加
crontab -u mailman /var/mailman/virtualhosts/ml.example.com/cron/crontab.in
11.apacheのVirtualHost設定
詳細はお好みで。
# Mailman
<VirtualHost *:80>
ServerName ml.example.com
ServerAdmin postmaster@ml.example.com
DocumentRoot /var/mailman/virtualhosts/ml.example.com
Alias /pipermail/ /var/mailman/virtualhosts/ml.example.com/archives/public/
Alias /icons/ /var/mailman/virtualhosts/ml.example.com/icons/
ScriptAlias /mailman/ /var/mailman/virtualhosts/ml.example.com/cgi-bin/
CustomLog "|/usr/local/apache2/bin/rotatelogs /var/log/httpd/ml.example.com/access_log_%Y%m%d 86400 540" combined
ErrorLog "|/usr/local/apache2/bin/rotatelogs /var/log/httpd/ml.example.com/error_log_%Y%m%d 86400 540"
</VirtualHost>
<Directory "/var/mailman/virtualhosts/ml.example.com">
Options FollowSymLinks MultiViews Includes ExecCGI
AllowOverride AuthConfig
Order deny,allow
Deny from all
Allow from all
</Directory>