mini-HOWTO install qmail with MH <author>Christopher Richardson (rdn@tara.n.eunet.de) <date>v1.1 22.03.97 <trans>松本庄司 (shom@i.h.kyoto-u.ac.jp) <abstract> 上の email の組み合わせを使おうかと考えているユーザのために、なん らかの助けになるよう、私のインストールの経験を書きます。 </abstract> <!-- Table of contents --> <toc> <!-- Begin the document --> <sect>イントロダクション <p> 私を助けてくれたネットワーカーの皆さんに感謝します。特に、次の人々は Linux のインストールを非常に簡単にしてくれ、また上のすばらしいプログラム を作ってくれました。Tony Nugent 氏 (tony@trishul.sci.gu.edu.au)、 David Summers 氏 (david@summersoft.fay.ar.us)、 S.u.S.E (Linux ディストリビュー ション) qmail ってなに?どうやって使うの?作者(Dan Bernstein 氏)による紹介か ら引用しておきます。 <quote>qmail は、安全で、信頼でき、効率的で、単純なメッセージ転送エージェ ントです。インターネット接続された典型的な UNIX ホスト上の sendmail-binmail システムを、完全に置きかえることができます。</quote> <quote>安全性:セキュリティは目的ではありませんが、絶対に必要です。 メール配送はユーザにとって非常に重要です。止めることはできないので、完全 に安全でなければなりません。(これが qmail を書きはじめた理由です。 sendmail や他の MTA (Mail Trasfer Agent) のセキュリティホールにうんざり していたんです。)</quote> <quote>信頼性:qmail の straight-paper-path 哲学は、メッセージがシス テムに受信されれば絶対に紛失しないことを保証します。また、maildir という、 新しい非常に信頼できるユーザ用メールボックスフォーマットをサポートしてい ます。maildir は、mbox ファイルや MH フォルダとは違って、配送の途中でシ ステムがクラッシュしても、壊れたりしません。ユーザが NFS 越しにでも安全 にメールを読めるだけでなく、たくさんの NFS クライアントが当時にその人に メールを配送することもできます。</quote> <quote>効率:Pentium で動いている BSD/OS 上で、一日 20 万のローカル メッセージに簡単に耐えることができます。配送された各メッセージを取り込み、 メールボックスに分配するテストを実際にやってみました!リモート配送は、 DNS や SMTP が遲ければ制限されますが、デフォルトで 20 個同時に配送します。 だから、大きなメーリングリストでもすばやく配送できます。(これが qmail を 完成させた理由です。私は大きなメーリングリストを設定しなければならなかっ たのです。)</quote> <quote>簡便性:qmail は他のどんなインターネット MTA よりもかなり小さ いです。以下に理由を挙げてみます。(1) 他の MTA では、フォワード(転送)、 エイリアス、メーリングリストの機構が別々になっています。qmail は、ユーザ が自分のメーリングリストを管理できるようなフォワード機構だけを備えていま す。(2) 他の MTA が備えている配送モードは「速くて安全でない」か「遲くて キューにたまる」です。qmail の送信は、キューに新しいメッセージが来るとす ぐに実行されます。つまり、qmail の配送モードはただひとつ、「速くてキュー にたまる」です。(3) 他の MTA には、実際、ロードアベレージを見る inetd 用 特別バージョンが含まれています。qmail は、本質的にマシンに負荷をかけない ような設計になっていますので、あなたのシステムの inetd から qmail-smtpd を起動するのは安全です。</quote> <quote>sendmail との互換性:qmail には次のような特徴があります。ホス ト、ユーザの仮装(masquarading)、ホストの完全な隠蔽、バーチャルドメイン、 ヌルクライアント、メーリングリスト管理者のアドレス書き換え、リレー制御、 ダブルバウンス記録、RFC822 準拠のアドレスリスト完全対応、クロスホストメー リングリストループの検出、受信ごとのチェックポイント、ダウンしているホス トのバックオフ、メッセージごとのリトライスケジュール、等々。要するに、今 どきの MTA の機能をしっかり備えているわけです。qmail には差し込み式の 「sendmail」ラッパーも入っています。これによって、現在使っている UA (User Agent) をそのまま使うことができます。</quote> <sect>私のシステム <p> Cyrix 6x86。SuSE Linux ディストリビューション。カーネルは 2.0.28 に Cyrix パッチ (http://www.escnet.com) を当てたもの。Elsa Winner Trio +64 グラフィックカード。 PPP リンクで ISP に繋げています。 <sect>qmail のインストール <p> INSTALL の指示に従います。 注意: <itemize> ドキュメントはよくできていますので、きちんと読む時間をとってください。 INSTALL ドキュメントにあるインストール手順の数字を左に書いておきます。 <item> 2 - INSTALL.ids ごとに、グループとユーザを手動でセットアップ した <item> 7 - 私のシステムでは ./qmail-makectl がうまく動かなかった。 自分のドメイン名 (mickey.n.eunet.de) を手動で /var/qmail/control/me に加えた。 <item> 23 - inetd-conf ファイル にきちんと qmail-smtpd が書かれてい るか(スペルミスしていないか)確認した。(私はスペルミスを発見する ために 2 日かかった:( ) smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd </itemize> <sect1>maildir2smtp <p> Dan Bernstein 氏が、キューにたまったメールを電話回線経由で ISP に送 信するパッケージを作ってくれました。彼のサイトの serialmailxxx です。 マニュアルページに書いてある通りにこのパッケージをインストールします (Rupert Mazzucco (maz@pap.univie.ac.at) 氏に感謝)。何も難しいこと考えな くても動きます! <tscreen><verb> 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 アドレスにおきかえること。 </verb></tscreen> 注意: <itemize> <item>マニュアルページはよくできているので、ちゃんと読んでください。 <item>maildir2smtp はメールサーバの IP アドレスを必要とします。もし IP がわからなければ、ping <メールホストの名前> を実行してください。IP ア ドレスがわかります。 <item>このコマンドをログインスクリプトに入れておくこともできます。 ISP にログインした後に、キューにたまったメールがすべて送信されます。 </itemize> <sect>MH のインストール <p> 私の mh-6.8.4/conf/MH は次のようにしました。 <tscreen><code> 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 </code></tscreen> 注意: <itemize> <item>私は mts sendmail しかコンパイルしていません。/smtp でなにか問 題が起こったら、comp.mail.mh を読んでください。 <item> 私は mail をコメントアウトしました。mtstailor 経由でコントロー ルしたかったからです。 </itemize> <sect1>mtstailor <p> qmail はメールをホームディレクトリ (\˜/Mailbox) に配送します。私は mtstailor に次のようにつけ加えました。 <tscreen><verb> 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 </verb></tscreen> 注意 <itemize> <item>sendmail:/usr/lib/sendmail は、/var/qmail/bin にある qmail の sendmail ラッパーへのリンクです。 <item>MH では「˜/(ホームディレクトリの意)」は使えません。フ ルパスを書くか、何も付けないでおきましょう。付属ドキュメントによると、 何も付けなければデフォルトで $HOME になるそうです。[訳注: 少し違うかもしれません。Path: Mail としておけば $HOME/Mail が MH の基準ディレクトリになり、/ ではじまっていないパスは基準ディレクト リからの相対パスになるようです。詳しくは mh-profile(5) を参照すること ] </itemize> <sect1>mh_profile <p> これが私の .mh_profile です。 <tscreen><verb> 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 </verb></tscreen> 注意: 私は、非常に注意深く MailDrop 行を書きました。 [訳注:scan 文字化け対策に、 <tscreen><verb> file-coding: ja_JP.jis7 display-coding: ja_JP.jis7 process-coding: ja_JP.jis7 </verb></tscreen> を加えておいたほうがよいでしょう。] <sect>fetchmail <p> 複数のユーザがいるため(家族です:)、私は fetchmail を使うことにしまし た。Linux と fetchmail は、qmail 越しに smtp ポートへメールを配送します。 インストールは何事もなく終わりましたが、まだマルチドロップがうまくいっ ていません。 私の .fetchmailrc です。 <tscreen><verb> poll PersonalMail.Germany.EU.net protocol pop3 username myname password mypassword </verb></tscreen> <sect>exmh <p> 私が選んだメイラーです。大好き。 ひとつ問題があります。ほとんどのコンパイル済み Tcl/Tk パッケージは、 セキュリティオプション付きでコンパイルされています。SuSE に付いてくる次 のスクリプト .xserverrc.secure はこの問題を解決します。 <tscreen><code> #!/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 </code></tscreen> <sect>免責事項 <p> 毎度おなじみの「無保証、無返金、各自の責任で使うこと」です。 <sect>Procmail <p> qmail FAQ には次のようなコマンドがありあす: In ~/.qmail add the line ˜/.qmail に次の行を加えます <tscreen><verb> | preline procmail </verb></tscreen> 私のシステムでは、.qmail ファイルを作るのに vi を使ったときだけうま くいきました。コマンドの後に空行が入っています。 私は自分のデフォルトで procmail パッケージをリコンパイルしました。私 の作った /usr/local/bin/procmail から /bin/procmail にリンクを張っていま す。コマンドが /usr/local/bin/ にある procmail を見付けてくれるかどうか 自信がなかったからです。 procmail には素晴らしいドキュメントが付いています。自分の .procmailrc ファイルを設定する時は、マニュアルページにある例を読んでくだ さい。 <sect>情報 <p> 必要なパッケージ <itemize> <item>qmail,setserial は http://pobox.com/˜djb/qmail.html にあります。 他の qmail 関係のソフトウェアや、qmail メーリングリストへのポイン タもあります。 <item>MH は ftp.ics.uci.edu:/pub/mh にあります。 Tony Nugent 氏がオリジナルの mh-6.8.3 ソースへのパッチを作っています (パッチは ftp://ftp.gw.com/pub/unix/mail/mh/patches/linux/ にあります)。 <item>metamail (8 ビットキャラクタセットを含む、MIME サポート) は ftp.bellcore.com:/pub/nsb にあります。 <item>fetchmail は ftp://ftp.ccil.org/pub/esr/fetchmail か Eric 氏 のホームページ http://www.ccil.org/˜esr にあります。 <item>glimpse (テキストサーチエンジン) は University of Arizona にあ ります。(http://glimpse.cs.arizona.edu:1994/) <item>exmh は ftp.sunlabs.com/pub/tcl/exmh/ にあります。 <item>Tcl/Tk は ftp.sunlabs.com:/pub/tcl ftp.aud.alcatel.com:/tcl ftp.cs.berkeley.edu:/ucb/tcl にあります。 <item>[訳注:http://www.qmail.com が qmail のホームサイトです] </itemize> </article>