トップ  > サーバ設定:運用  > 各アプリケーションのインストール  > メーリングリストサーバ構築(sendmail+Mailman)

メーリングリストサーバ構築(sendmail+Mailman)  (最終更新日:2011/08/07)

FedoraApacheでも利用されているメーリングリストサーバであるMailmanを使用してメーリングリストサーバを構築します。

本家Mailmanでは日本語の機種依存文字によりエラーや不具合が発生する為、文字コード集合の規則になかったものに修正されたものをインストールします。

メールサーバ構築(sendmail+Dovecot)Webサーバ構築(Apache)Webサーバ間通信内容暗号化(mod_ssl)が導入されていること。

Mailmanインストール

[root@sv ~]# groupadd mailman ← mailmanグループ追加

[root@sv ~]# useradd -c "GNU Mailman" -s /sbin/nologin -M -g mailman mailman ← mailmanユーザ追加

[root@sv ~]# usermod -d /usr/local/mailman mailman ← mailmanユーザのホームディレクトリ変更

[root@sv ~]# mkdir /usr/local/mailman ← mailmanインストールディレクトリ作成

[root@sv ~]# chown mailman. /usr/local/mailman ← mailmanインストールディレクトリ所有者変更

[root@sv ~]# chmod a+rx,g+ws /usr/local/mailman ← mailmanインストールディレクトリパーミッション変更

[root@sv ~]# yum install python-devel ← Mailmanインストールに必要なツールのインストール 

[root@sv ~]# cd /tmp/ ← 一時作業ディレクトリへ移動

[root@sv tmp]# wget http://www.python.jp/doc/contrib/mailman/_static/mailman-2.1.14+j6.tgz ← mailmanダウンロード
※最新版はこちらで確認。(2011/08/07時点。mailman-2.1.14+j6.tgz)

[root@sv tmp]# tar zxvf mailman-2.1.14+j6.tgz ← mailman展開

[root@sv tmp]# chown -R mailman. mailman-2.1.14+j6 ← mailman展開先ディレクトリ所有者変更

[root@sv tmp]# cd mailman-2.1.14+j6 ← mailman展開先ディレクトリへ移動

[root@sv mailman-2.1.14+j6]# su mailman -s "/bin/bash" -c "./configure --with-cgi-gid=apache" ← 環境に応じたMakefile作成

[root@sv mailman-2.1.14+j6]# su mailman -s "/bin/bash" -c "make" ← Makefileを基にソースコードをコンパイル

[root@sv mailman-2.1.14+j6]# su mailman -s "/bin/bash" -c "make install" ← makeで生成されたファイルなどをディレクトリにコピー(インストール)

[root@sv mailman-2.1.14+j6]# cd /usr/local/mailman/ ← mailmanインストールディレクトリへ移動

[root@sv mailman]# ./bin/check_perms -f ← パーミッション補正スクリプト実行
・
・
・
/usr/local/mailman/messages/it: ディレクトリのパーミッションは 02775 でなければいけません (修正中)
警告: 限定公開保存書庫ディレクトリが other-executable (o+x) に
      なっています. あなたのシステムのシェルユーザがこの保存書庫
      を読むことができます. インストールマニュアルには, これを
      どうしたら修正できるか書いてありますので, 参考にしてください.

問題があります: 74
修正するには -f オプションをつけて mailman か root の権限で実行してください

[root@sv mailman]# ./bin/check_perms ← パーミッションの補正確認
警告: 限定公開保存書庫ディレクトリが other-executable (o+x) に
      なっています. あなたのシステムのシェルユーザがこの保存書庫
      を読むことができます. インストールマニュアルには, これを
      どうしたら修正できるか書いてありますので, 参考にしてください.

問題ありません ← 「問題ありません」を確認

[root@sv mailman]# cd ← カレントディレクトリへ戻る

[root@sv ~]# rm -rf /tmp/mailman-2.1.14+j6 ← mailman展開ディレクトリを削除

