mini-HOWTO install qmail with MH Christopher Richardson (rdn@tara.n.eunet.de) v1.1 22.03.97 松本庄司 (shom@i.h.kyoto-u.ac.jp) 上の email の組み合わせを使おうかと考えているユーザのために、なんらか の助けになるよう、私のインストールの経験を書きます。 ______________________________________________________________________ 目次 1. イントロダクション 2. 私のシステム 3. qmail のインストール 3.1 maildir2smtp 4. MH のインストール 4.1 mtstailor 4.2 mh_profile 5. fetchmail 6. exmh 7. 免責事項 8. Procmail 9. 情報 ______________________________________________________________________ 1. イントロダクション 私を助けてくれたネットワーカーの皆さんに感謝します。特に、次の人々は Linux のインストールを非常に簡単にしてくれ、また上のすばらしいプログラ ムを作ってくれました。Tony Nugent 氏 (tony@trishul.sci.gu.edu.au)、 David Summers 氏 (david@summersoft.fay.ar.us)、 S.u.S.E (Linux ディス トリビューション) qmail ってなに?どうやって使うの?作者(Dan Bernstein 氏)による紹介から 引用しておきます。 qmail は、安全で、信頼でき、効率的で、単純なメッセージ転送エ ージェントです。インターネット接続された典型的な UNIX ホスト 上の sendmail-binmail システムを、完全に置きかえることができ ます。 安全性:セキュリティは目的ではありませんが、絶対に必要です。 メール配送はユーザにとって非常に重要です。止めることはできな いので、完全に安全でなければなりません。(これが qmail を書き はじめた理由です。 sendmail や他の MTA (Mail Trasfer Agent) のセキュリティホールにうんざりしていたんです。) 信頼性:qmail の straight-paper-path 哲学は、メッセージがシ ステムに受信されれば絶対に紛失しないことを保証します。ま た、maildir という、新しい非常に信頼できるユーザ用メールボッ クスフォーマットをサポートしています。maildir は、mbox ファ イルや MH フォルダとは違って、配送の途中でシステムがクラッ シュしても、壊れたりしません。ユーザが NFS 越しにでも安全に メールを読めるだけでなく、たくさんの NFS クライアントが当時 にその人にメールを配送することもできます。 効率:Pentium で動いている BSD/OS 上で、一日 20 万のローカル メッセージに簡単に耐えることができます。配送された各メッセー ジを取り込み、メールボックスに分配するテストを実際にやってみ ました!リモート配送は、 DNS や SMTP が遲ければ制限されます が、デフォルトで 20 個同時に配送します。だから、大きなメーリ ングリストでもすばやく配送できます。(これが qmail を完成させ た理由です。私は大きなメーリングリストを設定しなければならな かったのです。) 簡便性:qmail は他のどんなインターネット MTA よりもかなり小 さいです。以下に理由を挙げてみます。(1) 他の MTA では、フォ ワード(転送)、エイリアス、メーリングリストの機構が別々になっ ています。qmail は、ユーザが自分のメーリングリストを管理でき るようなフォワード機構だけを備えています。(2) 他の MTA が備 えている配送モードは「速くて安全でない」か「遲くてキューにた まる」です。qmail の送信は、キューに新しいメッセージが来ると すぐに実行されます。つまり、qmail の配送モードはただひとつ、 「速くてキューにたまる」です。(3) 他の MTA には、実際、ロー ドアベレージを見る inetd 用特別バージョンが含まれていま す。qmail は、本質的にマシンに負荷をかけないような設計になっ ていますので、あなたのシステムの inetd から qmail-smtpd を起 動するのは安全です。 sendmail との互換性:qmail には次のような特徴があります。ホ スト、ユーザの仮装(masquarading)、ホストの完全な隠蔽、バー チャルドメイン、ヌルクライアント、メーリングリスト管理者のア ドレス書き換え、リレー制御、ダブルバウンス記録、RFC822 準拠 のアドレスリスト完全対応、クロスホストメーリングリストループ の検出、受信ごとのチェックポイント、ダウンしているホストの バックオフ、メッセージごとのリトライスケジュール、等々。要す るに、今どきの MTA の機能をしっかり備えているわけです。qmail には差し込み式の「sendmail」ラッパーも入っています。これに よって、現在使っている UA (User Agent) をそのまま使うことが できます。 2. 私のシステム Cyrix 6x86。SuSE Linux ディストリビューション。カーネルは 2.0.28 に Cyrix パッチ (http://www.escnet.com) を当てたもの。Elsa Winner Trio +64 グラフィックカード。 PPP リンクで ISP に繋げています。 3. qmail のインストール INSTALL の指示に従います。 注意: o ドキュメントはよくできていますので、きちんと読む時間をとってくださ い。 INSTALL ドキュメントにあるインストール手順の数字を左に書いてお きます。 o 2 - INSTALL.ids ごとに、グループとユーザを手動でセットアップした o 7 - 私のシステムでは ./qmail-makectl がうまく動かなかった。自分の ドメイン名 (mickey.n.eunet.de) を手動で /var/qmail/control/me に加 えた。 o 23 - inetd-conf ファイル にきちんと qmail-smtpd が書かれているか(ス ペルミスしていないか)確認した。(私はスペルミスを発見するために 2 日 かかった:( ) smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd 3.1. maildir2smtp Dan Bernstein 氏が、キューにたまったメールを電話回線経由で ISP に送信 するパッケージを作ってくれました。彼のサイトの serialmailxxx です。 マニュアルページに書いてある通りにこのパッケージをインストールします (Rupert Mazzucco (maz@pap.univie.ac.at) 氏に感謝)。何も難しいこと考え なくても動きます! maildir2smtp - maildir の中身を SMTP で送信する maildir2smtp は SLIP や PPP 接続を経由してメッセージを渡すよう に設計されている。接続されていない側にこれをセットアップするに は、alias 内に新しい maildir を作る。 # maildirmake ~alias/pppdir # chown -R alias ~alias/pppdir 次に、 :alias-ppp を control/virtualdomains に入れ、 ./pppdir/ を ~alias/.qmail-ppp-default に入れる。./pppdir/ の最後の / を 忘れないように。そして、PPP 開始スクリプトの中で次のようなコマ ンドを実行する。 maildir2smtp ~alias/pppdir alias-ppp- $IP `hostname` $IP はリモートの IP アドレスにおきかえること。 注意: o マニュアルページはよくできているので、ちゃんと読んでください。 o maildir2smtp はメールサーバの IP アドレスを必要とします。もし IP が わからなければ、ping <メールホストの名前> を実行してください。IP ア ドレスがわかります。 o このコマンドをログインスクリプトに入れておくこともできます。 ISP に ログインした後に、キューにたまったメールがすべて送信されます。 4. MH のインストール 私の mh-6.8.4/conf/MH は次のようにしました。 ______________________________________________________________________ bin /usr/bin/mh etc /usr/lib/mh #mail #mandir /usr/man #manuals standard chown /bin/chown #cp cp #ln ln #remove mv -f cc gcc ccoptions -traditional -O2 -m486 -D_NFILE='getdtablesize()' -DSIGEMT=SIGUSR1 curses -lncurses #ldoptions -s #ldoptlibs lex flex #oldload off #ranlib on mts sendmail #mf off #bboards off #bbdelivery off #bbhome /usr/spool/bboards pop on popdir /usr/lib/mh sharedlib sys5 slflags -fPIC slibdir /usr/lib mailgroup mail signal void sprintf int #editor prompter #debug off #regtest off options ATHENA options BIND options DPOP options DUMB options FCNTL options MHE options MHRC options MIME options MORE='"/usr/bin/less"' options OVERHEAD options POP2 options POPSERVICE='"pop3"' options RENAME options RPATHS options RPOP options SOCKETS options SVR4 options SYS5 options SYS5DIR options TERMINFO options UNISTD options VSPRINTF ______________________________________________________________________ 注意: o 私は mts sendmail しかコンパイルしていません。/smtp でなにか問題が 起こったら、comp.mail.mh を読んでください。 o 私は mail をコメントアウトしました。mtstailor 経由でコントロールし たかったからです。 4.1. mtstailor qmail はメールをホームディレクトリ (\~/Mailbox) に配送します。私は mtstailor に次のようにつけ加えました。 localname: mickey localdomain: n.eunet.de mmdfldir: mmdflfil: Mailbox uucpldir: uucplfil: mmdelim1: \001\001\001\001\n mmdelim2: \001\001\001\001\n mmailid: 0 umincproc: lockldir: sendmail: /usr/lib/sendmail 注意 o sendmail:/usr/lib/sendmail は、/var/qmail/bin にある qmail の sendmail ラッパーへのリンクです。 o MH では「~/(ホームディレクトリの意)」は使えません。フルパスを書く か、何も付けないでおきましょう。付属ドキュメントによると、何も付け なければデフォルトで $HOME になるそうです。[訳注:少し違うかもしれ ません。Path: Mail としておけば $HOME/Mail が MH の基準ディレクトリ になり、/ ではじまっていないパスは基準ディレクトリからの相対パスに なるようです。詳しくは mh-profile(5) を参照すること ] 4.2. mh_profile これが私の .mh_profile です。 Path: Mail draft-folder: drafts unseen-sequence: unseen AliasFile: /home/rdn/.mh_aliases send: -msgid comp: -form /home/rdn/.mymh-components MailDrop: /home/rdn/Mailbox 注意: 私は、非常に注意深く MailDrop 行を書きました。 [訳注:scan 文字化け対策に、 file-coding: ja_JP.jis7 display-coding: ja_JP.jis7 process-coding: ja_JP.jis7 を加えておいたほうがよいでしょう。] 5. fetchmail 複数のユーザがいるため(家族です:)、私は fetchmail を使うことにしまし た。Linux と fetchmail は、qmail 越しに smtp ポートへメールを配送しま す。 インストールは何事もなく終わりましたが、まだマルチドロップがうまくいっ ていません。 私の .fetchmailrc です。 poll PersonalMail.Germany.EU.net protocol pop3 username myname password mypassword 6. exmh 私が選んだメイラーです。大好き。 ひとつ問題があります。ほとんどのコンパイル済み Tcl/Tk パッケージは、セ キュリティオプション付きでコンパイルされています。SuSE に付いてくる次 のスクリプト .xserverrc.secure はこの問題を解決します。 ______________________________________________________________________ #!/bin/sh # # move this file to ~/.xserverrc, if you don't want to allow everybody to # get access to your X-Server # if [ -x /usr/bin/keygen ]; then if [ ! -x /usr/bin/hostname -a ! -x /bin/hostname \ -a ! -x /usr/bsd/hostname ]; then echo "startx: can't get my hostname - exiting" exit 1 else host=`hostname` fi xauth add $host:0 . `/usr/bin/keygen` sleep 2 xauth add $host/"unix":0 . `/usr/bin/keygen` exec X :0 -auth .Xauthority $* else exec X :0 $* fi ______________________________________________________________________ 7. 免責事項 毎度おなじみの「無保証、無返金、各自の責任で使うこと」です。 8. Procmail qmail FAQ には次のようなコマンドがありあす: In /.qmail add the line ~/.qmail に次の行を加えます | preline procmail 私のシステムでは、.qmail ファイルを作るのに vi を使ったときだけうまく いきました。コマンドの後に空行が入っています。 私は自分のデフォルトで procmail パッケージをリコンパイルしました。私の 作った /usr/local/bin/procmail から /bin/procmail にリンクを張っていま す。コマンドが /usr/local/bin/ にある procmail を見付けてくれるかどう か自信がなかったからです。 procmail には素晴らしいドキュメントが付いています。自分の .procmailrc ファイルを設定する時は、マニュアルページにある例を読んでください。 9. 情報 必要なパッケージ o qmail,setserial は http://pobox.com/~djb/qmail.html にあります。他 の qmail 関係のソフトウェアや、qmail メーリングリストへのポインタも あります。 o MH は ftp.ics.uci.edu:/pub/mh にあります。 Tony Nugent 氏がオリジナルの mh-6.8.3 ソースへのパッチを作っていま す (パッチは ftp://ftp.gw.com/pub/unix/mail/mh/patches/linux/ にあ ります)。 o metamail (8 ビットキャラクタセットを含む、MIME サポート) は ftp.bellcore.com:/pub/nsb にあります。 o fetchmail は ftp://ftp.ccil.org/pub/esr/fetchmail か Eric 氏のホー ムページ http://www.ccil.org/~esr にあります。 o glimpse (テキストサーチエンジン) は University of Arizona にありま す。(http://glimpse.cs.arizona.edu:1994/) o exmh は ftp.sunlabs.com/pub/tcl/exmh/ にあります。 o Tcl/Tk は ftp.sunlabs.com:/pub/tcl ftp.aud.alcatel.com:/tcl ftp.cs.berkeley.edu:/ucb/tcl にあります。 o [訳注:http://www.qmail.com が qmail のホームサイトです]