こんなに変わるメール生活

以下のテキストは、執筆時当時の情報を元に書いたものであり、 現在の情勢にそぐわないことを含む場合があるので注意されたい。 また、テキストは最終提出原稿で校正を経る前のものなので、実際にUNIXUSER 本誌に記載されたものとは異なる。誤字脱字等そのままである。

致命的な誤り以外は加筆修正等は行なわないので情報の鮮度に気をつけつつ 利用して欲しい。

目次


Part V こんなに変わるメイル生活

管理者的側面から見るとqmailもPostfixいずれも、セキュリティホールの恐怖か
らの解放、設定のための労力軽減、などのメリットがある。ただ、それだけのた
めに選択したというのではすこし寂しい。せっかく与えられた便利な機能を存分
に活用して、これまでとは違うメイル生活を楽しもう。

ここでは管理者としての立場ではなく、一利用者としていかに便利にMTAの機能
を使いこなすかを主眼として解説する。

■複数のアドレスは当り前

もっとも目立って有用なものが、一般ユーザでも利用できる拡張アドレスだろう。
sendmailでは原則としてUNIXアカウント一つにつきメイルアドレス一つを割り当
てていたため、個人に届くメイルも、自分が務めている役割に届くメイルも全て
個人アカウント一個で受けなければならなかった。メイルを受け取る数が増えて
くると、分類しきれなくなって大変である。

そんなときには qmail, Postfix のもつ拡張アドレス機構が非常に役に立つ。自
分宛のメッセージを種類に応じて分類された自分専用の引出しに格納してもらう
ようなことが、特別なツールを利用せずに簡単にできるのだ。

これから紹介する利用例は、MTAからアクセスできるホームディレクトリ以下で
複数のメイルボックスやフォルダを使い分けることが前提となるので、基本的に
UNIX マシンにログインしてホームディレクトリ内のフォルダにアクセスできる
MUAを利用することを想定したものとなっている。また、説明を簡潔にするため、
拡張アドレスの定義の説明はqmail方式(~/.qmail-*) のみで例示するが、
Postfixでも同様の仕組が利用できるので、その場合は適宜 ~/.forward+* に読
みかえてほしい。


■メイルボックスを複数作成しわかりやすい宛先管理

筆者の管理しているメイルドメインはほぼ全てqmailで運用しているが、その利
用者全てが拡張アドレスを活用しているとはいいがたい。自由度が高すぎると、
逆にどう使いこなしたらいいか迷ってしまう面もある。それではもったいないの
でここでは、個人のアドレスでの使い分けの例と電子メイルでの受け付け作業な
どをこなす場合を例にとって、それぞれ活用例を紹介しよう。以後の説明では利
用者の基本となるメイルアドレスが gombei@foo.ymzk.org であると仮定する。

  ●個人メイルアドレスの使い分け術

  たとえば普段良く受け取るメイルの種類が次のように分類されると仮定してみ
  よう。

	* 友人知人から来る個人宛メッセージ
	* 仕事仲間から来る個人宛メッセージ
	* cronなどから来るroot宛メッセージ
	* 仕事関係のメイリングリストその1
	* 仕事関係のメイリングリストその2
	   :
	* 情報収集用のメイリングリストその1
	* 情報収集用のメイリングリストその2
	   :

  受け取る数が多くなって来ると、忙しいときに重要なメイルを選んで読むのが
  大変になって来る。これまでは procmail などの振り分けツールを利用して、
  到着したメイルのヘッダ部などのパターンを元に適当なフォルダに分類して格
  納するようなことが行なわれていた。しかし procmail を利用するには、正規
  表現の知識も必要だし、独自の記号化された構文を覚えなければならない。と
  くに後者はprocmailを利用すること以外には何の役にも立たないので覚えなく
  て済むならそれに越したことはない。せっかくメイルアドレスがいくらでも作
  れるのだから、自分へのメイルを送信する側に違うメイルボックスに届くよう
  に登録しておくのが本質的な解決策だ。分類するという負担はなにも自分が負
  う必要はない。

  かといって送信側に応じて全部違うメイルボックスに届けてもらうと、常に
  チェックしなければならないメイルボックスが増えてしまって手に負えなくなっ
  てしまう。そうした問題を解決する一案としては、メイルアドレスの意味階層
  を2層にする方法がある。

	第1層	実際に受け取るアドレス名そのもの
	第2層	そのメイルを読む頻度(常に読む、仕事場のみ、フォルダ行き…)

  外部から来たメイルがメイルボックスまたはフォルダに入るまでの流れをイメー
  ジしたものが[図1]である。

