注意: いいかげんに書いた文章なので ひどいです。qmail の仕組みがわからない人は、 最初に こっちを 読んだほうがいいかも。
こっちと内容的にかぶってます。
まず、ほとんど新山の専用機と化している (でも公共物) Linux マシンに 入れてみる。インストールはさっさと終わった。 jp.qmail.org の膨大な ドキュメント (でもちょっと索引が面倒です) を見ながらやったら、 あっさり動く。設定も control/ をいじるだけですごく楽。 このころ、OSF で sendmail を動かしている研究室の人々は 「sendmail に kill -HUP すると落ちてしまう」という理由で 苦労していた。なんだ、qmail のほうがずっといいじゃん、と思う。
このマシン上であれこれ設定を変えてしばらく遊んでみる。 tcp_wrapper も入れてみたりして、ふむふむ。 この試行錯誤のさいに仕入れた知識をもとに qmail の動作というドキュメントを 書いた。こういうのを書くことで自分自身でもずっと理解がしやすくなる。
cl0 にこっそりインストール。さっくり動作。 設定ファイルは こっち 参照。 メールばんばん来てるので、sendmail を止めるのが一番こわかった。 止めたら最後、 qmail は一発で動く。うまくいきすぎて逆にあやしい。
ゲートウェイはメールの中継をするので tcp_wrapper を入れる。 qmail-smtpd は inetd から呼び出されるが、ほんとうは tcpserver のほうがいいらしい (あとで tcpserver から立ち上がるように なおした)。
研究室のほかのマシン (ゲートウェイでもなく、ファイルサーバでもない マシン) は基本的にメールを受けとらない。送るだけである。 なので sendmail は止めて、inetd のエントリも消して、ネットワーク上からの 受けとりは一切できないようにした。送るときは直接ゲートウェイに 接続すればいいし、ローカル配送は home を NFS マウントしているから、 qmail ならネットワーク使わないからね。
Mew は共有ファイル (lib/im の SiteConfig) を設定すれば OK。
MH は post を spost にリンクすりゃいい。 ほんとはもうちょいいろいろある。
.qmail は .forward とすこし書きかたがちがうのだ。 以下はその文面:
Subject: Important notice Date: Sat, 23 Oct 1999 18:25:07 +0900 From: SHINYAMA Yusuke <euske@cl.cs.titech.ac.jp> (Japanese - The english version is below) 東工大 徳永研究室の新山です。このメールは田中・徳永研で、 メールの転送を利用している方にお送りしています。 1999年 11月 7日より、田中・徳永研のメール転送方式が変わります。 今までメールの転送先にはホームディレクトリ直下の .forward ファイルが 使われてきましたが、今後このファイルは無視され、かわって「.qmail」という ファイルが使われることになります。 お手数ですが、メールの転送を希望する方は新しく .qmail ファイルを ホームディレクトリの直下に作成していただくようお願いします。 もし、ログインするのが面倒な場合はその旨私あてに返信してください。こちらで 管理者権限により適切な .qmail を作成させていただきます。 .forward にひとつのアドレスしか書いていないかたは、ただ名前を .qmail に 変えていただくだけで結構です。複数のアドレスを記述している方は注意が必要です。 .qmail は .forward と書き方が異なり、1行に1アドレスを記述するように なっています。またメールをこちらのサーバに残しておく場合、従来のように スラッシュ \ を使うのではなく、"./Mailbox" という行を書いてください。 以下にメールをeuske@hoge.hoge に転送し、田中・徳永研のサーバにも残しておく ような .qmail の例を挙げます: ---- .forward の場合: \euske,euske@hoge.hoge ---- .qmail の場合: ./Mailbox euske@hoge.hoge 移行後もまだ .qmail が作成されていないユーザの方には再度連絡いたします。 ご不明の点がありましたらお問い合わせください。 -- 新山 祐介 euske@cl.cs.titech.ac.jp (English) Hello, I'm a system administrator in Tanaka/Tokunaga Lab., Tokyo Inst. of Tech. On Nov. 7, 1999, our mail system will be altered. After this, your `dot-forward' file doesn't work. If you want to have your mail forwarded, please create a `dot-qmail (.qmail)' file under your home directory. If you agree that I may create the file as a system privileged account, please just reply to this mail. Unlike a dot-forward, a dot-qmail file contains distination addresses one per line. If you have only one address, just rename the dot-forward file into ".qmail". Otherwise, you can put addresses at each line. And you may not let a slash(\) or comma(,) contained in a line. If you want to preserve mails on our server, have the file include a line "./Mailbox". Here is an example dot-qmail file, which forwards a mail to euske@hoge.hoge and preserves it: ---- in .forward: \euske,euske@hoge.hoge ---- in .qmail: ./Mailbox euske@hoge.hoge If you have any question, please ask me. Thank you, Yusuke Shinyama Tokyo Institute of Technology, Japan euske@cl.cs.titech.ac.jp
さて、この時点で sendmail が動いているのはもはや snow (メイルスプール) だけ。しかしいきなり qmail にするにはまだ早い。xbiff やらその他を qmail 対応にしなけりゃならない。
xbiff, xpbiff, xlbiff(利用者一名) を qmail の Mailbox に対応させる。 これは、パッチあててがさごそやる。Maildir にまで対応させるのは さすがにしんどいので省略。しかし xpbiff ならパッチがあるらし。
Solaris の lpsched が印刷キャンセル時の通知をメールでするのだが、 UUCP なメールアドレスを吐くので、qmail だと エラーになる。しょうがないので LPRngを導入。くそったれ。
qmail をインストールし、うごかしておく。 あと tcp_wrapper も。でも inetd はまだ直していない。
/etc/aliases の内容を /var/qmail/alias に展開。 たいした量じゃないだろう…と思って手でやったが、大変だった。 /var/qmail/filters にメイリングリスト関係のフィルタやら、 メンバーファイルやらを置くことにする。以後、こっち使って。 この時点で研究室の admin にアナウンスしたら、もう qmail が 動いてるのかと勘違いされる。まだですよ。
Date: Nov. 4 From: euske To: admin Subject: [qmail] important しんやまです。 qmail への移行にともない、従来の /etc/aliases は機能しなくなり、かわりに /var/qmail/alias にある .qmail-* ファイルがそのアドレスへの 転送を指示します。これは、ユーザのホームにある .qmail と同じです。 で、snow の /etc/aliases の内容を snow:/var/qmail/alias/ 以下に 手で展開しました (ほんとは fastforward を使うのがよいのだが、 あんまり複雑にするのはいやなんで)。 これからはひとつのファイルで全部のエイリアスを書くということがなくなるんで、 どのファイルがだれの責任下にあるか明確にするため、 snow:/var/qmail/alias/NOTICE というファイルを作り、そこに 責任の所在を書くようにしてください。現在これは admin が書き込めるように なっています。 現在の NOTICE を以下に添付しますんで、 責任のある方が以降その dot-qmail を管理するようにしてください。 念のため、正しく展開されてるかどうか確認したほうがよいでしょう。 あと誰が管理してんのか不明な ML があるんですけど、これはどうしましょ。 - euske (以下省略)
Date: Nov. 4 From: euske To: admin Subject: Re: [qmail] important しんやまです。 /usr/lib/mail-list 以下をごっそり /var/qmail/filters というディレ クトリにコピーしました。ML のメンバーファイルは /var/qmail/alias/.qmail-*から /var/qmail/filters/ への symbolic link にしました。いちおうご確認を。 つうわけで、qmail が動きだしてから以降は、エイリアスやフィルタ関係は /var/qmail/filters のものが作動します。気をつけてください。フィル タでパス名に依存してるものはとくになかったんで、問題ないと思います。 が。 せっかく qmail へ以降するにあたって、/usr/lib/sendmail (にせ sendmail) を わざわざ呼び出すのはきもちわるいので、各スクリプト中で }'|/usr/lib/sendmail -fowner-hoge@cl.cs.titech.ac.jp -oi -oem -odb hoge-member となってるところは、 }'|/var/qmail/bin/qmail-inject -fowner-hoge@cl.cs.titech.ac.jp hoge-member としたほうがいいと思う。 まちがえて /usr/lib/mail-list のほうをいじらないように。 - euske
Date: Nov. 4 From: euske To: admin Subject: [qmail] notice しんやまです。 誤解があるようなので少々補足。 ML の qmail 用のエイリアスは、まだ動いていません。フィルタ類も同様です。 snow では、まだ sendmail がメールを受けているのです。 sendmail は 11/7 か 11/8 あたりに止める予定です。 メーリングリストをテストするときは、snow で /var/qmail/bin/qmail-inject を使ってください。 注意!: これは snow での qmail ローカル配送を呼び出すので、研究室内の ユーザに配送される場合 /var/spool/mail/ ではなく $HOME/Mailbox に ファイルができてしまいます。リモートではちゃんと配送されるようです。 qmail には、いわゆる newaliases に相当するコマンドはありません。 dot-qmail ファイルは、できたその時から、いきなり動き出します。 クリティカルなタイミングを避けるため、 dot-qmail の sticky bit (+t) を立てておくと、 qmail はそのアドレスへの配信を一時中止します。だから dot-qmail の 書き換えを安全にやりたかったら、いったんその sticky bit を立ててから 編集してください。終わったら、sticky bit をおろせば 配信が再開されます (つっても、オレはそんなめんどくせーことしねーけど)。 - euske
/var/qmail/filters の Mailing List のスクリプトを あれこれ変更し、sendmail のかわりに qmail-inject を呼び出すようにする。 さあこれで準備完了。
sendmail を止める。もう後戻りできんぞ。
/var/spool/mail のファイルを 各ユーザの ~/Mailbox に mv する。でも、従来の pop がまだ使えるように /var/spool/mail から それぞれの人の ~/Mailbox へ ln -s。
cd /var/spool/mail for i in /home/tanaka/* /home/tokunaga/*; do n=`basename $i` if [ -d $i -a -f $n ]; then mv $n $i/Mailbox ln -s $i/Mailbox $n fi done
inetd をかきかえて kill -HUP。 内側とか外側とかあっちこっちにメールを出してみてうまくいってるかどうか 確認する。ヒヤヒヤ。この瞬間から sendmail とはおさらば。
sendmail, binmail をいろいろ消去。rc を変更。 マシンが何台もあるとけっこう気をつかいますよ、やりのこしがないかどうか。
まだ .qmail がない人 (で forward している人) に警告。
うげー Linux の MH で、 NFS ごしのファイルから inc できない! ファイルのロックがうまくいかないらしいので、 /usr/local/lib/mh/mtstailor を、つぎのように変更。
mmdfldir: mmdflfil: Mailbox sendmail: /var/qmail/bin/qmail-inject servers: cl0i lockstyle: 1 ←ここ
できれば~/Mailbox からメールをとってくれるようにアナウンス。
けっきょく、popper は今まで使っている qpopper (これは qmail とは 関係がない) をそのままにした。qmail-pop3d は maildir/ のみにしか 対応してないようなので。
こんなメールがきました。
To: admin Subject: ML の sed すくりぷと Date: Fri, 19 Nov 1999 14:49:38 +0900 From: SUZUKI Taizan 泰山です. sed を使ったお気楽 ML スクリプトを使っている人におしらせです. qmail を導入した時に ML がちゃんと配送されなくなったので /^Received: /d を削除した人がいるみたいですが,これをやるのであれば,その次の行の /^[ ][ ]*id /d も削っておいた方がいいです. もし,以前のように Received がつかないようにしたいのであれば,上記 の二行の代わりに, /^Received: /d /^[ \t][ \t]*id /d /^[ \t][ \t]*by /d と書くのがよいかと思います. # sendmail では Received が複数行に渡る場合に id で折り返されていた # のですが,qmail では by で折り返されるようです. - たいざん
あれまあ。qmail はヘッダのつけかたが違うので、sed で 適当なスクリプトを書いてたひとはひっかかっちゃうのだ。
rblsmtpd を入れて、 MAPS RBL にあるサイトはすべて拒否。
ここから先はまだ実行していません - 12/6 euske
各種設定ファイルのサンプルをつくる。
そのうち、/var/spool/mail からのリンクをけす。