mail - みる会図書館


検索対象: BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー
34件見つかりました。

1. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

マリスト 1 mailer. conf sendmail send—mail mai lq newaliases /usr/local/sbin/sendmail /usr/local/sbin/sendmail /usr/local/sbin/sendmail /usr/local/sbin/sendmail 並列配送をこなすので、 CPU 資源にも やさしいのであるが、 sendmail から起 動されると、他のプロセスのことは気 にせずに ( 設定された ) 最大数までコ ネクションをはる。入ってくるメール が増加して、 SMTPfeed が大量に起動 された場合、システムのファイルディ スクリプタ等のリソースを使い切って しまう危険がある。その点 f 。 rk したプ ロセス数 ( = コネクション数 ) をきちん と管理している pos ⅲ x や qma ⅱでは、適 切な上限を設定していれば、その心配 はほとんどない。また、 qmail と postfix は piplining をサポートしている注 4 ので、 複数の宛先について、同一サイトに配 送する場合注 5 には、高速化が期待でき る。 セキュリテイへの配慮として、 qmail と同様に、 P 。 s ⅲ x は複数のプロセスに よる役割分担が行われている。 root の 権限が本質的に必要となるのは、 smtp port ( port 25 ) を確保するときと、 1 。 c な mailb 。 x に配送するときだけであ る。各処理段階を別々のプロセスにす るごとによって、 r 。。 t の特権で動作す る部分を小さくできたり、配送などの 処理を並列化できるなどのメリットが ある。 postfix と qmail は似たような背景から 開発された MTA であるが、 sendmail 的 な操作環境をできるだけ引き継ごうと した p 。 s ⅲ x と、 sendmail とはまったく 異なる環境を提供する qma ⅱとでは、管 理インターフェイスが大きく異なる。 D. J. Bernstein 氏 (qmail の作者 ) のポ リシーに共感するのであれば qmail 、そ うでなければ sendmail の環境を引き継 げる postfix を選択するのが通常の用途 には良いだろう。 すでに、 FreeBSD/NetBSD/OpenBSD では ports (pkgsrc) collection に含まれ おり、通常の package や port と同様に 容易にインストールできる。なお、 NetBSD の比較的新しい source tree では base distribution の一部に含まれており、 pkgsrc/pkg を使う必要もない。このよ うな状況なので、ここでは特にインス os fix 、 *BSD , ー pickup qmgr トールについて細かいことには触れな いが、以下の 2 点については注意して おいたほうが良いだろう。まず、 Sendmail と違って pos ⅲ x は複数のプロ セスが協調して動作し、セキュリティ に関する配慮から root/daemon 以外の UID/GID を割り当てる必要がある。 れは ports のインストールスクリプトが 面倒を見てくれるので、特に作業する 必要はないが、管理者としてはその存 在を把握しておいたほうが良いだろう。 また、デフォルトの sendma ⅱを置きか える方法については、各 O S で mail wr 叩 per が用意されているので、それを 利用すると、 make world などで OS を再 インストールしたときなどに、気づか ないうちに sendmail に民ってしまい、 メールをバウンスしてしまった、とい うような事故も防げる。具体的には、 FreeBSD の場合であれば /etc/mail/mailer. conf ( あるいは、 /etc/mailer. conf) にリ スト 1 のように書いておけば良い。具 体的なファイルのパス等は FreeBSD -4.1 を元に記述している。他のシステムに おいては、異なる場合もあるが御了承 いただきたい。 ちなみに FreeBSD.org の mail server で は VMaiIer と呼ばれていた時代から postfix が使われていて、 postfix のテス トべットとして開発に協力していたよ うだ。 PIPe 厄 c 引 smtp 注 4 注 5 8 石 0 B T e ー送信時には利用 ISP やリレホ magazine 20 C) N 図 1 Postfix の処理の流れ 5 継する場合。 るが、受信時は基本的に Sendma ⅱを利用するのでサポートしていない。

2. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