--[図1]----------------------------------------------------------------------

    +--------- 第1層 --------------+  +---------- 第2層 --------+
    |                              |  |                         |
 → +→(個人宛 To: gombei) --------+→+-\ +--- 出先でも読む --+ |
 → +→(仕事ML1 To: gombei-job1)---+→+-→+→ gombei (基本)   | |
 → +→(仕事ML2 To: gombei-job2)---+→+-//+-------------------+ |
 → +→(趣味ML1 To: gombei-joy1)---+→+-/ +-- 職場でのみ読む--+ |
 → +→(業務連絡 To: gombei-notice)+→+-→+→ gombei-office   | |
 → +→(root宛 To: gombei-admin)---+→+-/ +-------------------+ |
    |                              |  |   +-- フォルダに直接--+ |
 → +→(趣味ML2 To: gombei-joy2)---+→+-→+→gombei-フォルダ名| |
    |                              |  |   +-------------------+ |
    +------------------------------+  +-------------------------+

    [gombei] → {POP用Maildir (~/popdir/)}
        ↓
      {主Maildir (~/Maildir/)}
        ↑
    [gombei-office]

    [gombei-フォルダ名] → メイルアドレスの拡張名に対応したフォルダに格納
-----------------------------------------------------------------------------

  第2層から説明しよう。あるメイルが来たときに、そのメイルを読みたい頻度
  や緊急性に応じて

	A あらゆる場所(出先でも自宅でも)からすぐに読みたい
	B 仕事場に行ったときだけ読めれば良い
	C 情報集めしているだけのMLのようにすぐにフォルダに入れてしまって
	  後で読めば良い

  などの分類ができるだろう。たとえば、ある個人が自分宛に書いてくれたもの
  などはコミュニケーションを求めて書いて来ている場合が多いので、たとえ出
  先でモバイル機器を利用しているようなときでも読みたい。いっぽう、計算機
  から送られて来るDailyレポートや、緊急でない業務連絡系のMLなどは職場に
  いるときだけ読みたい。このように分類した場合、A, B, C それぞれのメイル
  アドレスを次のように決定する。

	A gombei@foo.ymzk.org
	B gombei-office@foo.ymzk.org
	C gombei-<フォルダ名>@foo.ymzk.org

  次に、第1層を説明しよう。実際に受け取るアドレスは、メイルの送信元に応
  じてそれぞれ違うものを指定する。つまりたとえば[表1]、

	[表1]
	メイルの送信元/種別	送ってもらう宛先	読みたい頻度
	---------------------+------------------------+----------------
	個人			gombei (基本アドレス)	A
	root宛のメイル		gombei-admin		B
	業務連絡		gombei-renraku		B
	進行中プロジェクトのML	gombei-job1		A
	その他の加入しているML	gombei-<そのML名>	C

  のように分けておく。そして、それぞれのアドレスをどういう頻度で読みたい
  かにより、第2層で作成したアドレスにさらにフォワードするように 
  dot-qmail ファイルに記述する。[表1]のように分類した場合は以下のように
  なる。

	ファイル名			内容
	------------------------+---------------------------
	~/.qmail		| ./popdir/
				| ./maildir/
	------------------------+---------------------------
	~/.qmail-office		| ./maildir/
	------------------------+---------------------------
	~/.qmail-admin		| &gombei-office
	------------------------+---------------------------
	~/.qmail-renraku	| &gombei-office
	------------------------+---------------------------
	~/.qmail-job1		| &gombei
	------------------------+---------------------------
	~/.qmail-		| | /usr/local/bin/imstore -d +ml/$EXT
	------------------------+---------------------------
	~/.qmail-pop		| ./popdir/
	------------------------+---------------------------

  ~/.qmail- はコマンド起動にしている。imstoreは IMパッケージ[註あ] 
  に含まれるコマンドで任意のフォルダにメッセージを格納するスクリプトであ
  る。$EXTはメイルアドレスの拡張部分の文字列に置換される。この場合、
  gombei- というメイルアドレスとなるので $EXT はちょうと  に
  置換されることになり、結果としてそのアドレス宛のメイルが
  ~/Mail/ml/ フォルダに格納されることになる[註ほ]。