[root@sv ~]# mv /tmp/mailman-2.1.14+j6.tgz app/ ← ダウンロードしたファイルは念のため保存

Mailman設定

1.SMRSH設定

sendmailでは、SMRSHにより実行できるコマンドが制限されているので、mailmanを実行できるようにします。

[root@sv ~]# ln -s /usr/local/mailman/mail/mailman /etc/smrsh/mailman ← /usr/local/mailman/mail/mailmanから/etc/smrsh/mailmanへのリンク作成
2.Mailman設定
[root@sv ~]# vi /usr/local/mailman/Mailman/mm_cfg.py ← mailman設定ファイル編集
##################################################
# Put YOUR site-specific settings below this line.
以下を追加
DEFAULT_URL_HOST = 'www.rx-93dff.net' ← Webサーバ名(例:www.rx-93dff.net)を指定
DEFAULT_EMAIL_HOST = 'rx-93dff.net' ← メールサーバのドメイン名(例:rx-93dff.net)を指定
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST) ← 追加
MTA='Postfix' ← 追加※sendmailだがPostfixでOK
POSTFIX_ALIAS_CMD = '/usr/bin/sudo /usr/local/mailman/bin/mailman.aliases' ← 追加
DEFAULT_SERVER_LANGUAGE = 'ja' ← 日本語化
DEFAULT_URL_PATTERN = 'https://%s/mailman/' ← Webインタフェースをhttps=SSLにする
DEFAULT_LIST_ADVERTISED = No ← メーリングリスト一覧を非公開にする
OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes ← メーリングリストをWeb上から削除可能にする
DEFAULT_SUBJECT_PREFIX = "[%(real_name)s:%%d] " ← 件名に記事No.を付加する
DEFAULT_REPLY_GOES_TO_LIST = 1 ← 返信先を投稿者ではなくリストにする
DEFAULT_NEW_MEMBER_OPTIONS = 258 ← 投稿した本人にはメールを送らないようにする
DEFAULT_GENERIC_NONMEMBER_ACTION = 2 ← 非会員からのメールには拒否応答

[root@sv ~]# /usr/local/mailman/bin/mmsitepass パスワード ← メーリングリストサーバ管理パスワード設定

[root@sv ~]# crontab -u mailman /usr/local/mailman/cron/crontab.in ← mailmanCRON設定
3.aliases設定

メーリングリスト作成時に必要なaliases情報が自動で設定されるようにします。

[root@sv ~]# vi /usr/local/mailman/bin/mailman.aliases ← /usr/local/mailman/bin/mailman.aliases作成
ここから----------
/bin/cp /usr/local/mailman/data/aliases /etc/mailman.aliases
/usr/bin/newaliases
----------ここまで

[root@sv ~]# chmod +x /usr/local/mailman/bin/mailman.aliases ← /usr/local/mailman/bin/mailman.aliasesへ実行権限付加