集 M ッ 0 作るプ イメージソース花井浩 hanai@imgsrc. CO. jp メールサーバーを作る iroyukl an 現代人にとって、メールというのは すでに当たり前のものとなってしまっ たようだ。恋人との連絡、親との連絡、 そして飲み会の連絡など、ちょっとし たことはだいたいメールで済んでしま う ( 恋人への連絡がちょっとしたこと かどうかはここでは考えない ) し、ビ ジネスにおいても欠かせない重要なツ ールである。 というわけで ( ? ) 、 こではメール サーバーの作り方について解説しよう。 メールサーバーを作るには、当然のこ とながらメールの仕組みについてそれ なりに知っていなければならない。そ こで、まずメールの仕組みについて簡 単に紹介した後、各ソフトウェアのイ ンストール方法や設定方法について解 説しよう。 メーレの仕組 A さんが B さんへメールを送り、 B さ んがそのメールを受け取って読むまで の流れを考えてみる。 ・ A さんはメールのクライアントソフト ウェアを用いて B さん宛のメールを 作成する。クライアントソフトウェ アには実にさまざまなものがある。 いくつか挙げると Emacs 上で動く mh- e や Mew 、 Wanderlust 、主に UNIX 上 で動く Pine や elm 、そして Windows や Mac OS 上で動く Eud 。 ra といった ものだ。これらのソフトウェアはユ ーザーへのフロントエンドとなるた め、 MaiI User Agent (MUA) と呼ば れる。 ・ A さんは作成したメールを送信する。 送信方法にはいろいろあるが、 MUA がメール転送のプロトコルである SMTP を用いて自ドメインのメール サーバーにメールを渡す、というの がわりと一般的であろう。メールサ ーバーソフトウェアには Sendmail や postfix 、 qma ⅱといったものがあり、 通常はサーバーホスト上でデーモン として動いており TCP の 25 番ポート を見張っている。メールサーバーソ フトウェアは Mail Transfer Agent (MTA) と呼ばれる。 ・ A さんの MUA からメールを受け取っ た MTA は、そのメールをどのホスト に届ければいいかといった情報を DNS で検索し、得られたホスト ( つ まり B さんのドメインのメールサーバ ー ) の 25 番ポートに接続する。そし て SMTP を用いてやり取りを行い、 B さん宛のメールを渡す。 ・ B さん宛のメールを受け取った B さん のドメインの MTA がそのメールをど う処理するか、というのは設定によ って実にさまざまだ。 B さんのスプ ールが自ホストにあるのなら、それ 以上別のホストへ配送する必要がな いため mail.local や mail 、 delivery とい ったローカルメーラ ( 後で解説する ) に渡し、スプールに入るようにする し、別にメールスプール用のホスト があるのならそのホストへ転送する。 いずれにしても、メールは最終的に は MTA からローカルメーラに渡さ れ、スプールに落ちることになる。 ・スプールに入った B さん宛のメール は、なんらかの方法でスプールから 取り出され、 B さんの MUA にやって くる。そこではじめて B さんがその メールを読むことができるのだ。 れにもいくつかの方法がある。 B さ んの MUA が UN Ⅸ上で動くものであ り、しかもその MUA がメールスプー ルがあるホスト上で動くものであれ ば MUA が直接スプールから取り出す し、 MUA とメールスプールが別のホ ストなのであれば次に述べる POP や IMAP といったプロトコルを用いるこ とになる。 ・スプールに入ったメールを取り出す には POP や IMAP といったプロトコル を用いる。ともにいくつかバージョ ンがあるが、 POP3 ( RFC1939 ) 、 IMAP4rev1 ( RFC2060 ) が最も一般 的なのではないかと思う。 POP や IMAP はクライアント / サーバー型の プロトコルであり、メールスプール のあるホスト上で動いているサーバ ーに対してクライアント ( 多くの場 合は MUA そのもの ) が新着メールの 有無やメールの取り出し、削除など をリクエストする、という形式であ る。 以上のように 2000 No. 5 メールシステムはい BSD magazine 石 9

3. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