--[註あ]----------------------------------------------------------------------
ftp://ftp.mew.org/pub/Mew/im-140.tar.gz
または今月号付録CD-ROM
------------------------------------------------------------------------------

--[註ほ]----------------------------------------------------------------------
Postfixの場合拡張部分を表す環境変数は EXTENSION となる。
拡張アドレスをプロセスに渡す場合の環境変数にどのような値が格納され
るかについては、qmailの場合 qmail-command(8)、Postfixの場合 local(8) を
参照すると良い。
------------------------------------------------------------------------------

  また ~/.qmail-pop ファイルはメイルアドレスを定義する目的ではなく、POP 
  取り込みのために用意したファイルである。出先で利用するMUAのPOPアカウン
  ト名を gombei-pop とすることで ~/popdir/ に入っているメイルだけを受け
  取れる[註か]ので急ぎでないメイルは取り込まずに済む。また、一度職場でメ
  イルを読んでしまえば ~/popdir/ に入っているメイルは不要になるので、ロ
  グイン、ログアウトのタイミングに合わせてファイルを消してしまうと良い。
  ちなみに筆者はMewを利用していて、i(imget)を行なうときに ~/popdir/ のメ
  イルを消すようなhookを書いて消している。

--[註か]----------------------------------------------------------------------
 Part4で紹介したWU-IMAPD拡張パックの利用を想定。
------------------------------------------------------------------------------

  ●電子メイルでの受け付け作業の負担軽減

  多数の人から一度にメイルを受けるような場合全てに当てはまる利用例だが、
  ここでは担当している授業の受講生からの提出レポートを電子メイルで受け付
  けるようなケースを考えよう。レポートは一回きりではないので、その回毎に
  違うフォルダに入るようにしておけば、採点が非常に楽に始められる。従来な
  ら Subject にレポートの回数を書かせて、受信時にパターンマッチングで振
  り分けたりしたものだったが、たいていこちらの期待通りにSubjectをつけて
  くれず、目論見は半ば失敗する。

  こんな場合、新世代MTAを利用して受講生にも分かりやすいレポート提出用ア
  ドレスを作ることができる。レポート受理専用の virtual domain を作ってし
  まおう。たとえばそれを class.ymzk.org と仮定し、

	report-XX@class.ymzk.org 宛メイル
		↓
	~/Mail/class/report-XX フォルダ

  のような自動的なフォルダ格納が行なわれるようにしてみたい。ここでXXはレ
  ポートの回数を表すものとする。virtual domain の作成は

	[qmailの場合]
	/var/qmail/control/virtualdomains に
	class.ymzk.org:gombei-class
	を追加し qmail-send にHUPシグナルを送る

  とし、DNSのMXレコードの追加も忘れずに行なったら
  ~/.qmail-class-report-XX ファイルを作成する。この場合、メイルアドレスの
  拡張部分は "class-report-XX" となるが、フォルダ名として利用したいのは
  拡張部分の二個目以降である。qmailの場合拡張部分のハイフンで区切られた
  二個目以降を環境変数 EXT2 に入れてくれる[註え]ので、これを利用して、

	| /usr/local/bin/imstore -d +class/$EXT2

  と書けば良い。レポートの回数が3回なら上記の内容のファイルを
	~/.qmail-class-report-1
	~/.qmail-class-report-2
	~/.qmail-class-report-3
  とすれば良い。レポートの回数がたくさんあってファイルを作るのが面倒なと
  きは
	~/.qmail-class-report-default
                              ~~~~~~~
  とすればレポート回数を示すXXの部分に何が来ても、対応するフォルダに格納
  される[註き]。もっとも *-default で受ける場合は宛先を間違えた場合に間
	違えた名前のフォルダに自動的に入ってしまうので場合によっては不適
	切なこともある。

--[註え]----------------------------------------------------------------------
Postfixの場合は二個目以降を取り出すことはできないので環境変数
EXTENSIONに代入された class+report+XX を利用することになる。
------------------------------------------------------------------------------
--[註き]----------------------------------------------------------------------
Postfixの場合は拡張部分のデフォルトアドレスをユーザが定義することはでき
ないので全ての dot-forward ファイルを作る必要がある。
------------------------------------------------------------------------------

  このような仕組みは、メイルアドレスを利用した投票処理などにも応用できる。

