HardenedBSD/share/doc/ja_JP.EUC/handbook/mail.sgml
1997-02-22 13:06:56 +00:00

586 lines
21 KiB
Plaintext

<!-- $Id$ -->
<!-- The FreeBSD Japanese Documentation Project -->
<!-- Original revision: 1.8 -->
<!--
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
<linuxdoc>
<article>
<title> メール
<author> &a.wlloyd;
<date> 24 Nov 1996, (c) 1996
<abstract> このセクションでは, FreeBSD 上での電子メールをセットアップするための基本的な情報について書かれています. </abstract>
<toc>
-->
<chapt><heading>電子メール<label id="mail"></heading>
<p><em>原作: &a.wlloyd;.</em>
<p><em>訳: &a.mihoko;14 January 1997.</em>
<p> 電子メールのコンフィグレーションは,
多くの <ref name="システム管理" id="bibliography"> の書籍で主題
として取り上げられています.
ネットワークに合わせたメールホスト構築の範疇を越えるようなことをする
のは, 簡単にはいきません.
電子メールのコンフィグレーションの一部は, ドメインネームシステム
(DNS) によって制御されています. あなた自身で DNS サーバを
立ち上げたい場合には, <bf><tt> /etc/namedb </tt></bf> ファイルを
あなたのサーバに合うように変更してください.
さらに詳しい情報が必要な場合には,'<bf><tt> man -k named </tt></bf>'
コマンドを実行してください.
<sect><heading>基本事項</heading>
<p>
電子メール交換の主要なプログラムや構成要素を, 次に示します.
<tt/メールホスト/ はあなたのホストやネットワークに対するすべて
の電子メールを配送したり受け取ったりするサーバです.
<sect1><heading>ユーザプログラム</heading>
<p> これは, <tt /elm, pine, mail/ や, より洗練された WWW ブラウザ
のようなプログラムです. このプログラムは, 単純に
すべてのメールをローカルメールホスト転送します. この転送は,
<tt>sendmail</tt> を呼び出すか, メールホストに対して TCP 上
の通信を使ってメールを配送するかのいずれかによっておこないます.
<sect1><heading>メールホストサーバデーモン</heading>
<p> 通常, このプログラムはバックグラウンドで実行されている
<tt /sendmail または smail/ です. 実行をやめたり,
コマンドライン引数を変更するには,
<tt> /etc/sysconfig </tt> ファイルを編集します.
特別な理由(<ref name="ファイアウォール" id="firewalls"> を
構築している場合など)がないかぎり, 実行する設定にしておくべきです.
<p>
<tt>sendmail</tt> は安全なサイト上であっても潜在的にセキュリティ上の
弱点になることを覚えておいてください.
<tt>sendmail</tt> のいくつかのバージョンでは, セキュリティ上の問題が
知られています.
<p><tt><bf> sendmail </bf></tt> は, 電子メールの配送,
受信の二つの仕事をおこないます.
<p><bf><tt/sendmail/ </bf> は, サイトの外側へメールを配送する必要が
ある場合, DNS を参照して配送先のメールを受け取る実際のホストを決定します.
<p> <tt/sendmail/ が配送エージェントとして動作する場合は,
ローカルキューからメッセージを取り出し, 受信側
コンピュータ上の sendmail へインターネットを介して配送します.
<sect1><heading>DNS - ネームサービス</heading>
<p> ドメインネームシステムとそのデーモン <tt/named/ は, ホストから
IP アドレス, および ホスト名からメールホストへのマッピングをおこなう
データベースを持っています.
IP アドレスは "A" レコードで定義します. "MX" レコードでは,
あなた宛のメールを受け取るメールホストを定義します.
もし あなたのホスト宛のメールに対する "MX" レコードを持っていない場合には,
メールはあなたのホストに直接配送されます.
あなたが自分自身の DNS サーバを実行させていない場合には,
DNS 上の情報を自分で変更することはできません.
インターネットプロバイダを使用している場合には, プロバイダに依頼して
変更してもらってください.
<sect1><heading>POP サーバ</heading>
<p> このプログラムはメールボックスからメールを取り出し,
ブラウザにメールを渡します. POP サーバをあなたのマシン上で
動かしたい場合には, 次の二つの作業をする必要があります.
<itemize>
<item>pop ソフトウェアを
<url url="../ports/mail.html" name="ports コレクション"> から入手
します.
pop ソフトウェアは, <tt><bf> /usr/ports </bf></tt>
または パッケージコレクションにあります.
このハンドブックには, <ref name="ポート" id="ports"> システム
についての完全な解説のセクションがあります.
<item>POP サーバを起動できるように,
<bf><tt>/etc/inetd.conf</tt></bf>
ファイルを編集します.
</itemize>
入手した pop プログラムには説明文が付属していますので, それを読んで
ください.
</sect>
<sect><heading>コンフィグレーション</heading>
<sect1><heading>基本事項</heading>
<p>
あなたのマシンに FreeBSD を普通にインストールして,
<bf><tt> /etc/resolv.conf </tt></bf> ファイルを設定するか,
またはネームサーバを走らせれば,
他のホストへ電子メールを送ることができるようになります.
あなたのホスト宛のメールを特定のホストに配送するようにしたい場合
には, 次の二つの方法があります.
<p>
- ネームサーバ ( <tt><bf>man -k named</></> ) を実行し,
あなた自身のドメイン <tt> smallminingco.com </tt> を定義する.
<p>
- あなたのホストに対する現在の DNS 名に配送されたメールを受け取る.
つまり <tt> dorm6.ahouse.school.edu </tt> 宛に送られたメールを受け取る.
<p>
インターネットへ完全に接続されたあなたのホストに直接メールが配送される
ためには,
ネームサーバのどのオプションを使用するかはあまり重要なことではありません.
大切なのは, あなたが恒久的な IP アドレスを持っていなくてはいけないと
いうことです. ダイナミック PPP で得られる IP アドレスではダメです.
もしあなたがファイアウォールの内側にいる場合は,
ファイアウォールが smtp トラフィックを
あなたのホストに渡すように設定されていなければいけません.
そのためには, ファイアウォールとなるホストの
<bf><tt> /etc/services </tt></bf> に
<verb>
smtp 25/tcp mail #Simple Mail Transfer
</verb>
と書いておきます.
あなたのホスト上でメールを受けたい場合には, DNS の MX エントリが
あなたのホストアドレスを指しているか,
あなたのホストの DNS 名に対して MX エントリが存在しないことを
確認してください.
次のコマンドを実行してみてください.
<verb>
newbsdbox# hostname
newbsdbox.freebsd.org
newbsdbox# host newbsdbox.freebsd.org
newbsdbox.freebsd.org has address 204.216.27.xx
</verb>
もしあなたのマシンが上記のメッセージだけを出力したならば,
<tt><bf>root@newbsdbox.freebsd.org</bf></tt> へのメールは, 問題なく
配送されるでしょう.
上記のメッセージの代わりに,
<verb>
newbsdbox# host newbsdbox.freebsd.org
newbsdbox.FreeBSD.org has address 204.216.27.xx
newbsdbox.FreeBSD.org mail is handled (pri=10) by freefall.FreeBSD.org
</verb>
というメッセージが出力された場合は, あなたのマシンに直接配送された
すべてのメールは, freefall 上の同じユーザ名に配送されてます.
この情報は, あなたのドメインネームサーバ上で設定します.
この設定をおこなうホストは, <bf><tt> /etc/resolv.conf </tt></bf>
にプライマリネームサーバとして書いたホストと同じホストであるべきです.
メールルーティング情報をもつ DNS レコードは, メールエクスチェンジャエントリ
(MX エントリ) です. MX エントリが存在しない場合には,
アドレスレコードにしたがって, 直接宛先ホストに配送されます.
freefall.freebsd.org の現時点での MX エントリは, 次のようになっています.
<verb>
freefall MX 30 mail.crl.net
freefall MX 40 agora.rdrop.com
freefall HINFO Pentium FreeBSD
freefall MX 10 freefall.FreeBSD.org
freefall MX 20 who.cdrom.com
freefall A 204.216.27.xx
freefall CNAME www.FreeBSD.org
</verb>
freefall は多くの MX エントリを持っています.
もっとも MX の値が小さいホストが, 最終的にメールを受け取ります.
もし freefall が他の処理で忙しかったり, ダウンしているような場合には,
他のホストが, 一時的にメールをキューにいれます.
使い勝手をよくするためには, 代替の MX サイトは, それぞれ
別の経路でインターネットへ接続しているとよいでしょう.
インターネットプロバイダまたは他の関連サイトが, このサービスを
提供することができます.
<bf><tt>dig, nslookup, </tt></bf>や<bf><tt> host </tt></bf> コマンド
を使うと, とても便利です.
<sect1><heading>あなたのドメイン (ネットワーク) に対するメール設定<label id="mail:domain"></heading>
<p>
ネットワークメールホストをセットアップするためには, すべての
ワークステーション宛のメールを直接受ける必要があります.
言いかえれば, <tt> *.smallminingco.com </tt> 宛のすべてのメールを
ハイジャックし, そのメールをあなたのメールホストである個々のマシンにに配送
します.
それらのワークステーション上のネットワークユーザは, たいていメールを
POP や telnet 等で受け取ります.
「同じユーザ名」のユーザアカウントが, 両方のマシンに存在しなければな
りません. 必要ならば, アカウントを作成するために <tt/adduser/
コマンドを使用してください. <tt/shell/ を <tt>/nonexistant</tt>
に設定すると, ユーザはログインできなくなります.
使用する予定のメールホストは, 各ワークステーションごとにメール交換が
できるように設定されていなければなりません. これは, DNS (すなわち
BIND や named) の設定が必要です. 詳細は, ネットワークの本を参照してください.
基本的には, 以下の行を DNS サーバに追加する必要があります.
<verb>
pc24.smallminingco.com A xxx.xxx.xxx.xxx ; Workstation ip
MX 10 smtp.smallminingco.com ; Your mailhost
</verb>
自前で DNS サーバを実行しているのでなければ, この作業は, 自分では
おこなえません. 自分で DNS サーバを実行したくない場合は,
インターネットプロバイダ等に依頼して, 作業をおこなってもらってください.
この作業により, このワークステーション宛のメールは,
MX (メールエクスチェンジャ) ホストに送られるようになります.
A レコードがどのマシンを指しているかどいうことには関係なく,
メールは MX ホストに送られます.
<p>
この機能は, 仮想電子メールホスト (Virtual Email Hosting)
を実装するために使用されています.
<p>例
<p>
foo.bar というドメインを持つ顧客がいて,
foo.bar 宛のメールをすべて, わたしのマシン
smtp.amalliap.com に送りたいと思っています.
このような場合, あなたの DNS サーバ上で, 以下のようなエントリを作成
しなければなりません:
<verb>
foo.bar MX 10 smtp.smalliap.com ; your mailhost
</verb>
そのドメインに対して電子メールを送りたいだけなら,
A レコードは必要ありません.
つまり, <tt>foo.bar</tt> に対するアドレスレコードが存在しない限り,
'<bf><tt>ping foo.bar</tt></bf>' コマンドが動作することを期待しては
いけません
メールボックスへの最終的な配送が行われるメールを実際に受けている
メールホスト上では, sendmail はメールを受け付けているホストを
知っている必要があります.
<p>そのためには, (FEATURE(use_cw_file) を使用している場合)
/etc/sendmail.cw ファイルに pc24.smallminingco.com を追加するか,
<bf><tt>/etc/sendmail.cf</tt></bf> ファイルに,
"Cw myhost.smalliap.com" の行を追加してください.
<p>
もしあなたが本気で <tt/sendmail/ を使って何かしようと思うなら,
sendmail のソースをインストールするべきです.
ソースには, たくさんのドキュメントも付いています.
<ref name="UUCP のセットアップ" id="sendmailuucp"> の節に <tt/sendmail/ の
ソースを入手するのに必要な情報が掲載されています.
<sect1>
<heading> UUCP のセットアップ<label id="sendmailuucp"></heading>
<p><em>よくある質問 (FAQ) より抜粋.</em>
<p>
<p>
FreeBSD に付属する sendmail のコンフィグレーションは,
直接インターネット接続しているサイトに合うように作られてい
ます. メールを UUCP 経由で交換するようにしたい場合には,
別の sendmail コンフィグレーションファイルをインストールし
なければなりません.
<p>
<tt>/etc/sendmail.cf</tt> を手動で作成することは, 純正主義者
がおこなうことだと考えられています. sendmail のバージョン 8
では, <tt>m4</tt> プリプロセッサを使用して,
コンフィグレーションファイルを生成する方法が取られています.
この場合, 実際に手動で作成したコンフィグレーションは,
実際のコンフィグレーションより簡潔です.
以下の場所にあるコンフィグレーションファイルを使用してください.
<verb>
/usr/src/usr.sbin/sendmail/cf
</verb>
システム上にすべてのソースをインストールして
いない場合, sendmail の設定ツールは不完全なままであり,
それは個別のソース配布物の中にあります.
CD-ROM をマウントしてあれば, 以下のようにします.
<verb>
cd /usr/src
tar -xvzf /cdrom/dists/src/ssmailcf.aa
</verb>
驚かないでください. これはたった数百キロバイトのサイズのファ
イルです.
<tt>cf</tt> ディレクトリ上にある <tt>README</tt> ファイル
には, m4 コンフィグレーションの基本的な紹介が書かれてい
ます.
<p>
UUCP での配送には, <em>mailertable</em> 機能を使用すること
をおすすめします. これは sendamil が配送経路を決定するのに
使用するデータベースファイルです.
<p>
まずはじめに, <tt>.mc</tt> ファイルを作成します.
<tt>/usr/src/usr.sbin/snemdail/cf/cf</tt> ディレクトリに
これらのファイルを置きます. ここには既にいくつかの例が
置いてあるので, 見てください.
<tt>foo.mc</tt> という名前で作成したと仮定すると,
それを有効な <tt>sendmail.cf</tt> に変換するためには,
次のようにします:
<verb>
cd /usr/src/usr.sbin/sendmail/cf/cf
make foo.cf
cp foo.cf /etc/sendmail.cf
</verb>
典型的な <tt>.mc</tt> ファイルは次のような内容です:
<verb>
include(`../m4/cf.m4')
VERSIONID(`Your version number')
OSTYPE(bsd4.4)
FEATURE(nodns)
FEATURE(nocanonify)
FEATURE(mailertable)
define(`UUCP_RELAY', your.uucp.relay)
define(`UUCP_MAX_SIZE', 200000)
MAILER(local)
MAILER(smtp)
MAILER(uucp)
Cw your.alias.host.name
Cw youruucpnodename.UUCP
</verb>
<em>nodns</em> と <em>nocanonify</em> は, メール配送をおこなう
際に, DNS を参照しないようにするための設定です.
<em>UUCP_RELAY</em> は, 必要な設定ですが, ここでは理由を
説明できません. その理由について, ここでは質問しないでください.
.UUCP 仮想ドメインアドレスを扱うことができるインターネット
ホスト名を書いてください.
おそらく, 使用する ISP のメール中継ホスト名をそこに記述する
ことになります.
<p>
この設定が終了したら, <tt>/etc/mailertable</tt> と呼ばれる
ファイルが必要になります. このファイルの典型的な例を示します:
<verb>
#
# makemap hash /etc/mailertable.db < /etc/mailertable
#
horus.interface-business.de uucp-dom:horus
.interface-business.de uucp-dom:if-bus
interface-business.de uucp-dom:if-bus
.heep.sax.de smtp8:%1
horus.UUCP uucp-dom:horus
if-bus.UUCP uucp-dom:if-bus
. uucp-dom:sax
</verb>
見て分かるように, これは実際に使用されているファイルの一部
です. はじめの三行は, ドメインアドレスが指定されたメールが
デフォルトルートに送信せずに, 配送パスを「短縮」して, 隣接
UUCP サイトにメールを送るための設定です.
次の行は, メールを SMTP を使用して配送されているローカル
イーサネットドメイン上のマシンに送信するための設定です.
最後に, UUCP 接続されているドメインが, .UUCP という仮想ド
メイン表記されている場合です. これは,
「uucp-neighbor!recipient」をデフォルト規則で書換えるため
です. 最終行は必ず シングルドット (.) を指定します.
上記のどのパターンにも当てはまらない送信先に対して, あなた
のメールの世界中へのゲートウェイとして動作してくれる隣接
UUCP サイトに, UUCP を使って配送します.
<tt>uucp-dom:</tt> というキーワードの後に書かれたすべての
ノード名は, 隣接 UUCP サイトでなければなりません.
そのサイトと UUCP 接続を行っているかどうかは, コマンド
<tt>uuname</tt> を使用して確かめることができます.
<p>
実際に使用するには, このファイルを DBM データベースファイ
ルに変換する必要があることを忘れないでください.
これを実行するためのコマンド
行は, mailertable の先頭にコメントとして記述されています.
通常, このコマンドは, mailertable を変更するたびに実行しな
ければなりません.
<p>
最終ヒント: もしいくつかの特定のメール経路が正しく動作する
かどうかが心配ならば, sendmail の <tt>-bt</tt> オプション
を覚えておいてください. このオプションは sendmail
を <em>アドレステストモード</em> で起動します.
メールの経路をテストするには, 0 のあとにメール経路をテスト
したいアドレスを入力してください. 最後の行にあなたが使用する
インターネットメールエージェント (メール中継プログラム) と,
このエージェントに呼び出される宛先のホスト名と,
(翻訳可能な場合) アドレスがが表示されます. このモードを
終了するには, Control-D を入力します.
<verb>
j@uriah 191% sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 0 foo@interface-business.de
rewrite: ruleset 0 input: foo @ interface-business . de
...
rewrite: ruleset 0 returns: $# uucp-dom $@ if-bus $: foo \
< @ interface-business . de >
> ^D
j@uriah 192%
</verb>
</sect>
<sect><heading>よくある質問 (FAQ)<label id="mailfaq"></heading>
<p><em>このセクションは, FAQ から移動してきました.</em>
<sect1>
<heading>どうして 同じサイトのホストに対して完全な形のドメイン名 (FQDN) を使わなければいけないの?</heading>
<p>
おそらく, そのホストは実際には違うドメインに属しているのでしょう.
例えば, もしあなたが foo.bar.edu ドメインにいて,
bar.edu ドメインの中の「mumble」というホストに接続したいと
します. その場合あなたは, 「mumble」ではなく
「mumble.bar.edu」という完全な形のドメイン名 (FQDN) によっ
てそのホストを参照しなければなりません.
<p>
伝統的に, これは BSD BIND リゾルバでは許されていました.
しかしながら, FreeBSD に付属する現在の <em>BIND</em> の
バージョンでは, 自分が属しているドメイン以外では,
完全な形でないドメイン名に対するデフォルトの省略形は
使用できません.
ですから, 完全でないホスト名 <tt>mumble</tt> は,
<tt>mumble.foo.bar.edu</tt> として解決されるか,
ルートドメインに検索しにいくでしょう.
<p>
これは, <tt>mumble.bar.edu</tt>, <tt>mumble.edu</tt>
というように検索し続けるような過去の動作とは異なります.
なぜこれが悪い慣例, さらにはセキュリティーホールと考えられ
るようになった理由については, RFC1535 を参照してください.
<p>
この問題を回避するには,
<p><tt>
search foo.bar.edu bar.edu
</tt><p>
という行を
<p><tt>
domain foo.bar.edu
</tt>
に置き換えます.
<p>
これを自分のマシン上の <tt>/etc/resolv.conf</tt> ファイルに
記述してください. しかしながら, 検索順序は, RFC 1535 に
書かれている, 「ローカル管理と公共の管理の間の境界線」
を越えないことを, あらかじめ確認してください.
</sect1>
<sect1><heading>Sendmail が ``mail loops back to myself'' というエラーを出します</heading>
<p>
これについては, sendmail FAQ の中で, 次のように答えられて
います:-
<verb>
* 次のような 「Local configuration error」というメッセージ
が出ます:
553 relay.domain.net config error: mail loops back to myself
554 <user@domain.net>... Local configuration error
この問題をどうやって解決すればよいでしょうか?
MX レコードを使って, あるドメイン(例: domain.net)宛にメールを
特定のホスト (この場合, relay.domain.net) に転送しようと設定したと
していますが, 中継ホストは自身が domain.net であるとは認識
していません.
(FEATURE(use_cs_file) を使用している場合は)
/etc/sendmail.cw に, domain.net を追加してください.
または, 「Cw domain.net」を /etc/sendmail.cf に追加してください.
</verb>
<p>
sendmail FAQ は, <tt>/usr/src/usr.sbin/sendmail</tt> に
あります. 「ちょっと凝った」メール設定
をしたい場合は, FAQ を読むことをおすすめします.
<sect1><heading>ダイアルアップ PPP ホストで電子メールを使うにはどうしたらいいの?</heading>
<p>
LAN 上にある FreeBSD マシンを, インターネットに接続したいと
します. FreeBSD マシンは, その LAN でのメールゲートウェイになります.
FreeBSD マシンは専用線接続ではありません (訳注:ダイアルアップ接続など).
これには, 少なくとも二つの方法があります.
一つは UUCP を使うことです.
このとき鍵になるのは, あなたのドメインに対するセカンダリ MX サービス
を提供してくれるインターネットサイトをみつけることです.
例:
<verb>
bigco.com. MX 10 bigco.com.
MX 20 smalliap.com.
</verb>
最終的なメール受信先としては, 一つのホストだけが定義されるべきです
(bigco.com 上の <tt>/etc/sendmail.cf</tt> ファイルに, 「Cw bigco.com」
を追加します).
送信側の sendmail が, メールを配送しようとしている時, モデムの接続を
介してあなたのところに接続しようとします.
大抵の場合, あなたのマシンがオンラインでないために, 接続はタイムアウト
してしまうでしょう. sendmail は自動的に, メールをセカンダリの MX サイト
に (あなたのインターネットプロバイダ) に配送します.
セカンダリ MX サイトは, (<tt>/etc/sysconfig</tt> ファイル
に <tt>sendmail_flag = "-bd -q15m"</tt>と書かれている場合) 15 分ごとに,
プライマリ MX サイトにメールを配送しようと, あなたのホストに接続しに
いきます.
ログインスクリプトとして, このようなものを使うとよいでしょう.
<verb>
#!/bin/sh
# Put me in /usr/local/bin/pppbigco
( sleep 60 ; /usr/sbin/sendmail -q ) &
/usr/sbin/ppp -direct pppbigco
</verb>
ユーザごとにログインスクリプトを作りたい場合には, 上記
のスクリプトの代わりに, <tt>sendmail -qRbigco.com</tt> を使用する
こともできます. このようにすると, キューの中の bigco.com に対する
すべてのメールは, すぐに強制的に処理されます.
さらに, 次のような改良もできます.
以下は, freebsd-isp メイリングリストから抜粋してきたメッセージです.
<verb>
> 私たちはお客様に対して, セカンダリ MX を提供しています. お客様は一日
> に何回か私たちのサービスに接続し, メールを彼らのプライマリ MX に
> 受け取ります (彼らのドメインに対するメールが到着した時には, 私たちは
> 彼らのサイトを呼び出しません).
> 私たちの sendmail は, 30 分ごとにメールキューに溜っているメールを
> 配送します. ちょうどその時に, すべてのメールがプライマリ MX に送られ
> たかどうかを確かめるためには, 彼らは 30 分は オンラインでいなけれ
> ばなりません.
>
> すべてのメールを今すぐ送るために sendmail を初期化するコマンドはあ
> るでしょうか? もちろん私たちのマシン上には, ユーザはルート (root) 権限
> を持っていません.
sendmail.cf の 「privacy flags」 セクションに,
「Opgoaway,restrictqrun」の定義があります.
root 以外のユーザがキューを処理できるようにするには,
restrictqrun を削除してください. また, MX を再調整が必要かもしれません.
あなたがたは, 顧客のサイトに対する一番優先度の高い MX なので,
次のように定義します:
# If we are the best MX for a host, try directly instead of generating
# local config error.
OwTrue
このようにすると, リモートサイトからのメールが, 顧客のマシンと接続し
ようとせず, 直接あなたがたのホストマシンに配送されるようになります.
ホストマシンに配送されたメールは, 続いて顧客のマシンに送られます.
これはホスト名にのみ有効なので, 顧客のメールマシンに,
「host.customer.com」とは別に, 「customer.com」も定義する必要があり
ます. DNS 上で, 「customer.com」に対する A レコードを定義してください.
</verb>
</sect1>