[root@sv ~]# vi /etc/mail/sendmail.mc ← sendmail.mc編集
define(`ALIAS_FILE', `/etc/aliases')dnl
↓
define(`ALIAS_FILE', `/etc/aliases,/etc/mailman.aliases')dnl ← 追加

[root@sv ~]# m4 /usr/share/sendmail-cf/m4/cf.m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf ← sendmail.mcよりsendmail.cf作成

[root@sv ~]# /etc/rc.d/init.d/sendmail restart ← sendmail再起動
sm-client を停止中:                                        [  OK  ]
sendmail を停止中:                                         [  OK  ]
sendmail を起動中:                                         [  OK  ]
sm-client を起動中:                                        [  OK  ]

[root@sv ~]# /usr/local/mailman/bin/genaliases ← aliases初期情報設定
/etc/aliases: 77 aliases, longest 22 bytes, 791 bytes total
/etc/mailman.aliases: 1 aliases, longest 42 bytes, 54 bytes total

[root@sv ~]# chmod o+w /etc/sudoers ← /etc/sudoersへ所有者書き換え権限付加

[root@sv ~]# vi /etc/sudoers ← /etc/sudoers編集
最終行へ追加
apache ALL= NOPASSWD: /usr/local/mailman/bin/mailman.aliases
mailman ALL= NOPASSWD: /usr/local/mailman/bin/mailman.aliases

[root@sv ~]# chmod o-w /etc/sudoers ← /etc/sudoersから所有者書き換え権限削除
4.Webサーバ設定
[root@sv ~]# vi /etc/httpd/conf.d/mailman.conf ← mailman用webサーバ設定ファイル新規作成
ここから----------
ScriptAlias /mailman/       /usr/local/mailman/cgi-bin/
<Directory /usr/local/mailman/cgi-bin/>
    SSLRequireSSL
    AllowOverride None
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>
Alias   /pipermail/     /usr/local/mailman/archives/public/
<Directory /usr/local/mailman/archives/public/>
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
----------ここまで

[root@sv ~]# cp /usr/local/mailman/icons/* /var/www/icons/ ← mailman用ロゴファイルをディレクトリへコピー

[root@sv ~]# /etc/rc.d/init.d/httpd reload ← webサーバ設定反映
httpd を再読み込み中:                                      [  OK  ]

管理用メーリングリスト(mailman)作成

[root@sv ~]# /usr/local/mailman/bin/newlist mailman ← 管理用メーリングリスト(mailman)作成
リスト管理者のメールアドレスを入力してください: mailman-owner@サーバ名 ← 管理用メーリングリスト(mailman)管理者メールアドレス応答
mailman の初期パスワード:  ← 管理用メーリングリスト(mailman)管理パスワード入力(非表示)
/etc/aliases: 77 aliases, longest 22 bytes, 791 bytes total
/etc/mailman.aliases: 11 aliases, longest 54 bytes, 687 bytes total
Enter を押して mailman の管理者にメール通知する... ← ENTER押下

[root@sv ~]# /usr/local/mailman/bin/config_list -i /usr/local/mailman/data/sitelist.cfg mailman ← 管理用メーリングリスト(mailman)初期設定
標準でない値を修復: personalize

Mailman起動

[root@sv ~]# cp /usr/local/mailman/scripts/mailman /etc/rc.d/init.d/ ← mailman起動スクリプトをディレクトリへコピー

[root@sv ~]# /etc/rc.d/init.d/mailman start ← mailman起動

[root@sv ~]# chkconfig --add mailman ← mailman自動起動設定

[root@sv ~]# chkconfig --list mailman ← mailman自動起動設定確認
mailman         0:off   1:off   2:on    3:on    4:on    5:on    6:off

Mailman確認

例としてtestというメーリングリストを作成する

1.testメーリングリスト作成

https://サーバ名/mailman/createにアクセスします。

「リストの名前」⇒test

「リスト管理者アドレスの初期設定」⇒リスト管理者メールアドレス

「初期パスワードを自動生成しますか?」⇒はい

「リスト作成者の認証パスワード」⇒メーリングリストサーバ管理パスワード

「リストを作成する」を押下

testメーリングリストの作成完了通知がリスト管理者メールアドレス宛に送信されてきます。

「リストを作成する」押下後

Bug in Mailman version 2.1.14+j6

We're sorry, we hit a bug!

Please inform the webmaster for this site of this problem. Printing of traceback and other system information has been explicitly inhibited, but the webmaster can find this information in the Mailman error logs.

と表示されるが、リストは正常に登録されている。

2.利用者向けtestメーリングリストの利用方法

https://サーバ名/mailman/listinfo/testへアクセス

3.管理者向けtestメーリングリストの利用方法

https://サーバ名/mailman/admin/testへアクセス

「リスト管理者パスワード」はリスト管理者メールアドレス宛に送られてきたメールに記載

4.testメーリングリスト削除

https://サーバ名/mailman/rmlist/testにアクセス

「リストのパスワード」⇒リスト管理者パスワード

「リスト管理者パスワード」はリスト管理者メールアドレス宛に送られてきたメールに記載

「このリストを削除」を押下