■一人で何個でもMLを。 (MLは自分で作り、使い捨てする時代)

メイリングリスト(以後ML)は非常に便利なコミュニケーションツールである。電
子メイルを使えるものどうし、ある興味を中心に集まった人間全員に情報をつた
えるためには欠かせないツールといえよう。メインリングリストといっても、
MTAのalias機能を利用して単に複数の人間に同時に送るだけのものと、FMLなど
の専用MLドライバを利用するものがある。sendmailの場合は、いずれの場合もシ
ステムのaliasへの追加作業が必要なので管理者権限が必要だった。このためだ
けに管理者の手をわずらわす必要があったり、あるいはその面倒を嫌いさほどス
キルの高くない利用者に管理者権限を与えたりと、好ましくない状況を生み出し
ていた。結果としてMLを使うべき時にも、よほどの必要性がないと作成するのを
断念してしまったりした。これでは何のためのコンピュータ/インターネットか
分からない。人間様の役に立たせよう。

新世代MTAはこんな悩みをも解決する。aliasだけのMLを利用する場合でも、個人
の拡張アドレス機能を利用すれば手軽にリストを作成できる。それでも十分に便
利だが、リスト参加メンバーの登録・解除作業や、メッセージのアーカイブ機能
などML管理を円滑に行える点で専用MLドライバを利用したMLが使えると非常に嬉
しい。「たかが忘年会の連絡リストだから…」とMLドライバを利用したものを作
ることを「仰々しい」と遠慮していた時代はもう過去の話だ。

以後の解説では、aliasによる簡易リストではなくMLドライバを利用した本格的
MLを個人で手軽に設置し利用する場合の方法の一例を紹介する。

  ●個人に一個ML用の virtual domain を

  ML用のメイルアドレスもこれまでは /etc/aliases に登録しなければならない
  ので、その名前自体が各メイルドメインに唯一となる貴重な資源を消費するも
  のであった。それゆえ「nomikai」とか「meeting」などという唯一性の無い一
  般的な単語のアドレスを作ることは遠慮してしまうし、仮に誰かがそんなアド
  レスを /etc/aliases に登録していたとしたらきっとムカツクだろう(笑)。

  そんな制約に縛られるよりも、最初から電子メイルの積極的な利用者にはその
  人だけの名前空間を与えてしまった方が良い。たとえば gombei さんが積極的
  に連絡係を受け持つのでMLを頻繁に作りたい、ということならgombeiさんにメ
  イル用のサブドメインを与えよう。このgombeiさん専用ドメインを、
  vdom.ymzk.org としよう。まず、いつものようにDNSのゾーンファイルに 
  vdom.ymzk.org のエントリを作成しMXをメイルサーバに向ける。そしてMTA(下
  の例はqmail)での virtual domain の定義をごく一般的に

	[qmailの/var/qmail/control/virtualdomains]
	vdom.ymzk.org:gombei-vdom

  とすれば、XXX@vdom.ymzk.org という宛先が ~gombei/.qmail-vdom-XXX とい
  うファイルで制御できるようになる。

  さて、このような定義でも十分だが、次節で説明するFMLでのML作成が一瞬で
  終わるようなちょっとトリッキーな工夫を紹介しよう。vdom.ymzk.org 専用の
  ユーザにvirtual domainを与えるように書き換える。

	[qmailの/var/qmail/control/virtualdomains]
	vdom.ymzk.org:vdomymzk

  この例では "vdomymzk" というユーザに与えることになる。この名前のユーザ
  アカウントを作成する。ただし、このドメインは gombei さんが自由に管理す
  るためのものなので、~vdomymzk/.qmail-* ファイルは gombei さんが自由に
  編集できた方が良い。そのための一方法としてユーザ vdomymzk を gombeiさ
  んとUIDを同じにする。ただしログイン可能にする必要はないのでパスワード
  フィールドを * で潰しておく[註は]。

	# vipw
	(gombeiさんの分身を作成)
	gombei:8jkdsFP23a:774:10::0:0:Gombeisan:/home/gombei:/bin/zsh
	vdomymzk:*:774:10::0:0:vdom.ymzk.org:/home/gombei/vdom:/bin/zsh

