簡単なメーリングリストを作ってみる。 まず、/etc/aliases を攻略。以下のようなエントリを作ってみた。
(参考文献:sendmail システム管理)
dmz1:/etc# cat aliases # Put any sendmail aliases in here root: hotta@net-newbie.com postmaster: hotta@net-newbie.com mailer-daemon: postmaster ng: :include:/etc/ng.lst owner-ng: hotta@net-newbie.com owner-owner: postmaster ng-request: hotta@net-newbie.com dmz1:/etc# cat ng.lst dummy@aa.bb.cc <--- エラーテスト用 hotta@net-newbie.com dmz1:/etc# newaliases /etc/aliases: 7 aliases, longest 25 bytes, 194 bytes total
これで試しに ng.dmz1.hoge.co.jp 宛てにメールを送ってみて、 うまく 2 者に配信され、エラーメールも帰ってくることを確認した。
ところが、メーリングリストでは一般的に、 応答がさらに全メンバーに配信される必要があるので、 メールヘッダなどを書き換える必要がある。 書籍でも動きが良く分からなかったので、 これを契機に今まで避けていた(^^; メーリングリスト・サーバを構築することにした。
Web で検索を行ってみると、困った時に役に立つ情報(山田 康さん)というのがあったので、ここをとっかかりにした。山田さん、ありがとうございます。
なお、以下の作業はすべてユーザ fml で行った。root でやると結構ハマる(^^;。
をやったところ、日本語パッチの当たったやつ(いわゆる jperl)だった。これでやったらハマッた(^^;ので、忠告どおりオリジナルの perl を使用した。推奨のperlのバージョンは、4.036か5.003以降とのこと。
教訓:人の忠告や警告メッセージを無視すると、結局余計に時間がかかる。
iij のサーバからとりあえず新しそうな fml-current_98May25_tar.gz というのを取ってきた。
dmz1:~$ tar xvzf /usr/src/fml-current_98May25_tar.gz dmz1:~$ cd fml-2.1C-snapshot29/ dmz1:~/fml-2.1C-snapshot29$ view README.jp
「おお、作者が日本人だった。ラッキー!」と喜ぶ。深町さん、ありがとうございます。さっそく読んでみる。
で、インストールを試みるが、ことごとくパーミッション関係で失敗する。選択肢としては、次の 2 つが考えられる。
セキュリティを考慮すれば 2 番目の方法がよいのだろうが、ここは安直に最初の方法を取ることにした。
dmz1:~/fml-2.1C-snapshot29$ su dmz1:~# chmod 777 /usr/local/ dmz1:~# chmod 777 /var/spool/ dmz1:~# exit
本来はここで、fml 関連の新しいグループを作った方がよいとのこと。特に将来ユーザ fml 以外の者が新しい ML の管理者になれるようにするには必須だそうである。今回は作らなかった(どうせまたこれで先々ハマるんだろうな....)。
INSTALL.jp に従って、ユーザ fml でインストールする。と思ったがうまくいかないので、root でインストールした。
dmz1:~/fml-2.1C-snapshot29$ su Password: dmz1:/home/fml/fml-2.1C-snapshot29# export LANG="C" <-- "ja_JP.ujis" にしていたため。 dmz1:/home/fml/fml-2.1C-snapshot29# perl makefml install ---NOT USING configuration file THIS HOST (dmz1) IS [i486-pc-linux-gnu] ---Please Define Your Fml System Configurations Personal Use or ML-Admin-Group-Shared or fmlserv you use? Personal, Group, Fmlserv (personal/group/fmlserv) [personal] DOMAIN NAME [dmz1] hoge.co.jp FQDN [dmz1] dmz1.hoge.co.jp EXEC FILES DIRECTORY [/usr/local/fml] TOP LEVEL ML DIRECTORY [/var/spool/ml] Language (Japanese or English) [English] Japanese --- summary --- DOMAIN: hoge.co.jp FQDN: dmz1.hoge.co.jp EXEC_DIR: /usr/local/fml ML_DIR: /var/spool/ml Language: Japanese mkdir(/usr/local/fml, 0755); mkdir(/usr/local/fml/.fml, 0755); The Current Config is saved in /usr/local/fml/.fml/system mkdir /var/spool/ml ---Install the Fml system to /usr/local/fml. (y/n) [n] y Installing fml system to /usr/local/fml Fixing Path: src .. libexec sbin . cf . bin Done. Installing bin ... Installing sbin ... Installing libexec ... Installing cf ... Installing etc ... Installing doc ... Installing doc/html ... Installing perl scripts (fml-source/src/*.pl) files ... dmz1:/home/fml/fml-2.1C-snapshot29# exit dmz1:~/fml-2.1C-snapshot29$
現在のパーミッションを確認する。
dmz1:~/fml-2.1C-snapshot29$ ls -l /usr/local/|grep fml drwxr-xr-x 11 fml users 2048 Jun 11 14:29 fml/ dmz1:~/fml-2.1C-snapshot29$ ls -l /var/spool/|grep ml drwxr-sr-x 5 fml users 1024 Jun 11 14:24 ml/
dmz1:~/fml-2.1C-snapshot29$ cd /usr/local/fml/ dmz1:/usr/local/fml$ ./makefml newml hogehoge ---Loading the configuration file /usr/local/fml/.fml/system THIS HOST (dmz1) IS [i486-pc-linux-gnu] ---Creating hogehoge mailing list ---Make Directory (/var/spool/ml/hogehoge) (UID=10002) ---Make Directory (/var/spool/ml/hogehoge/spool) (UID=10002) ---Generting configuration examples. /var/spool/ml/hogehoge/cf /var/spool/ml/hogehoge/include /var/spool/ml/hogehoge/include-ctl /var/spool/ml/hogehoge/aliases /var/spool/ml/hogehoge/Makefile /var/spool/ml/hogehoge/crontab /var/spool/ml/hogehoge/fml.c /var/spool/ml/hogehoge/config.h /var/spool/ml/hogehoge/help /var/spool/ml/hogehoge/help-admin /var/spool/ml/hogehoge/deny /var/spool/ml/hogehoge/guide /var/spool/ml/hogehoge/welcome /var/spool/ml/hogehoge/confirm /var/spool/ml/hogehoge/objective /var/spool/ml/etc/qmail/alias/.qmail-hogehoge /var/spool/ml/etc/qmail/alias/.qmail-hogehoge-ctl /var/spool/ml/etc/qmail/alias/.qmail-hogehoge-admin /var/spool/ml/etc/qmail/alias/.qmail-hogehoge-request crontab: example for all fml's ML's is saved in /var/spool/ml/etc/crontab/fml config.ph(/var/spool/ml/hogehoge/config.ph): /var/spool/ml/hogehoge/cf -> config.ph ... Done. (back-up is saved in /var/spool/ml/hogehoge/config.ph.bak) ------------------------------------------------------------ *** Please see several examples in /var/spool/ml/hogehoge *** Here is an example of aliases to set. (ここを aliases にセットしなさいよと書いてある) hogehoge: :include:/var/spool/ml/hogehoge/include hogehoge-ctl: :include:/var/spool/ml/hogehoge/include-ctl hogehoge-request: hogehoge-admin hogehoge-admin: fml owner-hogehoge: fml
(実はここに来るまでに紆余曲折があったのだが、詳細は書かない(書けない(^^;)。makefml install を root でやりなおしたらうまくいったということにしておこう。ひょっとしたら、作成しようとした ML と同じユーザがすでにあり、それが sendmail で簡易メーリングリストとして設定されていたから?ちなみにこれらは全部削除した。今となっては根本原因は分からずじまい。)
メッセージに従って、/etc/aliases を編集する。
dmz1:/usr/local/fml$ su Password: dmz1:/usr/local/fml# vi /etc/aliases dmz1:/usr/local/fml# newaliases /etc/aliases: 8 aliases, longest 42 bytes, 233 bytes total dmz1:/usr/local/fml# exit dmz1:/usr/local/fml$
/var/spool/ml/ng 配下には、以下のファイルが作られる。
ファイル名 | カテゴリ | 内容 | 生成時期 | カスタマイズ |
---|---|---|---|---|
aliases | 設定ファイル | /etc/aliases に追加すべき内容(makefml newml ML の出力メッセージと同じもの) | newml 時 | 不要 |
cf | 設定ファイル | config.ph 生成の元になるファイル | config 時 | 不要 |
config.h | 設定ファイル | fmc.c のヘッダ | newml 時 | 不要(システムによっては必要かも?) |
config.ph | 設定ファイル | このメーリングリストの設定ファイル | config 時 | 不要 |
config.ph.bak | バックアップ | (newml する前のバックアップ) | config 時 | 不要 |
confirm | メール内容のスケルトン | subscribe に対して返信されるメールの内容。 (登録してよいかの確認) | newml 時 | 必要 |
crontab | crontab のサンプル | まとめ送り時に使用する | newml 時 | 必要 |
deny | メール内容のスケルトン | メンバー以外からの投稿に対して返信するメールの内容 | newml 時 | 必要 |
fml.c | 設定ファイル | C のラッパー | newml 時 | 不要(システムによっては必要かも?) |
guide | メール内容のスケルトン | #guide に対して返信されるメールの内容 (この ML の趣旨、登録方法など) | newml 時 | 必要 |
help | 説明書 | #help に対して返信されるメールの内容 (この ML の使い方) | newml 時 | 必要 |
help-admin | 説明書 | ML 管理者用ヘルプ | newml 時 | 不要(読むだけ) |
include | 設定ファイルのサンプル | 投稿メール配送用フィルタ | newml 時 | 可能 |
include-ctl | 設定ファイルのサンプル | コマンドメール返信用フィルタ | newml 時 | 可能 |
log | ログファイル | ML 設定状況ログ | イベント発生時 | 不要(読むだけ) |
members | ログ | 登録済みメンバ一覧 | #confirm 受信時、 admin add address 時 | 不要(触らない) |
objective | メール内容のスケルトン | #guide に対して返信されるメールの内容 (ML の目的、約束事) | newml 時 | 必要(私はguide のリンクにした) |
spool/ | 投稿保存用 | スプール・ディレクトリ | 投稿時 | 不要(触らない) |
summary | ログ | 投稿タイトルのリスト | 投稿時 | 不要(触らない) |
welcome | メール内容のスケルトン | confirm に対して返信されるメールの内容 (登録完了時のウェルカム・メッセージ) | newml 時 | 必要 |
/usr/local/fml/makefml config hogehoge で好きなようにカスタマイズする。この後で出たエラーについては、自分で解決するしかないな (-_-;)