From cbd3af2b07e605334eb9a24a4476dc410a4269e8 Mon Sep 17 00:00:00 2001 From: Hideyuki KURASHINA Date: Fri, 24 Sep 2004 16:25:48 +0000 Subject: [PATCH] Merge the following from the English version: 1.28 -> 1.88 books/handbook/mail/chapter.sgml Submitted by: FURUKAWA Jumpei Reviewed by: Hiroo Ono References: [doc-jp-work 788, 909] --- ja_JP.eucJP/books/handbook/mail/chapter.sgml | 1191 ++++++++++++++++-- 1 file changed, 1086 insertions(+), 105 deletions(-) diff --git a/ja_JP.eucJP/books/handbook/mail/chapter.sgml b/ja_JP.eucJP/books/handbook/mail/chapter.sgml index 92fbc28ed4..1527da2dca 100644 --- a/ja_JP.eucJP/books/handbook/mail/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/mail/chapter.sgml @@ -2,7 +2,7 @@ The FreeBSD Documentation Project The FreeBSD Japanese Documentation Project - Original revision: 1.28 + Original revision: 1.88 $FreeBSD$ --> @@ -29,32 +29,81 @@ 訳: &a.jp.mihoko;. 14 January 1997. - + この章では email 電子メール - 電子メール、email としてのほうが知られているでしょう、 + 電子メール、email としてのほうが知られているでしょう、 は現代で最も広く利用されているコミュニケーション手段の一つです。 - 何百万人という人が毎日 email を使っており、 - この文章を偶然にもオンラインで読んでいるという人はこのカテゴリーに入るでしょうし、 - 複数の email アドレスを持っていたりもするかもしれません。 + この章では FreeBSD 上でメールサーバを実行するための基本的な導入を説明します。 + しかし、この文書は完璧な参考文献ではなく、 + 実際のところ考慮すべき重要な点の多くが省略されています。 + この件について、より網羅したものについては + に掲載されている多くの優れた書籍を参照してください。 - 電子メールの設定は多くのシステム管理書籍のテーマになっています。 - もし自分のネットワーク用に一つメールホストを設定することよりもさらに高度なことをしようとするなら、 - しっかりとしたヘルプが必要でしょう。 - DNS + この章では、以下の分野について説明します。 - email の設定におけるいくつかの部分は Domain Name System (DNS) - の管理下にあります。自分の DNS サーバーを立ち上げようと思っているなら、 - 必ず /etc/namedb と - man -k named を一通り読むようにしてください。 + + + 電子メールの送受信に関係しているソフトウェアの構成要素 + + + + FreeBSD における sendmail + の基本的な設定ファイルのある場所 + + + + スパマーがあなたのメールサーバを踏台として不正に使用することを防ぐ方法 + + + + あなたのシステムに sendmail + の置き換えとなる代替の MTA をインストールして設定する方法 + + + + メールサーバにまつわる共通の問題の解決法 + + + + UUCP とともに SMTP を使う方法 + + + + ダイアルアップ接続でメールを使う方法 + + + + セキュリティを向上するために SMTP 認証を設定する方法 + + + + この章を読む前に、以下のことを理解しておく必要があります。 + + + + ネットワーク接続の適切な設定方法 + () + + + + あなたのメールホストに対する DNS 情報の適切な設定方法 + () + + + + サードパーティ製ソフトウェアのインストール方法 + () + 電子メールを使う POP IMAP + DNS email の交換には 5 つの主要な部分があります。 それらは ユーザープログラム、 @@ -73,11 +122,11 @@ といったコマンドラインプログラムや balsa, xfmail のような - GUI プログラム、WWW ブラウザーのようにさらに洗練されたものまであります。 + GUI プログラム、WWW ブラウザーのようにさらに 洗練された ものまであります。 これらのプログラムは、email の処理を server daemons を呼び出したり TCP 経由で渡したり、といった手段でローカルの - メールホストに任せるだけです。 + メールホスト に任せるだけです。 @@ -156,9 +205,7 @@ - - - POP や IMAP のデーモンをports コレクションからインストールします。 + POP や IMAP のデーモンを ports コレクション からインストールします。 @@ -176,6 +223,506 @@ + + + + + Christopher + Shumway + 寄稿: + + + + <application>sendmail</application> の設定 + + + sendmail + + + &man.sendmail.8; は FreeBSD のデフォルトの + メールトランスファエージェント (MTA) です。 + sendmail + の仕事はメールユーザエージェント (MUA) からのメールを受け取り、 + それを設定ファイルで定義された適当なメーラに届けることです。 + sendmail はネットワーク接続を受け入れて、 + ローカルのメールボックスにメールを届けたり + 別のプログラムにメールを渡したりもできます。 + + sendmail は次の設定ファイルを使用します。 + + + /etc/mail/access + + + /etc/mail/aliases + + + /etc/mail/local-host-names + + + /etc/mail/mailer.conf + + + /etc/mail/mailertable + + + /etc/mail/sendmail.cf + + + /etc/mail/virtusertable + + + + + + + ファイル名 + 機能 + + + + + + /etc/mail/access + + sendmail アクセスデータベースファイル + + + + /etc/mail/aliases + + メールボックスエイリアス + + + + /etc/mail/local-host-names + + sendmail が受け付ける配送先ホストのリスト + + + + /etc/mail/mailer.conf + + メーラプログラムの設定 + + + + /etc/mail/mailertable + + メーラ配送表 + + + + /etc/mail/sendmail.cf + + sendmail の主設定ファイル + + + + /etc/mail/virtusertable + + 仮想ユーザおよび仮想ドメイン表 + + + + + + + <filename>/etc/mail/access</filename> + + アクセスデータベースは、 + どのホストまたは IP アドレスがローカルメールサーバに接続できるか、 + そして接続の種類は何か、ということを定義します。 + ホストは , , + として指定できます。 + または、メーラエラーを指定することで、 + 単に sendmail の + エラー処理ルーチンに渡されます。 + として指定されたホスト (これはデフォルトです) は、 + メールの最終宛先がローカルマシンである限り、 + このホストへメールを送ることを認められます。 + として指定されたホストは、 + すべてのメール接続を拒絶されます。 + ホスト名に対して + オプションを指定されたホストは、 + このメールサーバを通過して任意の宛先へメールを送ることを認められます。 + + + <application>sendmail</application> + アクセスデータベースの設定 + + cyberspammer.com 550 We don't accept mail from spammers +FREE.STEALTH.MAILER@ 550 We don't accept mail from spammers +another.source.of.spam REJECT +okay.cyberspammer.com OK +128.32 RELAY + + + この例では五つのエントリがあります。 + 表の左側に当てはまるメール送信者は、表の右側の動作に支配されます。 + はじめの二つの例は、エラーコードを sendmail + のエラー処理ルーチンに渡します。 + メールが表の左側に当てはまると、リモートホストにそのメッセージが表示されます。 + 次のエントリは another.source.of.spam + というインターネット上の特定のホストからのメールを拒絶します。 + 次のエントリは okay.cyberspammer.com + からのメール接続を受け入れます。 + このエントリは上にある cyberspammer.com という行よりもさらに厳密です + (厳密に一致すればするほど、そうでないものより優先されます)。 + 最後のエントリは 128.32 から始まる + IP アドレスのホストからの電子メールのリレーを認めます。 + これらのホストは他のメールサーバに到達できるこのメールサーバを使ってメールを送ることができるでしょう。 + + このファイルを変更したら、 + データベースを更新するために /etc/mail/ ディレクトリで + make コマンドを実行する必要があります。 + + + + <filename>/etc/mail/aliases</filename> + + エイリアスデータベースには、 + 他のユーザ、ファイル、プログラムまたは他のエイリアスに展開される + 仮想的なメールボックスの一覧が記載されています。 + /etc/mail/aliases において使用できる例をいくつかあげます。 + + + メールエイリアス + root: localuser +ftp-bugs: joe,eric,paul +bit.bucket: /dev/null +procmail: "|/usr/local/bin/procmail" + + + ファイル形式はシンプルです。 + コロンの左側にあるメールボックス名は、右側のターゲットに展開されます。 + はじめの例は単純に root のメールボックスを + localuser のメールボックスに展開し、 + それからエイリアスデータベースをもう一度調べます。 + 一致するエントリがなければメッセージはローカルユーザである + localuser に配送されます。 + 次の例はメールリストです。 + ftp-bugs のメールボックスへのメールは + joe, eric + および paul の三つのローカルメールボックスに展開されます。 + リモートメールボックスは user@example.com + のように指定できることに注意してください。 + 次の例はメールをファイル、この場合 /dev/null + に書き込みます。 + 最後の例はメールをプログラムに送ります。 + この場合メールのメッセージは &unix; パイプを通じて + /usr/local/bin/procmail の標準入力に書き込まれます。 + + このファイルを変更したら、 + データベースを更新するために/etc/mail/ ディレクトリで + make コマンドを実行する必要があります。 + + + + <filename>/etc/mail/local-host-names</filename> + + これは &man.sendmail.8; + がローカルホスト名として認めるホスト名のリストです。 + sendmail + がメールを受け取るすべてのドメインやホストにこのファイルを置いてください。 + たとえば、このメールサーバは + example.com というドメインおよび + mail.example.com + というホストへのメールを受け取るとすると、 + local-host-names ファイルの内容は次のようになるでしょう。 + + example.com +mail.example.com + + このファイルを更新したら、変更を読み込むために + &man.sendmail.8; を再起動する必要があります。 + + + + <filename>/etc/mail/sendmail.cf</filename> + + sendmail の主設定ファイルである + sendmail.cf は、電子メールアドレスの書き換えから、 + リモートメールサーバへ拒絶メッセージを送ることまで + sendmail の全般的な動作をすべて制御します。 + 当然、そのようなさまざまな役割によりこの設定ファイルは大変複雑で、 + その詳細についてはこの節の少し範囲外です。好運なことに、 + 標準的な構成のメールサーバではこのファイルをめったに変更する必要はありません。 + + sendmail の主設定ファイルは + sendmail の機能と動作を決定する + &man.m4.1 マクロから構築できます。 + 詳細については + /usr/src/contrib/sendmail/cf/README + を参照してください。 + + このファイルを更新したら、その変更を反映するために + sendmail を再起動する必要があります。 + + + + <filename>/etc/mail/virtusertable</filename> + + virtusertable は仮想ドメインおよび仮想メールボックスに対するアドレスを実際のメールボックスと対応づけます。 + これらのメールボックスにはローカル、リモート、 + /etc/mail/aliases に定義されたエイリアス、 + またはファイルを使用できます。 + + + 仮想ドメインメール対応表の例 + + root@example.com root +postmaster@example.com postmaster@noc.example.net +@example.com joe + + + 上の例では example.com + ドメインへの対応づけをしています。 + このファイルはファイルの下までファーストマッチ + (訳注: 一致するルールが複数ある場合、 + 一番最初に一致したルールが適用されること) で処理されます。 + はじめの行では root@example.com を + ローカルの root メールボックスに対応づけています。 + 次のエントリでは postmaster@example.com を + noc.example.net ホスト上の + postmaster メールボックスに対応づけています。 + 最後に、今までのところでは + example.com + に関して何も一致しない場合、最後のエントリと一致するでしょう。 + これは example.com + の誰かに送ったすべてのメールが一致します。これは + joe のローカルメールボックスに対応づけられています。 + + + + + + + + Andrew + Boothman + 原作: + + + + + Gregory + Neil Shapiro + Information taken from e-mails written by + + + + + MTA の変更 + + email + MTA の変更 + + + すでに述べたように、FreeBSD には MTA (Mail Transfer Agent) として、 + sendmail がすでにインストールされています。 + したがって、デフォルトではこれがメールの送受信を担当しています。 + + しかしながら、さまざまな理由によって、 + システムの MTA を変更しようと考えるシステム管理者もいるかもしれません。 + その理由は、単に他の MTA を試してみたいというものから + 他のメーラに依存する特定の機能やパッケージが必要だといったものまで、 + 多岐にわたることでしょう。 + 幸い、理由がどんなものであれ、FreeBSD では簡単に変更できます。 + + + 新しい MTA のインストール + + さまざまな MTA が利用できます。 + FreeBSD Ports Collection + から探しはじめるのがよいでしょう。 + もちろん、どんな場所からでも、あなたが利用したい MTA が + FreeBSD で動作する限りすべて自由に使えます。 + + 新しい MTA をインストールすることからはじめましょう。 + 新しい MTA をインストールすると、 + あなたの要求が実際に実現したかどうか決める機会が与えられます。さらに、 + サービスを sendmail から引き継ぐ前に + 新しいソフトウェアを設定する機会が与えられます。これを行う場合、 + 新しいソフトウェアが /usr/bin/sendmail + のようなシステムバイナリを上書きしようとしないことを確認してください。 + そうしないとあなたが設定する前に新しいメールソフトウェアが本格的に動作しはじめてしまいます。 + + あなたが選択したソフトウェアを設定する方法についての情報は、 + その MTA の文書を参照してください。 + + + + <application>sendmail</application> を無効にする + + sendmail + を起動するために使用されていた手続きは、 + 4.5-RELEASE と 4.6-RELEASE の間で著しく変更されました。 + したがって、それを無効にするための手続きは微妙に違います。 + + + 2002 年 4 月 4 日より前の FreeBSD 4.5-STABLE + (4.5-RELEASE とそれ以前のバージョンが該当) + + /etc/rc.conf に次の行を加えてください。 + + sendmail_enable="NO" + + これは sendmail + のメール受信機能を無効にします。 + しかし /etc/mail/mailer.conf (下記参照) + が変更されていなければ、sendmail + はメールの送信にまだ使われるでしょう。 + + + + 2002 年 4 月 4 日以降の FreeBSD 4.5-STABLE + (4.6-RELEASE とそれ以降のバージョンが該当) + + sendmail を完全に無効にするためには + /etc/rc.conf に次の行を加えなくてはいけません。 + + sendmail_enable="NONE" + + + もしこの方法で sendmail + のメール送信機能を無効にしたのなら、 + 完全に動作する代替メール配送システムと置き換えることが重要です。 + さもなければ、&man.periodic.8; などのシステム機能は、 + それらの結果を通常想定しているようにメールで配送することができなくなるでしょう。 + システムの多くの部分が sendmail + 互換のシステムがあることを想定しているかもしれません。 + もしそれらを無効にした後に、 + アプリケーションがメールを送ろうとするために + sendmail のバイナリを使用し続ければ、 + メールは使われていない sendmail + のキューに入り、そして決して配送されないでしょう。 + + + もし sendmail + のメール受信機能だけを無効にしたいのなら + /etc/rc.conf に以下の行を追加してください。 + + sendmail_enable="NO" + + sendmailの起動オプションに関する詳細は + &man.rc.sendmail.8; マニュアルをご覧ください。 + + + + + 起動時に新しい MTA を起動する + + 起動時に新しい MTA を起動するには二つの選択肢があります。 + ここでも、あなたが稼働させている FreeBSD のバージョンに依存します + + + 2002 年 4 月 11 日より前の FreeBSD 4.5-STABLE + (4.5-RELEASE とそれ以前のバージョンが該当) + + /usr/local/etc/rc.d/ ディレクトリに、 + ファイル名が .sh でおわり、 + root によって実行可能なスクリプトを追加します。 + このスクリプトは start および + stop パラメータを引数として受け付けるようにします。 + 起動時にシステムスクリプトは次のコマンドを実行するでしょう。 + + /usr/local/etc/rc.d/supermailer.sh start + + これは手動でサーバを起動するためにも使用できます。 + システム終了時にはシステムスクリプトは stop + オプションを使用して、次のコマンドを実行するでしょう。 + + /usr/local/etc/rc.d/supermailer.sh stop + + これはシステムが稼働している間に手動でサーバを停止するためにも使えます。 + + + + 2002 年 4 月 11 日以降の FreeBSD 4.5-STABLE + (4.6-RELEASE とそれ以降のバージョンが該当) + + より新しいバージョンの FreeBSD では、 + 上記の方法または次の行を /etc/rc.conf + に設定できます。 + + mta_start_script="filename" + + filename は、あなたが + MTA を立ち上げるために起動時に実行するスクリプト名です。 + + + + + システムのデフォルトメーラとして <application>sendmail</application> を置き換える + + sendmail プログラムは &unix; + システム上の標準ソフトウェアとして本当にどこでも利用できるので、 + これがすでにインストールおよび設定されているとみなしている + ソフトウェアもあるかもしれません。 + この理由により、代替となる MTA の多くは + sendmail コマンドラインインタフェースと + 互換性のある実装を提供しています。 + これを 差し込む ことによって、 + sendmail の置き換えとして代替 MTA + を使用することが容易になります。 + + したがって、あなたが互換メーラを使用しているときには、 + /usr/bin/sendmail のような標準 + sendmail + バイナリを実行しようとするソフトウェアが、 + 実際にはその代わりにあなたの選択したメーラを実行しているということを + 確かめる必要があるでしょう。 + 好運なことに、FreeBSD はこの仕事をする + &man.mailwrapper.8; と呼ばれるシステムを提供しています。 + + インストールされたまま + sendmail が稼働しているときには + /etc/mail/mailer.conf + には以下のような記述があるでしょう。 + + sendmail /usr/libexec/sendmail/sendmail +send-mail /usr/libexec/sendmail/sendmail +mailq /usr/libexec/sendmail/sendmail +newaliases /usr/libexec/sendmail/sendmail +hoststat /usr/libexec/sendmail/sendmail +purgestat /usr/libexec/sendmail/sendmail + + このことは、これらのうちどの共通コマンド + (sendmail 自身のような) が実行されても、 + システムは mailer.conf を確認して、 + 代わりに /usr/libexec/sendmail/sendmail を実行する + sendmail という名前の mailwapper + のコピーを呼び出すことを意味します。 + このようなシステムでは、デフォルトの + sendmail が呼び出されたときに、 + どのバイナリが実際に実行されるかを変更するのが簡単になります。 + + したがって、sendmail の代わりに + /usr/local/supermailer/bin/sendmail-compat + を実行させたいのなら、次のように + /etc/mail/mailer.conf を変更してください。 + + sendmail /usr/local/supermailer/bin/sendmail-compat +send-mail /usr/local/supermailer/bin/sendmail-compat +mailq /usr/local/supermailer/bin/mailq-compat +newaliases /usr/local/supermailer/bin/newaliases-compat +hoststat /usr/local/supermailer/bin/hoststat-compat +purgestat /usr/local/supermailer/bin/purgestat-compat + + + + 完了 + + あなたのやりたいようにすべてを設定しおえたら、 + もはや必要のない sendmail + のプロセスを終了して新しいソフトウェアに関するプロセスを起動するか、 + 単に再起動してください。 + 再起動することによって、新しい MTA が起動時に正しく立ち上がるように + システムが設定されているかどうか確認することもできるでしょう。 + + + トラブルシュート @@ -183,9 +730,6 @@ トラブルシューティング - ここには、いくつかのよく聞かれる質問とその答があります。 - それらは FAQ からこちらに移りました。 - @@ -232,14 +776,15 @@ - sendmail が mail loops back to + sendmailmail loops back to myself というメッセージを出すのですが。 - sendmail FAQ に次のように書いてあります。 + sendmail + FAQ に次のように書いてあります。 - * Local configuration error というメッセージが出ます。例えば、 + Local configuration error というメッセージが出ます。例えば、 553 relay.domain.net config error: mail loops back to myself 554 <user@domain.net>... Local configuration error @@ -253,74 +798,82 @@ relay.domain.net) 宛てのメールを受け取れるような設定になっていない場合です。 設定の際に FEATURE(use_cw_file) を指定してある場合には -/etc/sendmail.cw の中に domain.net を追加してください。 -もしくは、/etc/sendmail.cf の中に Cw domain.net +/etc/mail/local-host-names の中に domain.net を追加してください。 +もしくは、/etc/mail/sendmail.cf の中に Cw domain.net を追加してください。 - sendmail FAQ は - /usr/src/usr.sbin/sendmail にありますので、 - メールの設定におかしなことがあれば常に読んでください。 + sendmail FAQ は + にありますので、 + メールの設定に おかしなこと があれば常に読んでください。 + PPP - PPP + - ダイアルアップ PPP ホストで電子メールを使うにはどうしたらいいの? + ダイアルアップ PPP ホストでメールサーバを実行するにはどうしたらいいの? LAN 上にある FreeBSD マシンを、 インターネットに接続したいとします。FreeBSD マシンは、その LAN でのメールゲートウェイになります。FreeBSD - マシンは専用線接続ではありません - (訳注: ダイアルアップ接続など)。 - - これには、少なくとも二つの方法があります。 + マシンは専用線接続ではありません (訳注: ダイアルアップ接続など)。 UUCP - 一つは UUCP を使うことです。 + これには、少なくとも二つの方法があります。 + 一つは UUCP を使うことです。 - このとき鍵になるのは、あなたのドメインに対するセカンダリ - MX サービスを提供してくれるインターネットサイトをみつけることです。 - 例えば以下のように。 + もう一つの方法は、あなたのドメインに対するセカンダリ + MX サービスを提供する常時稼働のインターネットサーバを用意することです。 + たとえば、あなたの会社のドメインが + example.com で、 + ISP があなたのドメインに セカンダリ MX サービスを提供するために + example.net ドメインを + 用意するとしたら次のようにします。 - bigco.com. MX 10 bigco.com. -MX 20 smalliap.com. + example.com. MX 10 example.com. +MX 20 example.net. 最終的なメール受信先としては、 - 一つのホストだけが定義されるべきです (bigco.com 上の - /etc/sendmail.cf ファイルに、Cw - bigco.com を追加します)。 + 一つのホストだけが定義されるべきです + (example.com 上の + /etc/mail/sendmail.cf ファイルに、 + Cw example.com を追加します)。 送信側の sendmail が、 - メールを配送しようとしている時、モデムの接続を - 介してあなたのところに接続しようとします。大抵の場合、 - あなたのマシンがオンラインでないために、接続はタイムアウト - してしまうでしょう。sendmail は自動的に、 - メールをセカンダリの MX サイト に - (あなたのインターネットプロバイダ) に配送します。セカンダリ MX - サイトは、(/etc/rc.conf ファイル に - sendmail_flag = "-bd - -q15m"と書かれている場合) 15 分ごとに、 - プライマリ MX サイトにメールを配送しようと、 - あなたのホストに接続しに いきます。 + メールを配送しようとしている時、モデムの接続を介してあなたのところ + (example.com) + に接続しようとします。大抵の場合、 + あなたのマシンがオンラインでないために、 + 接続はタイムアウトしてしまうでしょう。 + sendmail プログラムは自動的に、 + たとえばあなたのインターネットプロバイダなどのセカンダリの + MX サイト (example.net) + にメールを配送するでしょう。 + セカンダリ MX サイトは定期的にあなたのホストに接続し、 + プライマリ MX ホスト + (example.com) + にメールを配送しようとするでしょう。 ログインスクリプトとして、 - このようなものを使うとよいでしょう: + このようなものを使うとよいでしょう。 #!/bin/sh -# Put me in /usr/local/bin/pppbigco +# Put me in /usr/local/bin/pppmyisp ( sleep 60 ; /usr/sbin/sendmail -q ) & -/usr/sbin/ppp -direct pppbigco +/usr/sbin/ppp -direct pppmyisp - ユーザごとにログインスクリプトを作りたい場合には、上記 - のスクリプトの代わりに、sendmail - -qRbigco.com を使用することもできます。 - このようにすると、キューの中の bigco.com に対する - すべてのメールは、すぐに強制的に処理されます。 + ユーザごとにログインスクリプトを作りたい場合には、 + 上記のスクリプトの代わりに、 + sendmail -qRexample.com + を使用することもできます。 + このようにすると、 + キューの中の example.com + に対するすべてのメールは、すぐに強制的に処理されます。 - さらに、次のような改良もできます: + さらに、次のような改良もできます。 以下は、&a.isp; メーリングリストから抜粋してきたメッセージです。 @@ -342,7 +895,7 @@ Opgoaway,restrictqrun root 以外のユーザがキューを処理できるようにするには、 restrictqrun を削除してください。また、MX の再調整が必要かもしれません。 あなたがたは、顧客のサイトに対する一番優先度の高い MX なので、 -次のように定義します: +次のように定義します。 # If we are the best MX for a host, try directly instead of generating # local config error. @@ -352,8 +905,60 @@ OwTrue 顧客のマシンと接続しようとせず、直接あなたがたのホストマシンに配送されるようになります。 ホストマシンに配送されたメールは、続いて顧客のマシンに送られます。 これはホスト名にのみ有効なので、顧客のメールマシンに、 -host.customer.com とは別に、customer.comも定義する必要があります。 -DNS 上で、customer.comに対する A レコードを定義してください。 +host.customer.com とは別に、customer.com も定義する必要があります。 +DNS 上で、customer.com に対する A レコードを定義してください。 + + + + + + なぜ他のホストにメールを送ろうとすると、いつも + Relaying Denied と怒られてしまうの ? + + + + FreeBSD がインストールされたデフォルトの状態では、 + sendmail + は動作しているホストからのメールだけを送るように設定されています。 + たとえば POP3 サーバがインストールされているとすると、 + ユーザは学校や職場など他のリモートの場所からメールを確認することが + できます。しかし、彼らは外部からそのホスト以外へのメールを + 送ることはやはりできません。 + 通常、メールを送ろうとしてから少しすると、 + 5.7 Relaying Denied + というエラーメッセージの書かれたメールが + MAILER-DAEMON から送られてくるでしょう。 + + これを解決する方法はいくつかあります。 + 一番の正攻法は /etc/mail/relay-domains + リレードメインファイルにあなたの ISP のアドレスを書くことです。 + これをするのに簡単な方法は次のとおりです。 + + &prompt.root; echo "your.isp.example.com" > /etc/mail/relay-domains + + このファイルを作成または編集したら、 + sendmail を再起動してください。 + もしあなたがサーバ管理者でメールをローカルに送りたくないか、 + ポイントを使用して他のマシン (や、さらに他の ISP) の + クライアントまたはシステムへ送りたい時は、とても効果があります。 + さらに、あなたが一つあるいは二つだけのメールアカウントを + 設定している場合でもこれは非常に有用です。 + 追加すべきアドレスがたくさんある場合には、 + 単にこのファイルをあなたの好きなテキストエディタで開いて、 + そして一行に一つずつドメインを追加してください。 + + your.isp.example.com +other.isp.example.net +users-isp.example.org +www.example.org + + これで、リストに掲載されているすべてのホスト + (ユーザがあなたのシステムにアカウントを持っていると規定する) + からあなたのシステムを通るすべてのメールは送信に成功するでしょう。 + これはあなたのシステムから SPAM を送ることを認めることなく、 + リモートであなたのシステムからメールを送ることをユーザに + 認めるためのとてもよい方法です。 + @@ -376,8 +981,9 @@ DNS /etc/resolv.conf ファイルを設定するか、 またはネームサーバを走らせれば、 他のホストへ電子メールを送ることができるようになります。 - あなたのホスト宛のメールを特定のホストに配送するようにしたい場合には、 - 次の二つの方法があります。 + あなたのホスト宛のメールをあなた自身の FreeBSD ホスト上の + MTA (たとえば sendmail) + に配送するようにしたい場合には、次の二つの方法があります。 @@ -395,21 +1001,26 @@ DNS SMTP - 上のどちらを選ぶ場合でも、自分のホストに直接メールが配送されるようにするには恒久的 - (静的) な IP アドレス (動的な PPP ダイアルアップではない) を持っていなければなりません。 - もしファイアウォールの中にいるならば、SMTP トラフィックが通過してくれないといけません。 - もし自分のホストでメールを受け取りたいならば、 - 次の二つのうちの一つができていることを確認してください。 + 上のどちらを選ぶ場合でも、自分のホストに直接メールが配送されるようにするには恒久的で + 静的 な IP アドレス + (ほとんどの PPP ダイアルアップ設定で用いられる動的なアドレスではなく) + を持っていなければなりません。 + もしファイアウォールの中にいるならば、 + SMTP トラフィックが通過してくれないといけません。 + もし自分のホストでメールを直接受け取りたいならば、 + 次の二つのうちのどちらかができていることを確認してください。 MX レコード - 自分のドメインでの MX レコードが自分のホストの + 自分のドメインでの + (一番値の小さい) MX レコードが自分のホストの IP アドレスを差していることを確認する。 - 自分のドメインの中に自分のホスト用の MX がないことを確認する。 + 自分のドメインの中に自分のホスト用の + MX エントリがないことを確認する。 @@ -423,10 +1034,12 @@ example.FreeBSD.org &prompt.root; host example.FreeBSD.org example.FreeBSD.org has address 204.216.27.XX - もしあなたのマシンが上記のメッセージだけを出力したならば、 yourlogin@example.FreeBSD.org - へのメールは問題なく配送されるでしょう。 + へのメールは問題なく配送されるでしょう + (sendmail が + example.FreeBSD.org + 上で正しく動作していると仮定します)。 上記のメッセージの代わりに、 @@ -453,11 +1066,13 @@ freefall MX 40 agora.rdrop.com freefall MX 10 freefall.FreeBSD.org freefall MX 20 who.cdrom.com - freefall は多くの MX - エントリを持っています。もっとも MX の値が小さいホストが最終的にメールを受け取ります。 - もし freefall - が他の処理で忙しかったり、ダウンしているような場合には、 - 他のホストが一時的にメールをキューにいれます。 + freefall は多くの MX エントリを持っています。 + 一番 MX の値の小さいホストが利用可能な場合は直接メールを受け取ります。 + もしなにかの理由でアクセスができない時には、 + 他のホスト (ときどき バックアップ MX と呼ばれます) + が一時的にメールを受け取ります。そして、 + より値の小さいホストが利用可能になったときにメールを渡し、 + 最終的に一番値の小さいホストに渡ります。 使い勝手をよくするためには、代替の MX サイトは、それぞれ 別の経路でインターネットへ接続しているとよいでしょう。 @@ -471,20 +1086,20 @@ freefall MX 20 who.cdrom.com メールホスト (メールサーバーとしても知られています) をセットアップするためには、 いろいろなワークステーションに宛てた全てのメールを受ける必要があります。 - 基本的には、あなたのドメイン (この場合だと + 基本的には、あなたのドメイン内 (この場合だと *.FreeBSD.org) - 宛ての全てのメールをハイジャックし、 + のすべてのホスト名宛てのすべてのメールを 受け取って、 そのメールをあなたのメールサーバーに配送し、 - ユーザーが POP を通じてあるいはサーバー上で直接、メールをチェックできるようにします。 + ユーザーがマスタメールサーバ上でメールをチェックできるようにします。 DNS 話を簡単にするために、あるユーザーのアカウントはどのマシンでも同じユーザー名にすべきです。 - そのためには adduser を使ってください。 + そのためには &man.adduser.8; を使ってください。 使用する予定のメールホストは、 各ワークステーションごとにメール交換が - できるように設定されていなければなりません。これは、DNS - (すなわち BIND や named) の設定で次のように行なうことができます。 + できるように設定されていなければなりません。 + これは DNS の設定で次のように行なうことができます。 example.FreeBSD.org A 204.216.27.XX ; ワークステーション MX 10 hub.FreeBSD.org ; メールホスト @@ -493,30 +1108,27 @@ MX 10 hub.FreeBSD.org ; そのワークステーション宛てのメールをメールホストに転送する、というものです。 自前で DNS サーバを運用しているのでなければ、 - この作業は自分では行なえおこなえません。自分で DNS + この作業は自分では行えません。自分で DNS サーバを運用しないとかできないという場合は、 - インターネットプロバイダ等に依頼して作業をおこなってもらってください。 - - この作業により、このワークステーション宛のメールは、MX - (メールエクスチェンジャ) ホストに送られるようになります。A - レコードがどのマシンを指しているかどいうことには関係なく、 - メールは MX ホストに送られます。 + あなたの DNS を提供しているインターネットプロバイダなどに依頼して + 作業を行ってもらってください。 もしバーチャル電子メールホストを運用するなら次の情報が役に立つでしょう。 例として、あなたには自分のドメイン、ここでは customer1.org、 を持っている顧客がいるとしましょう。 あなたは customer1.org 宛ての全てのメールを - mail.myhost.com という名前のメールホストに集めたいとします。 + mail.myhost.com というメールホストに集めたいとします。 DNS エントリーは次のようになるでしょう。 customer1.org MX 10 mail.myhost.com - そのドメインに対して電子メールを送りたいだけなら、A - レコードは必要ありません。 + customer1.org + に対して電子メールを送りたいだけなら、 + A レコードは必要ありません - これは、customer1.org + customer1.org に対して ping を実行しても、 A レコードが存在しない限りうまくいかないことに留意しておいてください。 @@ -529,19 +1141,388 @@ MX 10 hub.FreeBSD.org ; FEATURE(use_cw_file) を使っているなら、 - /etc/sendmail.cw ファイルにホストを加えます。 - もし sendmail 8.10 かそれ以降のものであれば該当ファイルは - /etc/mail/local-host-names です。 + /etc/mail/local-host-names + ファイルにホストを加えます。 + もし sendmail のバージョンが + 8.10 より前であれば該当ファイルは + /etc/sendmail.cw です。 /etc/sendmail.cf もしくは - sendmail 8.10 以降なら /etc/mail/sendmail.cf + sendmail 8.10 以降なら + /etc/mail/sendmail.cf といったファイルに Cwyour.host.com という行を加えます。 + + + UUCP とともに SMTP を使う + + FreeBSD とともに出荷されている + sendmail の設定は、 + サイトがインターネットに直接接続しているものとして設計されています。 + UUCP 経由でメールを交換したいサイトは、他にも + 設定ファイルをインストールしなければいけません。 + + /etc/mail/sendmail.cf + を手動で調整することは先進的なトピックです。 + sendmail のバージョン 8 は設定ファイルを + &man.m4.1; プリプロセッサから生成します。 + これにより、高度に抽象化された設定を行うことができます。 + &man.m4.1; による設定ファイルは + /usr/src/usr.sbin/sendmail/cf + 以下にあります。 + + もしシステムをすべてのソースとともにインストールしていなければ、 + sendmail の設定材料は分割された個別のソース tarball を取得してください。 + FreeBSD のソースコードが入った CDROM をマウントしているのなら、 + + &prompt.root; cd /cdrom/src +&prompt.root; cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail + + と展開してください (展開してもたった数百 KB 程度です)。 + cf ディレクトリの + README ファイルは + m4 による設定の基本的な手引として役に立つでしょう。 + + UUCP 配送に対応するための一番よい方法は + mailertable 機能を使用することです。 + これは経路を決定するために + sendmail + が使用できるデータベースを作成します。 + + まずはじめに .mc + ファイルを作成しなければいけません。 + /usr/src/usr.sbin/sendmail/cf/cf + にいくつか例があります。foo.mc + という名前のファイルをあなたが作成したとすると、 + 有効な sendmail.cf + ファイルへ変換するには次のようにするだけです。 + + &prompt.root; cd /usr/src/usr.sbin/sendmail/cf/cf +&prompt.root; make foo.cf +&prompt.root; cp foo.cf /etc/mail/sendmail.cf + + 典型的な .mc ファイルは次のようになるでしょう。 + + VERSIONID(`Your version number') OSTYPE(bsd4.4) + +FEATURE(accept_unresolvable_domains) +FEATURE(nocanonify) +FEATURE(mailertable, `hash -o /etc/mail/mailertable') + +define(`UUCP_RELAY', your.uucp.relay) +define(`UUCP_MAX_SIZE', 200000) +define(`confDONT_PROBE_INTERFACES') + +MAILER(local) +MAILER(smtp) +MAILER(uucp) + +Cw your.alias.host.name +Cw youruucpnodename.UUCP + + + accept_unresolvable_domains, + nocanonify および + confDONT_PROBE_INTERFACES 機能を含んでいる行は、 + メール配送時にまったく DNS を使用しません。 + UUCP_RELAY の記述は UUCP 配送に対応するのに必要です。 + そこにインターネットホスト名を単に書くだけで + .UUCP pseudo ドメインアドレスを扱うことができるようになります。 + 大抵の場合、あなたの ISP のメールリレーをそこに入力するでしょう。 + + 次に、 + /etc/mail/mailertable が必要になります。 + メールを配送するリンクが外界との間に一つだけの場合は、 + 次のようにファイルを記述するだけで十分でしょう。 + + # +# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable +. uucp-dom:your.uucp.relay + + 次はさらに複雑な例です。 + + # +# makemap hash /etc/mail/mailertable.db < /etc/mail/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: + + はじめの三行はドメインで宛先を指定されたメールが、 + 配送路を 近道 するために、 + デフォルトルートではなく代わりにいくつかの UUCP 隣接ホストへ送られる特別な場合を扱います。 + 次の行はメールを SMTP で配送可能なローカルイーサネットドメインへ送ります。 + 最後に + uucp-neighbor + !recipient + がデフォルトルートを上書きすることを許可するための UUCP 隣接ホストは + .UUCP 仮想ドメイン記法で言及されます。 + 最後の行は常に他のすべてが当てはまるシングルドットです。 + これは UUCP 隣接ホストへの UUCP 配送をすることで、 + 世界に向けたあなたの普遍的メールゲートウェイとして役に立ちます。 + uucp-dom: キーワードの後ろにあるノード名はすべて、 + uuname コマンドを使用することで確かめられる正しい + UUCP 隣接ホストである必要があります。 + + このファイルは、実際に使用する前に DBM + データベース形式に変換する必要があることに注意してください。 + これを実行するコマンドラインは mailertable + ファイルの先頭にコメントとして書かれています。 + mailertable を変更するたびにいつもこのコマンドを実行する必要があります。 + + 最後のアドバイス: もし、 + いくつかのメールルーティングがうまく動いているかどうか分からないときは + sendmail に + オプションをつけることを覚えておいてください。 + これは sendmail を + アドレステストモード で起動します。 + あなたがテストしたいメールルーティングのアドレスを後につけて、 + 単純に 3,0 と入力してください。 + 最後の行は、内部で使われたメールエージェント、 + このエージェントが呼び出された目的地ホスト、および + (もしかしたら変換された) アドレスを表示します。 + このモードを終了するには + CtrlD + を入力します。 + + &prompt.user; sendmail -bt +ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) +Enter <ruleset> <address> +> 3,0 foo@example.com +canonify input: foo @ example . com +... +parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . > +> ^D + + + + ダイアルアップ接続でメールを使う + + あなたが固定 IP アドレスを持っているのなら、 + デフォルトから何も変更する必要はありません。 + 割りあてあてられたインターネット名をホスト名に設定すれば、 + sendmail が残りをやってくれます。 + + あなたが動的に割り当てられた IP アドレスを持っていて、 + インターネットに接続するのにダイアルアップ PPP を使用しているのなら、 + おそらく ISP のメールサーバにメールボックスがあるでしょう。 + ここでは、あなたの ISP のドメインが + example.net, + あなたのユーザ名が user, + あなたのマシンは bsd.home + と呼ばれているものとします。 + また、ISP から、メールリレーとして relay.example.net + を使用してよいと通知されているとします。 + + (訳注: ISP 上の) メールボックスからメールを取得するためには、 + 取得アプリケーションをインストールしないといけません。 + fetchmail ユーティリティは、 + さまざまなプロトコルの多くに対応しているのでよい選択肢です。 + 通常、あなたの ISP は POP3 を提供しています。 + あなたが user-PPP を使用しているなら、次のエントリを + /etc/ppp/ppp.linkup に追加することで、 + インターネット接続が確立したときに自動的ににメールを取得することができます。 + + MYADDR: + !bg su user -c fetchmail + + あなたがローカルではないアカウントへのメールを配送するために + (下記のような) sendmail + を使用しているなら、 + インターネット接続が確立するとすぐに、 + sendmail + があなたのメールキューを処理して欲しいとおそらく考えるでしょう。 + これを行うには、/etc/ppp/ppp.linkup ファイルの + fetchmail コマンドの後に次のコマンドを追加してください。 + + !bg su user -c "sendmail -q" + + bsd.home 上に user + というアカウントを所有しているとします。 + bsd.home 上の user + のホームディレクトリに .fetchmailrc + ファイルを作成します。 + + poll example.net protocol pop3 fetchall pass MySecret + + このファイルはパスワード MySecret + を含んでいるので、user + を除く他の誰にも読めるようになっていてはいけません。 + + 正しい from: ヘッダでメールを送るためには、 + sendmailuser@bsd.home + ではなく user@example.net を使用するようにしなくてはいけません。 + また、素早くメール送信をするために + sendmail にすべてのメールを + relay.example.net 経由で送るようにもしたいかもしれません。 + + 次の .mc ファイルで十分でしょう。 + + VERSIONID(`bsd.home.mc version 1.0') +OSTYPE(bsd4.4)dnl +FEATURE(nouucp)dnl +MAILER(local)dnl +MAILER(smtp)dnl +Cwlocalhost +Cwbsd.home +MASQUERADE_AS(`example.net')dnl +FEATURE(allmasquerade)dnl +FEATURE(masquerade_envelope)dnl +FEATURE(nocanonify)dnl +FEATURE(nodns)dnl +define(`SMART_HOST', `relay.example.net') +Dmbsd.home +define(`confDOMAIN_NAME',`bsd.home')dnl +define(`confDELIVERY_MODE',`deferred')dnl + + .mc ファイルを sendmail.cf + ファイルに変換する方法の詳細については前の節を参照してください。 + また、sendmail.cf ファイルを変更した後は、 + sendmail を再起動し忘れないでください。 + + + + SMTP 認証 + + メールサーバ上で SMTP 認証を行うと、 + 多くの利益があります。 + SMTP 認証は sendmail + にもう一つのセキュリティ層を追加することができます。 + さらに、ホストを切りかえるモバイルユーザにとっては、 + その都度メールクライアントの設定を変更せずとも + 同じメールサーバを利用できるようになります。 + + + + ports から + security/cyrus-sasl + をインストールします。 + この port は + security/cyrus-sasl にあります。 + security/cyrus-sasl + にはここで使用する方法に対する多くのコンパイルオプションがあり、 + 確実に オプションを選択してください。 + + + + security/cyrus-sasl + をインストールした後に + /usr/local/lib/sasl/Sendmail.conf + を編集して (もし無ければ作成して) 次の行を追加してください。 + + pwcheck_method: passwd + + この方法は sendmail + があなたの FreeBSD の passwd + データベースに対して認証することを可能にします。 + この方法は SMTP 認証に必要となる、 + それぞれのユーザに対する一組の新しいユーザ名とパスワードを + 作成する際のトラブルを減らし、 + ログインパスワードとメールパスワードを同じままにします。 + + + + ここで /etc/make.conf 編集し、 + 次の行を加えます。 + + SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL +SENDMAIL_LDFLAGS=-L/usr/local/lib +SENDMAIL_LDADD=-lsasl + + これらの行は sendmail に対して、 + コンパイルするときに cyrus-sasl + とリンクするための適切な設定オプションを与えるものです。 + sendmail を再コンパイルする前に + cyrus-sasl + がインストールされていることを確かめてください。 + + + + 次のコマンドを入力して sendmail + を再コンパイルしてください。 + + &prompt.root; cd /usr/src/usr.sbin/sendmail +&prompt.root; make cleandir +&prompt.root; make obj +&prompt.root; make +&prompt.root; make install + + sendmail のコンパイルは + /usr/src が大幅に変更されていなくて、 + 必要な共有ライブラリが利用可能であれば何の問題も起こらないでしょう。 + + + + sendmail + をコンパイルして再インストールした後は、 + /etc/mail/freebsd.mc ファイル + (またはあなたが .mc + ファイルとして使用しているファイル。 + 多くの管理者は唯一の名前を用いるために &man.hostname.1; の出力を + .mc として使用することを選んでいます) + を編集してください。 + 次の行を加えてください。 + + dnl set SASL options +TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl +define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl +define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnl + + これらのオプションは、ユーザを認証するために + sendmail + が利用可能な異なる方法を設定します。 + もし pwcheck + 以外の方法を使用したいのならドキュメントを参照してください。 + + + + 最後に /etc/mail で &man.make.1; + を実行してください。 + これにより、新しい .mc + ファイルから freebsd.cf という名前 + (またはあなたの .mc に使用している名前) の + .cf ファイルが作成されます。 + それから make install restart + コマンドを実行してください。 + 新しい .cf ファイルが + sendmail.cf にコピーされ、 + sendmail が適切に再起動されるでしょう。 + この手続きについての詳細は + /etc/mail/Makefileを参照してください。 + + + + すべてがうまくいけば、ログイン情報をメールクライアントに入力し、 + テストメッセージを送ることができるでしょう。 + より詳細に調べるには sendmail の + を 13 に設定し、 + すべてのエラーについて /var/log/maillog + を見てください。 + + このサービスがシステムを起動した後にいつでも利用可能となるように、 + /etc/rc.conf に次の行を追加しておくとよいでしょう。 + + sasl_pwcheck_enable="YES" +sasl_pwcheck_program="/usr/local/sbin/pwcheck" + + これにより、システムの起動時に + SMTP_AUTH が確実に初期化されるでしょう。 + + 詳細については + + SMTP 認証 に関する + sendmail の文書を参照してください。 +