--[註は]----------------------------------------------------------------------
この方法は同じUIDを持つアカウントにたいして警告を発生するcronジョブをも
つシステムではうるさい結果をもたらすかもしれない。また全てのOSで許される
方法とは限らないので、利便とのトレードオフを考えてから実運用化して頂きた
い。筆者が試した範囲では、*BSD, RedHat系Linux、Solaris 2.x で期待どおり利
用できた。
------------------------------------------------------------------------------

  このような定義をしておくと、gombeiさんは以後 ~/vdom/ ディレクトリ内の
  dot-qmailファイルを、他のドメインとは完全に独立した名前空間で作成する
  ことが出来るようになる。一つの新しいメイルドメインが生まれるわけだから、
  メイル管理者用アドレスをいくつか定義するのが望ましい。

	gombei% cd ~/vdom
	gombei% echo '&gombei' > .qmail-postmaster
	gombei% ln -s .qmail-postmaster .qmail-mailer-daemon
	gombei% ln -s .qmail-postmaster .qmail-abuse
	gombei% ln -s .qmail-postmaster .qmail-admin

  このドメイン宛に実際にメイルを送って独立したメイルドメインとして機能し
  ているか確かめよう。

  まず、届かない例。名前空間が別なので、gombei@vdom.ymzk.org というアド
  レスは存在しないはずである。なぜなら、まだ ~vdomymzk/.qmail-gombei を
  作っていないからだ。これが届かないことを確かめる。

	gombei% echo test for error | Mail -s test gombei@vdom.ymzk.org

  これにより「そのようなユーザはいない」というエラーメイルが返って来れば
  設定はうまく行っている。もし、自分宛に正常に届いてしまうようなら
  virtual domain が機能していず、本来のメイルドメイン(foo.ymzk.org)のま
  ま受理してしまっていることになる。

  続いて、新たに作成するアドレスが届くことを確認しよう。今度は、
  gombei@vdom.ymzk.org を作成しそこにメイルを送ってみる。

	gombei% echo ./Maildir/ > ~/vdom/.qmail-gombei
	gombei% /var/qmail/bin/maildirmake ~/vdom/Maildir
	gombei% echo test for success | Mail -s test gombei@vdom.ymzk.org

  今度は、~/vdom/Maildir/new にメッセージが届いていれば成功だ。このよ
  うにして、@vdom.ymzk.org 全てのメイルアドレスが ~/vdom/.qmail-* で制御
  できることを確認する。

  さて、gombeiさんは、新しいメイルドメインを手に入れたという利便を得る代
  わりに、これらのドメインの管理者宛に届くメイルには日頃から注意し、分か
  らないものがあったら管理者に相談するような心構えを持つようにしなければ
  ならない。あなたが管理者の立場なら、責任をもってメイルドメインを管理す
  るように伝え、キューにメッセージがたまっていないか確かめる方法や、それ
  らの解決方法などを簡単に指導する。「自分で管理する」という責任感を持っ
  てもらえれば積極的にエラーメイルの監視などを手伝ってくれるだろう。

  ●virtual domain で使う FML

  専用MLドライバにはさまざまなものがあるが、かゆいところに手が届く配慮の
  良さ、ドキュメントの豊富さ、管理者利用者双方に対する使い勝手の良さ、な
  どの点できわめて秀でていると感じるのがFML[註に]である。ここでは先述の
  方法で作成した vdom.ymzk.org 専用のFMLを設置する方針での作業例を紹介す
  る。作業の流れは以下のようになる。

	1. FMLソースアーカイブの展開とインストール
	2. virtual domain 対応の軽微な修正
	3. 実際のML運用
--[註に]----------------------------------------------------------------------
http://www.fml.org/
------------------------------------------------------------------------------

  (1)FMLソースアーカイブの展開とインストール

  執筆時当時の最新リリース版である fml-4.0.tar.gz を付録CD-ROMに用意した
  のでこれを利用して欲しい。FMLのインストールは、Perlのインストールされ
  ているシステムならきわめて簡単である。ソースアーカイブを展開し、インス
  トールスクリプトを利用し、インストール先のディレクトリ名などを対話的に
  答えていくだけで完了する。

	gombei% tar vxpf fml-4.0.tar.gz
	gombei% cd fml-4.0
	gombei% make install