集 皀 SD で My 0 了を作るツ メールサーバーを作 0 ⅲ a 訂編 ーをカスタマイズする メールサーバ 鈴木斉 /SUZUKI Hitoshi' sigh@kuzirabekon.econ.nagasaki-u、 ac. グリストを sendma ⅱで運用することは 現実的ではないと考えたことが開発の きっかけであったとされている。 qmall メールを読み書きする環境が自由に sendmail の問題点 の特徴としては、 最初に断わっておくが、 ーこで列挙 選択できることと同様にメールを配送 する sendma ⅱの間題とは現在の最新版 ・安全 する環境も取り変えることができる。 に関するものではない。 sendmail に存 ・確実 以前 UNIX でメールの配送と言えば 在したセキュリティ上の問題点の多く ・能率的 sendma ⅱの独占市場であった。しかし、 最近では pos ⅲ x 、 exim 、そして qmail 等 はすでに過去のものとなっている。 ・簡潔 sendma ⅱの問題点として良く列挙され ・ sendmail の置き換えが可能 も広く使われるようになってきている。 てきたものと言えば、 sendmail が置き換えられてきた理由は が挙げられている。もっとも、現在で さまざまであろうが、セキュリティ上 は大抵の MTA がこれらの特徴を持って ・多数の処理を一つのプログラムに詰 の問題点が挙げられることが多いと思 いるため別な観点から特徴を選択した う。世の中が善人だけで構成されてい め込みすぎ。 場合では Ma ⅱ dir と呼ばれる新しいメー ・設定ファイルの書式が複雑で人間に る場合には、セキュリティ上の不備が ル保存形式や、個々のユーザーが自由 よる確認作業が難しい。 あったとしても誰もその不備を攻撃し に設定・管理可能な複数のサプアドレ ・標準的な初期設定が無防備。 たりはしない。残念ながら現実世界と スが選ばれるであろう。 ・大量のメールを高速に処理できない。 同様にインターネットでも利用者人口 ・メールの配送を安全に停止する方法 が増えるに従い悪人の数もまた増加し カ供されていない。 てきていると言わざるをえない。結果 として、昔の sendma ⅱのように他人の ユーサーが自由に設定可能なサプアドレス といったものだ。 qmail を筆頭に send 善意を信じて自己防衛を放棄していた ma ⅱを置き変えるべく登場した多数の もちろん sendma ⅱでもメールアドレ ようなソフトウェアは悪人達の格好の MTA 淑はこれらの問題点を改善するだ スの別名は設定できる。しかし、管理 攻撃対象となってしまった。また、 けに留まらす、個々の特徴も追加され 者以外にも新規に別名を登録できるよ sendmail は大規模なメーリングリスト うに一般ューザーにこの機能を解放し に代表されるような大量のメールを高 ている。 てしまうと、一ユーザーの失敗や悪意 速に処理することが不得手であったこ によって別ユーザーのメール配送の設 とや設定ファイルの書式が複雑かっ難 qmail とは 定にまで影響がおよんでしまうことに tcpserver や djbdns ( 旧 DNScache) 等 解であったことも sendmail を置き変え なる。一方、 qma ⅱカ醍供するサプアド のシンプルかつ高機能なツールの作者 る要因の一つであったと言える。 レス方式ではユーザー名が user のとき で知られる D. J. Bernstein によるメール サーバーが qma ⅱだ。大規模なメーリン には、 user-subl@dommn 、 user-sub2 endmail. 、ら mail sendmail 占時の終 り。宅ツ maii の徴 注 1 Mail Transfer Agent 87 BSD magazine 2000 No. 5

4. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

を実行し、 virtusertable. db を作成する。 さらに図 5 のように /etc/mail/local-host- names を作成し、必要であれば aliases. db も再作成した上で sendma ⅱを再起動 すれば、 info@subl . somewhere ・ gr ・ JP → subl@localhost へ転送 info@sub2. somewhere ・ gr ・ JP → sub2@10ca1host へ転送 となる。これで所期の目標は達成でき たわけだが、各ファイルの内容につい て若干の説明をしておく。 sendmaiI-8.1 1 .O/cf/cf/config. mc 内のマクロ定義 OS 科 PE ( 引数 ) d 可 .. ん stype / *. m4 から該当するファイル 名を引数に指定する。 OpenBSD の場 合は bsd4.4. m4 を指定すると mail. 1 。 cal が使用できなくなるので注意。 DOMAIN( 引数 )dnl サイト特有の設定が必要な場合は MAILER(smtp) dnl MAILER(10ca1)dn1 FEATURE( 、 virtusertable' DOMAIN (generic) dnl OSTYPE (openbsd) dnl divert ( 0 ) d Ⅱ 1 # config. mc f0 て OpenBSD divert(—l) sendmail-8.11. ()/cf/domain/domain 名 . m4 を作成した上で、マクロの引 数に d 。 main 名を指定する。このとき、 domain 名 . m4 には FEATURE( 、 use— cw ー file ・ ) dnl が必須なので注意。通常 は generic を指定すれば良いだろう。 FEATURECvirtusertabIeI, 、 hash /etc/ mail/virtusertable ・ )dnl virtusertable 機能を使用することを宣 高する。キーワード hash は、 usertable に Berkley DB を使用する場合に指定 する。 *B SD 系 OS であれば通常は BerkIeyDB を使用できるようになっ ているはずだが、 sendmail-8.11.0/ devtools/OS 以下のファイルを確認し て、 define ( 、 confMAPDEF ー 、—DNEWDB などと定義されていることを確認し ておこう注 2 。 /etc/mail/src.usertable の書式 基本的には、 受取アドレス 転送先アドレス VERSION 工 D( 、 $ld: openbsd. mc, for virtusertab1e(2000/08/01) $ つ 、 hash /etc/mail/virtusertable ')dnl 図 3 info@sub2. somewhere ・ gr ・ JP sub2 info@subl . somewhere ・ gr ・ JP subl config. mc のように書く。ただし受取アドレス の @ より左が省略されている場合 は、そのドメイン宛のすべてのメー ルが転送先アドレスに転送される。 たとえば、リスト 3 のように記述す ると、 info@subl.somewhere.gr.」 p9u は subl へ、それ以外は some 。 ne @ somewhere. gr. jp へと転送されること になる。 /etc/mail/local-host-names 8.9. x 以則には /etc/sendmail.cw と呼ば れていた。書式は以前同様、サイト 宛として受け取るドメイン名を列記 すれば良い。 /etc/mail/local-host-names への変更を 有効にするには、 sendmail を再起動 しなければならない。が、 virtuser table. db の変更は sendmail の再起動の 必要なしに反映される。 以上、駆け足で解説をしたので説明 が不十分なところもあると思われるが、 ご容赦願いたい。マシンや IP アドレス などの資源が限られた中での複数ドメ インの活用法としての VirtuaI Hosting を 楽しんでいただけたら幸いである。 参考資料 [1]Apache バーチャルホストドキュメン ト ( 日本語 ) http://japache.infoscience. CO. jp/japache/d ocs/vhosts/index. html [ 2 ] VirtuaI Hosting with Sendmail ( 英語 ) http://www.sendmail.org/virtual-hosting. subl . somewhere ・ gr ・ JP sub2. somewhere ・ gr ・ JP 注 文字列の前はヾッ 72 B magazin 20 O N 図 4 /etc/mail/src. usertable 図 5 ート、後ろはシングルクオートなので注意。 /etc/mail/local-host-names 5

5. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

$ sh Bui1d mysendmail. cf Using M4=/usr/10ca1/bin/gm4 rm —f mysendmail. cf /usr/10ca1/bin/gm4 .. /m4/cf . m4 mysendmail. mc > mysendmail. cf Ⅱ . 0 つ FEATURE( 、 mailertable 第、 hash ー 0 /etc/mail/mailertable つ DOMAIN (generic) OSTYPE (bsd4.4 ) VERSIONID( 、 $ld: mail. txt,v 1 . 5 2000 / 08 / 15 04 : 35 : 07 hanai Exp $ つ divert ( 0 ) divert(—l) マリスト 7 mysendmail. mc chmod 444 mysendmail . cf 画面 10 ( rm —f mysendmail. cf & & exit 1 ) この二つは決まりごとだと思ってお MAILER ( smtp) MAILER(IocaI) れるようになる。 が IPv4 で来ても IPv6 で来ても応えら VERSIONID FEATURE( 、 access_db ー FEATURE( 、 no_default-msa つ define ( 、 SMART—HOST ー DAEMON_OPTIONS ( 、 Name=MTA-v4 , DAEMON_OPTIONS ( 、 Name=MTA—v6 , MAILER(10ca1) MAILER(smtp) FamiIy=inet6 , address= FamiIy=inet , address=O. 0.0 esmtp : [mtal . bsdmagazine . net] つ 、 hash ー 0 /etc/mail/access つ ←この行は MTA2 のみ これは sendmail が動くためには特に 意味のないもので、 RCS や cvs でフ ァイルを管理するときの ld キーワー ドを入れるのに用いるとよい。 OSTYPE sendmail が動くホストの OS の種類を 指定する。各種 B s D ではすべて bsd4.4 でいいだろう。 DOMAIN ドメイン固有の設定を一つのファイ ルにまとめて行う場合にこのマクロ を用いる。たとえば、 sendmail- を I.O cf/domain には CS. Berkeley. ァイルがあるが、 、、イルには UCB のコンピー 工ンス部門に特有の設定が記 ・メインに属す 、 hash ー 0 この設定により、 MTA へのアクセス ートするためにはこの二つが必要だ。 いのだが、 IPv4 に加えて IPv6 もサポ IPv4 のみであればこの二つはいらな Fami1y=inet6 , address= DAEMON_OPTIONS( 、 Name=MTA—v6, Fami1y=inet, add て ess = 0 . 0 . 0 . DAEMON_OPTIONS( 、 Name=MTA—v4, オフにする。 age Submission Agent) のデーモンを RFC2476 で定義される MSA (Mess FEATURE ( 、 no_default-msa つ ファイルで行うときに用いる。 スバム対策などでアクセス制限を別 /etc/mail/access つ 、 hash ー 0 FEATURE(access—db, などに用いる。 ングを別ファイルに記述したい場合 特定のドメイン毎のメールルーティ 敢えすは generic でよい。 FEATURE(mai1ertab1e , /etc/mail/mailertable つ る む れ、 78 よD0、1AIN( 、 CS. Berkeley. EDU') ができる ・ : 刎あ設 利用する B magazin らの設定を取り込 SendmaiI や cf に慣 を書いな場合には い、ろう。取り 20 0 N 5 けばよいだろう。前者はローカルメ ーラの定義であり、後者は別の MTA に転送するときなどに用いるメーラ である。 define( 、 SMART—HOST' [mtal . bsdmagazine . net] つ SMART_HOST というマクロは、配 送方法を指定されていないすべての メールの配送を任せるための設定だ。 さらに詳しいことは sendmai ト 8.11.0 / cf / README に書かれているので、ざっ とでいいので一度読んでおくことをお 勧めする。 mysendmail.mc が完成したら、画面 IO のようにすれば sendma ⅱ用の設定フ ァイル mysendmail.cf が生成される。 の後で述べる動作チェックが終われば、 このファイルを /etc/mail/sendmail.cf と しておけば良い。最初に述べたように、 MTAI と MTA2 では少し役割が異なる ためそれぞれについて解説する。 MTAI /etc/mail/l こ local-host-names 、 access 、 ma ⅱ ertab 厄という二つのファイルを用 意する。 local-host-names には一行すっ ホスト名を FQDN で書く。このファイ ルに列挙されたホスト名宛のメールは ローカルメーラに渡される。 access ファ esmtp:

6. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

ーは一度問い合わせた回答の内容をキ ある。 バーおよびメールサーバー、ホスト kyle ャッシュし、同じ内容の問い合わせに が WWW およびメールサーバーで 対してはキャッシュデータを返すこと サンプルサイトのネットワーク構成 cartman が ftp サーバーであるとする。残 ができる。このキャッシュデータが有 サンプルサイトのネットワーク構成 るホスト kenny はクライアントである。 効な時間は、そのデータの大元である は図 1 のようなものと仮定しよう。ド chef はルーターである。リスト 1 に authoritative サーバーが保持している。 メインネームは sample. co.jp 、 IP アドレ sample. co.jp の順引きデータベースファ non-authorltative ガ・一ノヾーのキャッシュ イルを、リスト 2 に逆引きデータベース スは 212.34.56.64 から 212.34.56.79 まで に入ってからその時間が経過したキャ を借り受けているものとする。言うま ファイルを示す。各項目については順 次解説する。 ッシュデータは、フラッシュされるこ でもないが、 212.34.56.64 はネットワー とになる。なお、その時間は TTL(Time クアドレスであり、 212.34.56.79 はプロ To L ⅳ e ) と呼ばれる。 TTL の設定方法 ードキャストアドレスであるので、各 named については後述する。 NIC に与えることのできるアドレス BIND による実装で、 named がネーム は .65 から .78 までの 14 個である。話を サーバーのプログラム本体である。筆 単純にするため、 NAT は使用しておら 者が使用している Ne tB s D の場合、 ずすべてパプリックアドレスを使用す /usr/sbin/named にある。以下 named 起 いよいよ実際にネームサーバーを設 るものとする。 動設定およびオプション設定、またデ 定してみよう。 BIND とは Berkeley 図 1 では、各 NIC のアドレス表記か ータベースファイルを置くパスの詳細 lnternet Name Domain の略で、 UNIX ら共通である 212.34.56 の部分は省略し は NetBSD のデフォルトの場合であり、 における DNS の事実上の標準実装で てある。ここでホスト stan がネームサー FreeBSD や OpenBSD の場合は若干異な BI D 設 lnte rn et 旧 P 指定のアドレス ドメイン : sample.co. jp chef .78 212.34.56.64 .72 .67 .66 .65 ~ ロ ロ ロ ロ ky 厄 Stan 第 DNS,maiI WWW.mail kenny cartman FTP 図 1 サンプルサイトのネットワーク構成 3 イ B magazi n 20 0 N 5

7. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

寺集 でう cn 作 # ls /var/spool/imap/user/hanai 13237. 23645. 13238. 24294. 13240. 24314. 13245. 28446. 13246. 29586. 13247. 29743. 13250. 30130. 13260. 30887. 13720. 31323. 14237. 31325. 16431 . 31339. 16439. 31342. 16468. 31494. 17007. 31687. 17055. 32035. 17105. 32199. 17554. 32734. 19900. 33023. 22985. 33169. 22986. 33172. 37271. 37288. 37290. 37292. 37294. 37311. 37326. 37327. 37333. 37340. 37346. 37357. 37358. 37366. 37377. 37378. 37379. 37380. 37381 . 37382. 33214. 33426. 33494. 33522. 33663. 33690. 34166. 34221 . 34339. 34914. 35390. 35803. 36056. 36072. 36104. 36656. 36935. 37018. 37161. 37270. 37383. 37384. 37385. 37386. 37387. 37388. 37389. 37390. 37391 . 37392. 37393. 37394. . C ache cyrus . header cyrus . index cyrus . seen 画面 8 スプールの表示 いいだろう。 sendma ⅱや pos ⅲ x の設定を変更する必 定義しなければならない。今回は、図 さて、 *BSD では、各ユーザーのメー 要がある。その方法については、この 1 のような構成を想定しているので、 章の最後で解説するのでそちらを参照 ルスプールは /var/mail にある。 UW * BSD で運用するルーター上でメールの server はまさにこの慣習に従っており、 していただきたい。 ゲートウェイとなる MTA を動かし ( こ れを MTAI とする ) 、メールスプールは ユーザー hanai の INBOX は /var/mail/ MTA がローカルメーラ deliver を利用 するように設定できれば、取り敢えず hanai である。そのため、 sendmail や LAN 内のホスト ( これも OS は *B SD) pos ⅲ x といった MTA の設定は特にいじ 一通りの設定が終わったことになる。 上に置く ( これを MTA2 とする ) こと る必要がなかったのだが、 cyrus IMAP 実際にメールを送って、 /var/spool/ にしよう。すなわち、外部からやって server の場合は、上に述べたように くるメールはルーター上にある MTA 1 imap/user/<username>/ 以下にメールが /var/spool/imap/user/<u ser name> カ各ユ 置かれていることなどを確認しよう。 が受け、内部のスプールホストで動い ーザーのスプールになり、しかも、ス Cyrus IMAP Server に関してはさらにい ている MTA2 に渡す、という仕組みだ。 プールは /var/mail/<user name> のような ろいろと紹介したい機能があるのだが、 内部からメールを送る際には、各 MUA mb 。 x 形式のファイルではなく、一つの こでは割愛し、またの機会に譲るこ が SMTP でスプールホスト上の MTA2 に メールを一つのファイルに収める形式 とにする。 メールをあすけ、 MTA2 は外部宛のメ だ。ファイル名の形式は、数字 +. ( ピ ールであればそのまま MTA 1 に渡し、 リオド ) である。たとえば筆者のスプ 自ドメイン宛であればローカルメーラ ールは画面 8 のようになっている。 に渡す、といった具合だ ( 表 1 ) 。 というわけで、メールをスプールへ こで解説する MTA は sendmail だ。 入れるために deliver という専用コマン pos ⅲ x や qma ⅱについては、他の記事で SendmaiI ドが用意されている。これは FreeBSD 詳しく解説されているはずなのでそち sendma ⅱについては今さら解説する の ports の場合であれば /usr/local/cyrus/ 必要もないようなものだと思うが、簡 らを参照していただきたい。 bin に入っているが、ローカルメーラと さて、 MTA の設定を解説するには、 単に紹介しておく。このソフトウェア してこのコマンドを用いるように まずどのようなネットワーク構成かを は、 Eric p,. AIIman 氏を中心に開発され BSD magazine 75 2000 No. 5

8. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

集 皀 SD で M. ッ了を作るプ イルは次のように書く。 最後は mailertable ファイルだ。これ bt オプションを付けて起動しよう ( 画 は宛先ドメイン毎の配送先を定義する 面 13 ) 。 ためのものだが、リスト 8 のように書 確かに、 @bsdmagazine.net9L のメー bsdmagazine . net ルは mta2 に配送されるようになってい こではこれだけでもいいが、他の つまり、 foo@mtal.bsdmagazine.net る。他のアドレスについてもうまく配 ドメインも運用するときにはそのドメ 宛のメールはローカルメーラに配送さ 送されるかテストし、大丈夫なら イン宛のメールを受け取るように、同 mysendmail. cf を /etc/mail/sendmail.cf に せるが、 foo@bsdmagazine.net9u のメー じように書く。たとえば bsd-net.org も ルはスプールホストである mta2. bsd コピーし、 sendmail を再起動すれば終 運用する場合には magazine. net に転送する、という意味 わりだ。 だ。 access と同様に、他のドメインも bsdmagazine . net RELAY 運用する際にはこのファイルも編集す MTA2 bsd—net . org RELAY る。また、編集が完了したら /etc/mail MTA2 の役割は f00@bsdmagazine.net で画面 12 のようにしてデータベースフ とする。 access ファイルが編集できた 宛のメールを受け取り、ローカルメー ァイル (mailertable. (b) を作る。 ら / etc / ma ⅱにおいて画面 11 のようにし ラに渡すことと、外部向けのメールは て、データベースファイル (access. db) こではじめて sendma ⅱの動作チェ mtal に配送を任せることである。上の ックを行うことができる。 sendmail を - を作っておく。 mysendmall.mc で、 MTA2 用に SMART HOST というマクロを定義したが、 れは外部向けのメールを mtal に任せる ためだ。 MTA2 では、 access や mailertable には 特になにも書く必要はなく、 @bsdma gazine. net 死のメールをローカルメーラ に渡すために /etc/mail/local-host-names RELAY v リスト 8 mailertable 10Ca1 esmtp:mta2. imgsrc . CO mtal . bsdmagazine . net msdmagazine . net # /usr/sbin/makemap hash access く access 画面 1 1 データベースファイル (access. (b) を作る # /usr/sbin/makemap hash mailertable く mailertable 画面 12 データベースファイル (mailertable. (b) を作る $ sendmail —bt —Cmysendmai1. cf ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter く ruleset> く address> > 3 , 0 daemon@bsdmagazine . net canonify input : @ bsdmagazine daemon net Canonify2 input : daemon く @ bsdmagazine net > Canonify2 daemon く @ bsdmagazine returns : ne t canonify く bsdmagazine daemon returns : net く bsdmagazine input : daemon net parse Parse0 input : daemon く @ bsdmagazine net Parse0 く bsdmagazine daemon net ParseLoca1 input : daemon く bsdmagazine net ParseLoca1 く @ bsdmagazine daemon returns : ne t Parse1 input : く @ bsdmagazine daemon ne t Mai1erToTrip1e input : mta2 . bsdmagazine daemon く @ bsdmagazine . net く esmtp net > $ # esmtp $@ mta2 Mai1erToTrip1e bsdmagazlne . net daemon く @ bsdmagazine returns : net $ # esmtp $@ mta2 Parse1 bsdmagazine . net daemon く @ bsdmagazine ne t returns : $ # esmtp $@ mta2 bsdmagazine . net daemon く @ bsdmagazine net returns : parse sendmail を -bt オプションを付けて起動する 画面 13 BSD magazine 2000 No. 5

9. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

マリスト 2 /etc/inetd. conf にエントリを加える imap4 stream tcp nowait て 00t V12.264 /usr/local/libexec/imapd ←入力 ←ログインに成功 ←入力 ready imapd $ telnet localhost imap4 Trying 127.0.0.1. Connected to localhost . Escape character is * OK localhost IMAP4rev1 V12.264 A01 login hanai * * * * * * A01 OK LOGIN completed A02 logout * BYE xxx . imgsrc ・ co ・ jp IMAP4rev1 A02 OK LOGOUT completed server Connection closed by foreign host . 画面 4 telnet で AP の動作確認をする $ telnet localhost imap4 Trying 127.0.0.1. Connected tO localhost . Escape character iS * OK localhost IMAP4rev1 A01 login hanai * * * * * * A01 OK LOGIN completed A02 CREATE f00 A02 OK CREATE completed A03 logout A02 OK LOGOUT completed * BYE xxx. imgsrc ・ co ・ jp IMAP4revI server て e ady ←入力 ←フォルダーを作成 ←入力 terminating connection Connection closed by foreign host . ったのではないかと思う。 IMAP がプロ トコルとしてはかなり重いためだと思 うのだが、データのやり取り以前に MUA とサーバーの間のやり取りにもの すごく時間がかかっていたのである ( なみに、このときは勤務先のホスト こ ssh 、、ログインして読む、という方法 画面 5 フォルダーを作成する UW Server でな 決 IMAP 72 (c Mello ngton 、なた、。。 AP にも問題があり で一ないのだが、使いよう は矢変便利なのでぜひ試して す。 = : 種 sD で利用できる まここ。は University 0f Wash1 。 3 : まいぐっかの種類があ IMAP の仕様は、 University of Washington の Mark crispin 氏を中心、に 開発が続けられており、 UW server は その reference implementation という位 置付けにあるソフトウェアだ。ちょっ と使ってみる分には、こちらのほうが 簡単ではないかと思う。 UWServer に 関する情報やソースは http : / / www. washington.edu/imap/から得られるので 一度覗いておくようにしよう。 インストールは、自分で手で行うの もそれほど面倒ではないが、 ports/ packages や pkgsrc に頼ってもいいだろ う。インストールができれば、 qpopper と同様に /etc/inetd. conf を編集する。た とえば imapd を /usr/local/libexec にイン ストールした場合はリスト 2 の行を加 server の場合は各ユーザーのホームデ やってみれば一発でわかるのだが、 UW サーバーの実装や設定による。実際に だが、どこに作られるか、というのは 側にフォルダーを作ることができるの さて、 IMAP ではユーザーがサーバー 合、画面 4 のような感じだ。 トする MUA を用いて行う。 telnet の場 動作確認は、 telnet や IMAP をサポー んる。 を /var/mail にマウントし、 では ccd でミラーリングを行うディスク んあるとは思うのだが、筆者の勤務先 これはこれで問題ない場合もたくさ ィレクトリが作成されているはずだ。 ィレクトリを見てみると、 foo というデ 自分 ( この場合は hanai) のホームデ ィレクトリだ ( 画面 5 ) 。 ) し、パフォーマンスはあま かるようだ ( 最近はそうでもないよう キュリティーホールやバグがよく見つ tation ということもあるのだろうが、セ UW Server は、 reference implemen いようにしなければならない。 をあらかじめ作っておくことを忘れな クトリ (/var/spool/im 叩 -folders/<user>) ユーザーのためのフォルダー用ディレ ただ、この場合は IMAP を使いたい パッチを当てるだけだ。 env—unix. c というファイルにリスト 3 の っても非常に簡単で、 src/osdep/unix/ のソースに少し手を入れている。とい という環境にしたいため、 UWServer に作成 mail/imap-folders/ く user name>/ 以下 ・各ユーザーの IMAP フォルダーは /var/ く username > とし、うファイル ・各ユーザーのスプールは /var/mail/ B を取り上 magazin erv ) C る一 20 0 N と Carnegie し , のもの こしよう。 5

10. BSD magazine No.5 BSDでMy Serverを作ろう! ; Mr.McKusick特別インタビュー

寺集 皀 SD で M ッ 0 了を作るツ NameVirtua 旧 OSt アドレス [ : po VirtuaIHost をホスト名べースで実現 するためのディレクテイプだ。アド レスには HOST 名、 IP アドレスとも 使用可能だが、 Apache のドキュメン トでは IP アドレスを書くことが推奨 されている。 p 。 rt 番号はオプション である。このディレクテイプは httpd. c 。 nf の中に一つだけ書けば良い。 <Virtua 旧 ost アドレス > <Nirtua 旧 ost> このディレクテイプで囲まれたグル ープ内に、 Virtual Host の設定を行 う。必須なのは S e r v e r N a m e と DocumentRoot だ。設定する VirtuaI Host の数だけ、このディレクテイプ を設定すれば良い。 ServerAIias や ServerPath も設定できるが、通常は 必要ない。古いプラウザに対応する ためには ServerPath の設定が必要だ ( 参考資料川を参照 ) 。 ServerName 仮想ホスト名 リダイレクトされる Virtual Host の名 ・ gr ・」 P ・ gr ・」 P TransferLog 10gs/sub2—access—10g ErrorLog 10gs/sub2¯error—10g ServerName w . sub2. somewhere ・ gr ・ JP DocumentRoot /home/sub2/pub1ic—htm1 ServerAdmin inf0@sub2. somewhere ・ gr ・ JP く Virtua1Host host . somewhere . gr ・ jp> く /Virtua1Host> TransferLog logs/subl—access—log ErrorLog logs/subl¯error—log ServerName www. subl . somewhere ・ gr ・ JP DocumentRoot /home/subl/public—html ServerAdmin info@subl . somewhere ・ gr ・ JP く Virtua1Host host . somewhere ・ gr ・ jp> NameVirtua1Host host . somewhere ・ gr ・ JP 前を設定する。 DocumentRoot ティレクトリ / ヾス リダイレクトされる Virtual Host の DocumentRoot を設定する ErrorLog ファイル名 TransferLog ファイル名 <VirtuaIHost> ディレクテイプ内に設 定することで、 Virtual Host 毎のエラ ーログとアクセスログが取れる。必 須ではないが設定しておいたほうが 良いだろう。 ServerAdmin e-mail アドレス この時点ではまだメールアドレスの 設定ができていないが、とりあえず 書いておけば良い。 これで、複数ドメインでの web ペー ジ表示はできるようになった。次 0 ト メイン毎にメールアカウント設定し、 別ューザーが受け取れるように設定し よう。 MTA は sendmail 8.11.0 とし、 メールを受け取歹 く /Virtua1Host> マリスト 2 MX レコードの設定 subl sub2 IN IN MX 10 MX 10 図 2 httpd.conf への追加項目 hOSt . somewhere hOSt . somewhere sendmail.cf の設定には m4 を使用する。 なお sendmail 8.10. x 以降 sendmail.cf な どの設定ファイルのデフォルトの場所 が / etc / ma ⅱに変更になっているので、 8.9. x 以前のバージョンをご使用の方は 読み替えてほしい。あるいは、どうせ 設定のためにアーカイプを取ってくる ので、この機会に 8.1L0 以降に upgrade してしまうのも一つの方法だ : - ) 。 sendma ⅱの導入方法の詳細に関しては 「メールサーバーを作る」の記事を参照 してほしい。 こでも先に DNS の設定をし さて、 てしまおう。 subl. somewhere. gr. 」 p 、 sub2. somewhere. gr. jp 宛のメールカ host. somewhere. gr.jp に転送されるよう に、 somewhere. gr. 」 p zone の MX レコー ドを設定しなければならない。これは、 リスト 2 のように設定する。 host. some where. gr. jp は CNAME であってはならな い。 CNAME でもとりあえす動くが、 逆引きできないので問題が発生する場 合があるからだ。 次に、手近なサイトからアーカイプ を取得して注 1 ローカルに展開しよう ( すでに導入済みな場合は必要ない ) 。 # cd sendmai1—8.11.0/cf/cf に移動して、図 3 のように config. mc を 作成する (cf/cf は typo ではない ;ー))。 # sh Bui1d config. cf を実行し、できあがった config. cf を /etc/mail/sendmail.cf にコピーする /etc/mail/src. usertable を図 4 のように作 成し、 # makemap hash virtusertable く src . 注 1 ftp://ftp.iij.ad.jp/pub/network/sendmail/など。 usertable 2000 No. 5 BSD magazine 779