perl ./makefml install
---NOT USING configuration file (for the first time)

   THIS HOST (newmta.foo.ymzk.org) IS [i386-unknown-freebsd4.2]

---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               [foo.ymzk.org] vdom.ymzk.org
                                         ~~~~~~~~~~~~~
FQDN                      [newmta.foo.ymzk.org] (リターン)
EXEC FILES DIRECTORY      [/usr/local/fml] /home/gombei/fml
                                           ~~~~~~~~~~~~~~~~
TOP LEVEL ML DIRECTORY    [/var/spool/ml] /home/gombei/vdom
                                          ~~~~~~~~~~~~~~~~~
Language (Japanese or English) [English] Japanese
                                         ~~~~~~~~
TimeZone (TZ: e.g. +0900, -0300) [+0900] (リターン)
  --- summary ---
      DOMAIN: vdom.ymzk.org
        FQDN: newmta.foo.ymzk.org
    EXEC_DIR: /home/gombei/fml
      ML_DIR: /home/gombei/vdom
    Language: Japanese
    TimeZone: +0900


The current configuration is saved in /home/gombei/fml/.fml/system

---Install the Fml system to /home/gombei/fml. (y/n) [n] y
                                                         ~
Installing fml system to /home/yuuji/fml
Fixing Path: src............................................................................libexec..... sbin . cf. bin....................www/cgi-bin.........www/lib ... sys.........module ..Done.

Generate nroff manuals:

Installing bin ...
Installing sbin .
Installing libexec .
Installing cf .
Installing etc ....
Installing sys ..
Installing src .......
Installing drafts ..
Installing messages .....
Installing www ......
Installing module ...
Installing databases ...
Installing doc
..................................................................................
Done.

Setup CGI examples ........
      CGI configuration is saved in /home/gombei/fml/.fml/cgi.conf

 -- Enjoy Internetworking!
------------------------------------------------------------------------------

  ここではFMLのインストールパラメータを[表2]のように指定した。

  [表2] インストールパラメータ
  FML本体のディレクトリ			~gombei/fml/
  MLを保存するディレクトリ		~gombei/vdom/

  以後の説明ではFML本体ディレクトリを $EXEC_DIR、ML保存ディレクトリを 
  $ML_DIR で表すものとする。なお今回の例では、$ML_DIR を ~vdomymzk と同
  一にしてあるがこれは異なっていても構わない。

  (2)virtual domain 対応の軽微な修正

  FMLでは新しいMLを作成(newml)する時に、dot-qmailのサンプルを自動的に作
  成して、$ML_DIR/etc/qmail/alias/ ディレクトリに保存してくれる。virtual
  domain を利用しない場合は、このファイル群をホームディレクトリにコピー
  し、$ML_DIR/etc/qmail/users/assign ファイルをシステムの
  /var/qmail/users/assign に追加することになるが、これは一般ユーザ権限で
  はできない操作である。このような設定方法も悪くはないが、sendmail的ポリ
  シーに漂うような古くささを感じる。

  virtual domain を利用する場合は、makefmlスクリプトが生成してくれる
  dot-qmail ファイル群をそのまま利用してしまうと効率が良い。一つの方法は、
  生成された dot-qmail ファイル群を ~gombei/vdom/ にコピーするというもの
  で、もう一つは makefml スクリプトを少し修正して最初から ~gombei/vdom/ 
  に dot-qmail ファイルを吐き出すようさせるものである。後者の方法を簡単
  に説明しよう。makefml スクリプトには次のような行があるのでこれを探す。

    $qmail_alias_dir = "$ML_ETC_DIR/qmail/alias";
                        ~~~~~~~~~~~~~~~~~~~~~~~
  これを ~gombei/vdom/ に変更する。つまり、

    $qmail_alias_dir = "/home/gombei/vdom";
                        ~~~~~~~~~~~~~~~~~
  のように変更する。

  試験的にテスト用MLを作成して必要なファイル群が作成されるか確かめよう。

	gombei% ~/fml/makefml newml testml
-------------------- 出力結果ここから↓ -----------------------------------
DO "newml" for testml mailing list.
---Creating testml mailing list
   directory /home/gombei/vdom/testml is created as UID=774
   directory /home/gombei/vdom/testml/spool is created as UID=774
---Generting configuration examples.

   Generate template files in /home/gombei/vdom/testml/
         include include-ctl include-mead aliases Makefile crontab
         fmlwrapper.c fmlwrapper.h

   Generate qmail template files in /home/gombei/vdom/etc/qmail/alias/
         .qmail-testml .qmail-testml-ctl .qmail-testml-default
         .qmail-testml-admin .qmail-testml-request .qmail-owner-testml
         .qmail-owner-testml-ctl

   Update /home/gombei/vdom/etc/qmail/users/assign

   Update /home/gombei/vdom/etc/crontab/yuuji

   Create config.ph(/home/gombei/vdom/testml/config.ph):
        /home/gombei/vdom/testml/cf  ->  config.ph ... Done.

   Create template files for commands (help, guide ...)
         help help-admin deny guide welcome confirm objective

   Update /home/gombei/vdom/etc/aliases

   The next step: update your MTA configuration. For example
        % su root
        # cat /home/gombei/vdom/testml/aliases >> /etc/aliases
        # newaliases

   FYI: See templates in '/home/gombei/vdom/testml/'
-------------------- 出力結果ここまで↑ -----------------------------------
	gombei% ls -aF ~/vdom
	        ~~~~~~~~~~~~~
./                              .qmail-testml-ctl
../                             .qmail-testml-default
.qmail-owner-testml             .qmail-testml-request
.qmail-owner-testml-ctl         etc/
.qmail-testml                   testml/
.qmail-testml-admin

	gombei% ls -aF ~/vdom/testml
	        ~~~~~~~~~~~~~~~~~~~~
./              cf              fmlwrapper.c    include         welcome
../             config.ph       fmlwrapper.h    include-ctl
.crc            confirm         guide           include-mead
Makefile        crontab         help            objective
aliases         deny            help-admin      spool/


  続いて配送テスト。修正したmakefmlコマンドを利用すれば、makefml newml 
  した直後にはもう、testml@vdom.ymzk.org というMLアドレスが利用可能になっ
  ているはずなので、ここにメイルを送ってみる。最初は、testml-ML に登録さ
  れていないメンバーからのメッセージを拒否する知らせがFMLから返されるは
  ずだ。そしてこれがうまく機能していることが分かったら、いよいよ運用であ
  る。本稿ではFMLの具体的な操作方法の説明は省略するが、実際にはしっかり
  とFMLについても学習してから利用してほしい。

--[コラム]------------------------------------------------------------------
「一つのFMLで複数の virtual domain を管理する」

もはや10〜100GBクラスのHDDがあまりに安く買えるこの時代に気にするのは愚か
なことなのかもしれないが、virtual domain の数だけFMLをインストールするの
はHDD領域の無駄と感じてしまう。計算機管理者の悲しい性なのかもしれない。
もしあなたが virtual domain を割り当ててもらった一般利用者なら、ホームディ
レクトリにFMLを速攻でインストールする前に、既にシステムにFMLがインストー
ルされていないか管理者に問い合わせてみた方が良いだろう。

既にFMLがある場合は、そのFMLプログラムを利用して新たな virtual domain 専
用のFMLとして動かすことも可能だ。FMLでは、makefmlが動作するときの「ML の
メイルドメイン名」などの情報を一つのパラメータファイルから取得する。この
ファイルが $EXEC_DIR/.fml/system である。ある virtual domain 専用の 
makefml コマンドを作り、それを利用してMLの新規作成などを行なうとよい。も
し、システムに既にインストールされているFMLが /usr/local/fml/ 以下にある
と仮定すると、次の手順により専用のmakefmlコマンドを作成できる。

 ggombei% cp /usr/local/fml/makefml ~/vdom/
 gombei% mkdir ~/vdom/.fml
 gombei% cp /usr/local/fml/.fml/system ~/vdom/.fml
 gombei% vi ~/vdom/makefml
 (先頭付近にある)
  $CONFIG_DIR = '/usr/local/mail/fml/.fml'; #  __MAKEFML_AUTO_REPLACED_HERE__
                ~~~~~~~~~~~~~~~~~~~~~~~~
   という行を↓に変更
  $CONFIG_DIR = '/home/gombei/vdom/.fml'; #  __MAKEFML_AUTO_REPLACED_HERE__
                ~~~~~~~~~~~~~~~~~~~~~~
  (また本文中にあるような $qmail_alias_dir の変更も合わせて行なう)

 gombei% vi ~/vdom/.fml/system
  ($ML_DIR, $DOMAIN を定義している行を↓に変更)
  $ML_DIR = '/home/gombei/vdom';
  $DOMAIN = 'vdom.ymzk.org';

そして自分の virtual domain 用の新しいMLを作成するときは、自分で修正した 
~/vdom/makefml を利用して作業すると良い。
----------------------------------------------------------------------------

  (3)実際のML運用

  ここまでの手順が全てうまく行けば、あとはもう難しいことは何もない。新た
  なMLを作りたければ

	gombei% ~/fml/makefml newml 

  とすればその直後には @vdom.ymzk.org というアドレスの本格的MLが設
  置され利用できるようになっている。これらの動作を変えたい場合は

	gombei% ~/fml/makefml config 

  とすれば良い。どのように動作が変えられるかについては、FMLのマニュアル
  を参照して欲しい。そして、MLを廃止する場合は関連ファイルを消してしまえ
  ば良い。

	gombei% rm -rf ~/vdom/
	gombei% rm ~/vdom/.qmail-*

  たったこれだけで良い。ailasesファイルを修正するために管理者の手を煩わ
  す必要もない。いつでも好きなときに好きな話題でMLを作って、用事が済んだ
  らすぐに消す。もう、MLはサクサク作っては使い捨てする時代だ。

  利用効率を考えても、新しいMLをどんどん作っていく方が良い。長く利用して
  いるMLで話しつづけることは、既に興味を失った人などにも無駄に配送しつづ
  けることにつながる。運営中のMLで、主旨とはちょっと外れた話題で盛りあがっ
  たらその話題をテーマにしたMLを作って、希望者だけそちらに参加するように
  したほうが良い。そうすることで、望まれざる配送のためのトラフィックが節
  約できる。


■利用者に大きな権限を与えることに関する考察

保守的な管理者は、一般利用者にメイルドメインを与えてしまって本当にだいじょ
うぶなのだろうか。トラブルを増やす種にならないだろうかと考えがちだろう。
確かにトラブルを以前より多く出す利用者が出ないとは言い切れない。しかし、
そのような利用者もいずれは学習するはずだ。

また、たとえばWWWの場合、Apache の機能を利用した virtual domain をある利
用者に与えるのはあまり抵抗がないのではなかろうか。なのにメイルのvirtual
domainを与えるのに抵抗を感ずるのは、それこそsendmailの負の功績だろう。

・電子メイル管理はとてつもなく難しいというイメージを植え付けた
・~/.forward などでユーザに宛先を振り替えさせると必ずループを起こす
  から下手にやらせたくないというイメージを植え付けた

そもそもメイル転送で、「手元にも残したい」という ~/.forward を書かせたら
myname, myname@otherdomain

と書きたくなるのが素直な発想で、そう書いたら動作しなかったり、会社でも自
宅でも読みたいといって転送先で同じような転送処理を書きたくなるのは人情な
のに、そう書くとメイルループになって大事故が起こるというのはソフトウェア
としてはとんでもなくまずい設計だと思う。なのになぜ利用者が叱られなければ
ならないのか。

実際には、電子メイル管理は初級管理者でも十分理解できる程度のものだし、利
用者が陥りがちなミスはシステムがそれによる被害を止めるような設計がなされ
るのが健全な社会だと思う。もっともsendmailはフリーソフトウェアなので、不
備があってもまったく責める根拠はないのだが、そうした当然の設計がされてい
るのが qmail であり、Postfixなのである。


■まとめ

ここで紹介したことは新世代MTAを利用して得られる新しい可能性の一部でしか
ない。たったこれだけでも十分に便利だし、配送先としてプロセス起動を利用す
る場合に、宛先アドレスに関する情報が環境変数に入る性質を利用すると、考え
得るほとんどの処理を、簡単なスクリプトでこなせるだろう。実際筆者はこの機
能を利用して色々なメイルアドレス管理をしているので、それ無しの生活にはも
う戻れない。読者のみなさんもsendmailの井戸から飛び出て大きな可能性を一日
も早く手に入れてほしい。


【謝辞】
本稿執筆に当たって検証作業をしてくれた馬渡氏と、WU-IMAPD拡張パッ
クのPostfix対応の早急な試験をしてくれた安井氏に感謝申し上げます。


yuuji@gentei.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]