<!--
     The FreeBSD Documentation Project
     The FreeBSD Japanese Documentation Project

     Original revision: 1.88
     $FreeBSD$
-->

<chapter id="mail">
  <chapterinfo>
    <authorgroup>
      <author>
	<firstname>Bill</firstname>
	<surname>Lloyd</surname>
	<contrib>原作: </contrib>
      </author>
    </authorgroup>
    <authorgroup>
      <author>
	<firstname>Jim</firstname>
	<surname>Mock</surname>
	<contrib>改訂: </contrib>
	<!-- 2 Dec 1999 -->
      </author>
    </authorgroup>
  </chapterinfo>

  <title>電子メール</title>

  <para><emphasis>訳: &a.jp.mihoko;. 14 January 1997.</emphasis></para>

  <sect1 id="mail-synopsis">
    <title>この章では</title>
    <indexterm><primary>email</primary></indexterm>
    <indexterm><primary>電子メール</primary></indexterm>

    <para><quote>電子メール</quote>、email としてのほうが知られているでしょう、
      は現代で最も広く利用されているコミュニケーション手段の一つです。
      この章では FreeBSD 上でメールサーバを実行するための基本的な導入を説明します。
      しかし、この文書は完璧な参考文献ではなく、
      実際のところ考慮すべき重要な点の多くが省略されています。
      この件について、より網羅したものについては <xref linkend="bibliography">
      に掲載されている多くの優れた書籍を参照してください。</para>

    <para>この章では、以下の分野について説明します。</para>

    <itemizedlist>
      <listitem>
	<para>電子メールの送受信に関係しているソフトウェアの構成要素</para>
      </listitem>

      <listitem>
	<para>FreeBSD における <application>sendmail</application>
	  の基本的な設定ファイルのある場所</para>
      </listitem>

      <listitem>
	<para>スパマーがあなたのメールサーバを踏台として不正に使用することを防ぐ方法</para>
      </listitem>

      <listitem>
	<para>あなたのシステムに <application>sendmail</application>
	  の置き換えとなる代替の MTA をインストールして設定する方法</para>
      </listitem>

      <listitem>
	<para>メールサーバにまつわる共通の問題の解決法</para>
      </listitem>

      <listitem>
	<para>UUCP とともに SMTP を使う方法</para>
      </listitem>

      <listitem>
	<para>ダイアルアップ接続でメールを使う方法</para>
      </listitem>

      <listitem>
	<para>セキュリティを向上するために SMTP 認証を設定する方法</para>
      </listitem>
    </itemizedlist>

    <para>この章を読む前に、以下のことを理解しておく必要があります。</para>

    <itemizedlist>
      <listitem>
	<para>ネットワーク接続の適切な設定方法
	  (<xref linkend="advanced-networking">)</para>
      </listitem>

      <listitem>
	<para>あなたのメールホストに対する DNS 情報の適切な設定方法
	  (<xref linkend="advanced-networking">)</para>
      </listitem>

      <listitem>
	<para>サードパーティ製ソフトウェアのインストール方法
	  (<xref linkend="ports">)</para></listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="mail-using">
    <title>電子メールを使う</title>
    <indexterm><primary>POP</primary></indexterm>
    <indexterm><primary>IMAP</primary></indexterm>
    <indexterm><primary>DNS</primary></indexterm>

    <para>email の交換には 5 つの主要な部分があります。
      それらは <link linkend="mail-mua">ユーザープログラム</link>、
      <link linkend="mail-mta">サーバーデーモン</link>、
      <link linkend="mail-dns">DNS</link>、
      <link linkend="mail-receive">POP もしくは IMAP のデーモン</link>、
      そしてもちろん <link linkend="mail-host">メールホスト</link>です。</para>

    <sect2 id="mail-mua">
      <title>ユーザープログラム</title>

      <para>いくつか名前を挙げれば、
	<application>mutt</application>, <application>pine</application>,
	<application>elm</application> そして
	<application>mail</application>
	といったコマンドラインプログラムや
	<application>balsa</application>,
	<application>xfmail</application> のような
	GUI プログラム、WWW ブラウザーのようにさらに <quote>洗練された</quote> ものまであります。
	これらのプログラムは、email の処理を
	<link linkend="mail-mta">server daemons</link> を呼び出したり
	TCP 経由で渡したり、といった手段でローカルの
	<link linkend="mail-host"><quote>メールホスト</quote></link> に任せるだけです。</para>
    </sect2>

    <sect2 id="mail-mta">
      <title>メールホストサーバデーモン</title>
      <indexterm>
	<primary>メールサーバデーモン</primary>
	<secondary><application>sendmail</application></secondary>
      </indexterm>
      <indexterm>
	<primary>メールサーバデーモン</primary>
	<secondary><application>postfix</application></secondary>
      </indexterm>
      <indexterm>
	<primary>メールサーバデーモン</primary>
	<secondary><application>qmail</application></secondary>
      </indexterm>
      <indexterm>
	<primary>メールサーバデーモン</primary>
	<secondary><application>exim</application></secondary>
      </indexterm>

      <para>通常、これは <application>sendmail</application>
	(FreeBSD のデフォルト) や <application>qmail</application>,
	<application>postfix</application> もしくは
	<application>exim</application>
	といった他のメールサーバーデーモンの一つです。
	他にもあるのですが、以上のものが広く使われています。</para>

      <para>サーバーデーモンは通常 2 つの機能 &mdash;
	やってくるメールを受け取るのと出ていくメールを配送する、
	を持っています。メールを読むために POP や IMAP で接続する、
	ということはできません。
	そのためにはもう一つ<link linkend="mail-receive">デーモン</link>が必要なのです。</para>

      <para>いくつかの古いバージョンの <application>sendmail</application>
	には深刻なセキュリティ問題がありますが、
	現在のバージョンを使っているおれば特に問題ないことに注意してください。
	例のごとく、
	どんなソフトウェアを利用する時にも最新の状態にしておくのが大事なのです。</para>
    </sect2>

    <sect2 id="mail-dns">
      <title>Email と DNS</title>

      <para>Domain Name System (DNS) とそのデーモンである
	<command>named</command> は email の配送において大変重要な役割を担ってます。
	あなたのサイトからもう一つのサイトへメールを配送するためには、
	サーバーデーモンは DNS からそのサイトを探し、
	メールの受け取り先のホストを決定します。</para>

      <para>メールがあなたに送られた場合にも同じような仕組みになっています。
	DNS にはホスト名と IP アドレス、ホスト名とメールホストをマッピングするデータベースがあります。
	IP アドレスは A レコードで指定されます。
	MX (Mail eXchanger) レコードはあなた宛のメールを受け取るホストを指定します。
	あなたのホスト名に対する MX レコードがない場合には、
	メールは直接あなたのホストに配送されます。</para>
    </sect2>

    <sect2 id="mail-receive">
      <title>メールの受け取り</title>
      <indexterm>
	<primary>email</primary>
	<secondary>受け取り</secondary>
      </indexterm>

      <para>メールはメールホストが受け取ります。
	このホストは送られてきたメールを集め、
	(ユーザーが) 読んだりピックアップしたりするために保存します。
	保存されているメールをピックアップするにはメールホストに接続する必要があります。
	これは POP や IMAP を用いて行なわれます。
	メールホスト上で直接メールを読みたい時は POP や IMAP のサーバーは必要ありません。</para>

      <indexterm><primary>POP</primary></indexterm>
      <indexterm><primary>IMAP</primary></indexterm>
      <para>POP や IMAP のサーバーを走らせるためには 2 つのことをやらなければいけません。</para>

      <procedure>
	<step>
	  <para>POP や IMAP のデーモンを <ulink url="../../../../ports/mail.html">ports コレクション</ulink> からインストールします。</para>
	</step>

	<step>
	  <para><filename>/etc/inetd.conf</filename> を修正して POP や IMAP のサーバーが起動されるように設定します。</para>
	</step>
      </procedure>
    </sect2>

    <sect2 id="mail-host">
      <title>メールホスト</title>
      <indexterm><primary>メールホスト</primary></indexterm>

      <para>メールホストとは責任をもってメールを配送したり、
	あなたのホストや、もしかするネットワークも、に宛てたメールを受け取ったりするホストに与えられる名前です。</para>
    </sect2>
  </sect1>

  <sect1 id="sendmail">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Christopher</firstname>
	  <surname>Shumway</surname>
	  <contrib>寄稿: </contrib>
	</author>
      </authorgroup>
    </sect1info>
    <title><application>sendmail</application> の設定</title>

    <indexterm>
      <primary><application>sendmail</application></primary>
    </indexterm>

    <para>&man.sendmail.8; は FreeBSD のデフォルトの
      メールトランスファエージェント (MTA) です。
      <application>sendmail</application>
      の仕事はメールユーザエージェント (MUA) からのメールを受け取り、
      それを設定ファイルで定義された適当なメーラに届けることです。
      <application>sendmail</application> はネットワーク接続を受け入れて、
      ローカルのメールボックスにメールを届けたり
      別のプログラムにメールを渡したりもできます。</para>

    <para><application>sendmail</application> は次の設定ファイルを使用します。</para>

    <indexterm>
      <primary><filename>/etc/mail/access</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/aliases</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/local-host-names</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/mailer.conf</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/mailertable</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/sendmail.cf</filename></primary>
    </indexterm>
    <indexterm>
      <primary><filename>/etc/mail/virtusertable</filename></primary>
    </indexterm>

    <informaltable>
      <tgroup cols="2">
	<thead>
	  <row>
	    <entry>ファイル名</entry>
	    <entry>機能</entry>
	  </row>
	</thead>
	<tbody>
	  <row>
	    <entry>
	      <filename>/etc/mail/access</filename>
	    </entry>
	    <entry><application>sendmail</application> アクセスデータベースファイル</entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/aliases</filename>
	    </entry>
	    <entry>メールボックスエイリアス</entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/local-host-names</filename>
	    </entry>
	    <entry><application>sendmail</application> が受け付ける配送先ホストのリスト</entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/mailer.conf</filename>
	    </entry>
	    <entry>メーラプログラムの設定</entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/mailertable</filename>
	    </entry>
	    <entry>メーラ配送表</entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/sendmail.cf</filename>
	    </entry>
	    <entry><application>sendmail</application> の主設定ファイル</entry>
	  </row>
	  <row>
	    <entry>
	      <filename>/etc/mail/virtusertable</filename>
	    </entry>
	    <entry>仮想ユーザおよび仮想ドメイン表</entry>
	  </row>
	</tbody>
      </tgroup>
    </informaltable>

    <sect2>
      <title><filename>/etc/mail/access</filename></title>

      <para>アクセスデータベースは、
	どのホストまたは IP アドレスがローカルメールサーバに接続できるか、
	そして接続の種類は何か、ということを定義します。
	ホストは <option>OK</option>, <option>REJECT</option>,
	<option>RELAY</option> として指定できます。
	または、メーラエラーを指定することで、
	単に <application>sendmail</application> の
	エラー処理ルーチンに渡されます。
	<option>OK</option> として指定されたホスト (これはデフォルトです) は、
	メールの最終宛先がローカルマシンである限り、
	このホストへメールを送ることを認められます。
	<option>REJECT</option> として指定されたホストは、
	すべてのメール接続を拒絶されます。
	ホスト名に対して <option>RELAY</option>
	オプションを指定されたホストは、
	このメールサーバを通過して任意の宛先へメールを送ることを認められます。</para>

      <example>
	<title><application>sendmail</application>
	  アクセスデータベースの設定</title>

	<programlisting>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</programlisting>
      </example>

      <para>この例では五つのエントリがあります。
	表の左側に当てはまるメール送信者は、表の右側の動作に支配されます。
	はじめの二つの例は、エラーコードを <application>sendmail</application>
	のエラー処理ルーチンに渡します。
	メールが表の左側に当てはまると、リモートホストにそのメッセージが表示されます。
	次のエントリは <hostid>another.source.of.spam</hostid>
	というインターネット上の特定のホストからのメールを拒絶します。
	次のエントリは <hostid role="fqdn">okay.cyberspammer.com</hostid>
	からのメール接続を受け入れます。
	このエントリは上にある <hostid role="domainname">cyberspammer.com</hostid> という行よりもさらに厳密です
	(厳密に一致すればするほど、そうでないものより優先されます)。
	最後のエントリは <hostid>128.32</hostid> から始まる
	IP アドレスのホストからの電子メールのリレーを認めます。
	これらのホストは他のメールサーバに到達できるこのメールサーバを使ってメールを送ることができるでしょう。</para>

      <para>このファイルを変更したら、
	データベースを更新するために <filename>/etc/mail/</filename> ディレクトリで
	<command>make</command> コマンドを実行する必要があります。</para>
    </sect2>

    <sect2>
      <title><filename>/etc/mail/aliases</filename></title>

      <para>エイリアスデータベースには、
	他のユーザ、ファイル、プログラムまたは他のエイリアスに展開される
	仮想的なメールボックスの一覧が記載されています。
	<filename>/etc/mail/aliases</filename> において使用できる例をいくつかあげます。</para>

      <example>
	<title>メールエイリアス</title>
	<programlisting>root: localuser
ftp-bugs: joe,eric,paul
bit.bucket:  /dev/null
procmail: "|/usr/local/bin/procmail"</programlisting>
      </example>

      <para>ファイル形式はシンプルです。
	コロンの左側にあるメールボックス名は、右側のターゲットに展開されます。
	はじめの例は単純に <username>root</username> のメールボックスを
	<username>localuser</username> のメールボックスに展開し、
	それからエイリアスデータベースをもう一度調べます。
	一致するエントリがなければメッセージはローカルユーザである
	<username>localuser</username> に配送されます。
	次の例はメールリストです。
	<username>ftp-bugs</username> のメールボックスへのメールは
	<username>joe</username>, <username>eric</username>
	および <username>paul</username> の三つのローカルメールボックスに展開されます。
	リモートメールボックスは <literal>user@example.com</literal>
	のように指定できることに注意してください。
	次の例はメールをファイル、この場合 <filename>/dev/null</filename>
	に書き込みます。
	最後の例はメールをプログラムに送ります。
	この場合メールのメッセージは &unix; パイプを通じて
	<filename>/usr/local/bin/procmail</filename> の標準入力に書き込まれます。</para>

      <para>このファイルを変更したら、
	データベースを更新するために<filename>/etc/mail/</filename> ディレクトリで
	<command>make</command> コマンドを実行する必要があります。</para>
    </sect2>

    <sect2>
      <title><filename>/etc/mail/local-host-names</filename></title>

      <para>これは &man.sendmail.8;
	がローカルホスト名として認めるホスト名のリストです。
	<application>sendmail</application>
	がメールを受け取るすべてのドメインやホストにこのファイルを置いてください。
	たとえば、このメールサーバは
	<hostid role="domainname">example.com</hostid> というドメインおよび
	<hostid role="fqdn">mail.example.com</hostid>
	というホストへのメールを受け取るとすると、
	<filename>local-host-names</filename> ファイルの内容は次のようになるでしょう。</para>

      <programlisting>example.com
mail.example.com</programlisting>

      <para>このファイルを更新したら、変更を読み込むために
	&man.sendmail.8; を再起動する必要があります。</para>
    </sect2>

    <sect2>
      <title><filename>/etc/mail/sendmail.cf</filename></title>

      <para><application>sendmail</application> の主設定ファイルである
	<filename>sendmail.cf</filename> は、電子メールアドレスの書き換えから、
	リモートメールサーバへ拒絶メッセージを送ることまで
	<application>sendmail</application> の全般的な動作をすべて制御します。
	当然、そのようなさまざまな役割によりこの設定ファイルは大変複雑で、
	その詳細についてはこの節の少し範囲外です。好運なことに、
	標準的な構成のメールサーバではこのファイルをめったに変更する必要はありません。</para>

      <para><application>sendmail</application> の主設定ファイルは
	<application>sendmail</application> の機能と動作を決定する
	&man.m4.1 マクロから構築できます。
	詳細については
	<filename>/usr/src/contrib/sendmail/cf/README</filename>
	を参照してください。</para>

      <para>このファイルを更新したら、その変更を反映するために
	<application>sendmail</application> を再起動する必要があります。</para>
    </sect2>

    <sect2>
      <title><filename>/etc/mail/virtusertable</filename></title>

      <para><filename>virtusertable</filename> は仮想ドメインおよび仮想メールボックスに対するアドレスを実際のメールボックスと対応づけます。
	これらのメールボックスにはローカル、リモート、
	<filename>/etc/mail/aliases</filename> に定義されたエイリアス、
	またはファイルを使用できます。</para>

      <example>
	<title>仮想ドメインメール対応表の例</title>

	<programlisting>root@example.com                root
postmaster@example.com          postmaster@noc.example.net
@example.com                    joe</programlisting>
      </example>

      <para>上の例では <hostid role="domainname">example.com</hostid>
	ドメインへの対応づけをしています。
	このファイルはファイルの下までファーストマッチ
	(訳注: 一致するルールが複数ある場合、
	一番最初に一致したルールが適用されること) で処理されます。
	はじめの行では <literal>root@example.com</literal> を
	ローカルの <username>root</username> メールボックスに対応づけています。
	次のエントリでは <literal>postmaster@example.com</literal> を
	<hostid role="fqdn">noc.example.net</hostid> ホスト上の
	<username>postmaster</username> メールボックスに対応づけています。
	最後に、今までのところでは
	<hostid role="domainname">example.com</hostid>
	に関して何も一致しない場合、最後のエントリと一致するでしょう。
	これは <hostid role="domainname">example.com</hostid>
	の誰かに送ったすべてのメールが一致します。これは
	<username>joe</username> のローカルメールボックスに対応づけられています。</para>
    </sect2>
  </sect1>

  <sect1 id="mail-changingmta">
    <sect1info>
      <authorgroup>
	<author>
	  <firstname>Andrew</firstname>
	  <surname>Boothman</surname>
	  <contrib>原作: </contrib>
	</author>
      </authorgroup>
      <authorgroup>
	<author>
	  <firstname>Gregory</firstname>
	  <surname>Neil Shapiro</surname>
	  <contrib>Information taken from e-mails written by </contrib>
	</author>
      </authorgroup>
    </sect1info>

    <title>MTA の変更</title>
    <indexterm>
      <primary>email</primary>
      <secondary>MTA の変更</secondary>
    </indexterm>

    <para>すでに述べたように、FreeBSD には MTA (Mail Transfer Agent) として、
      <application>sendmail</application> がすでにインストールされています。
      したがって、デフォルトではこれがメールの送受信を担当しています。</para>

    <para>しかしながら、さまざまな理由によって、
      システムの MTA を変更しようと考えるシステム管理者もいるかもしれません。
      その理由は、単に他の MTA を試してみたいというものから
      他のメーラに依存する特定の機能やパッケージが必要だといったものまで、
      多岐にわたることでしょう。
      幸い、理由がどんなものであれ、FreeBSD では簡単に変更できます。</para>

    <sect2>
      <title>新しい MTA のインストール</title>

      <para>さまざまな MTA が利用できます。
	<link linkend="ports">FreeBSD Ports Collection</link>
	から探しはじめるのがよいでしょう。
	もちろん、どんな場所からでも、あなたが利用したい MTA が
	FreeBSD で動作する限りすべて自由に使えます。</para>

      <para>新しい MTA をインストールすることからはじめましょう。
	新しい MTA をインストールすると、
	あなたの要求が実際に実現したかどうか決める機会が与えられます。さらに、
	サービスを <application>sendmail</application> から引き継ぐ前に
	新しいソフトウェアを設定する機会が与えられます。これを行う場合、
	新しいソフトウェアが <filename>/usr/bin/sendmail</filename>
	のようなシステムバイナリを上書きしようとしないことを確認してください。
	そうしないとあなたが設定する前に新しいメールソフトウェアが本格的に動作しはじめてしまいます。</para>

      <para>あなたが選択したソフトウェアを設定する方法についての情報は、
	その MTA の文書を参照してください。</para>
    </sect2>

    <sect2>
      <title><application>sendmail</application> を無効にする</title>

      <para><application>sendmail</application>
	を起動するために使用されていた手続きは、
	4.5-RELEASE と 4.6-RELEASE の間で著しく変更されました。
	したがって、それを無効にするための手続きは微妙に違います。</para>

      <sect3>
	<title>2002 年 4 月 4 日より前の FreeBSD 4.5-STABLE
	  (4.5-RELEASE とそれ以前のバージョンが該当)</title>

	<para><filename>/etc/rc.conf</filename> に次の行を加えてください。</para>

	<programlisting>sendmail_enable="NO"</programlisting>

	<para>これは <application>sendmail</application>
	  のメール受信機能を無効にします。
	  しかし <filename>/etc/mail/mailer.conf</filename> (下記参照)
	  が変更されていなければ、<application>sendmail</application>
	  はメールの送信にまだ使われるでしょう。</para>
      </sect3>

      <sect3>
	<title>2002 年 4 月 4 日以降の FreeBSD 4.5-STABLE
	  (4.6-RELEASE とそれ以降のバージョンが該当)</title>

	<para><application>sendmail</application> を完全に無効にするためには
	  <filename>/etc/rc.conf</filename> に次の行を加えなくてはいけません。</para>

	<programlisting>sendmail_enable="NONE"</programlisting>

	<warning>
	  <para>もしこの方法で <application>sendmail</application>
	    のメール送信機能を無効にしたのなら、
	    完全に動作する代替メール配送システムと置き換えることが重要です。
	    さもなければ、&man.periodic.8; などのシステム機能は、
	    それらの結果を通常想定しているようにメールで配送することができなくなるでしょう。
	    システムの多くの部分が <application>sendmail</application>
	    互換のシステムがあることを想定しているかもしれません。
	    もしそれらを無効にした後に、
	    アプリケーションがメールを送ろうとするために
	    <application>sendmail</application> のバイナリを使用し続ければ、
	    メールは使われていない <application>sendmail</application>
	    のキューに入り、そして決して配送されないでしょう。</para>
	</warning>

	<para>もし <application>sendmail</application>
	  のメール受信機能だけを無効にしたいのなら
	  <filename>/etc/rc.conf</filename> に以下の行を追加してください。</para>

	<programlisting>sendmail_enable="NO"</programlisting>

	<para><application>sendmail</application>の起動オプションに関する詳細は
	  &man.rc.sendmail.8; マニュアルをご覧ください。</para>
      </sect3>
    </sect2>

    <sect2>
      <title>起動時に新しい MTA を起動する</title>

      <para>起動時に新しい MTA を起動するには二つの選択肢があります。
	ここでも、あなたが稼働させている FreeBSD のバージョンに依存します</para>

      <sect3>
	<title>2002 年 4 月 11 日より前の FreeBSD 4.5-STABLE
	  (4.5-RELEASE とそれ以前のバージョンが該当)</title>

	<para><filename>/usr/local/etc/rc.d/</filename> ディレクトリに、
	  ファイル名が <filename>.sh</filename> でおわり、
	  <username>root</username> によって実行可能なスクリプトを追加します。
	  このスクリプトは <literal>start</literal> および
	  <literal>stop</literal> パラメータを引数として受け付けるようにします。
	  起動時にシステムスクリプトは次のコマンドを実行するでしょう。</para>

	<programlisting>/usr/local/etc/rc.d/supermailer.sh start</programlisting>

	<para>これは手動でサーバを起動するためにも使用できます。
	  システム終了時にはシステムスクリプトは <literal>stop</literal>
	  オプションを使用して、次のコマンドを実行するでしょう。</para>

	<programlisting>/usr/local/etc/rc.d/supermailer.sh stop</programlisting>

	<para>これはシステムが稼働している間に手動でサーバを停止するためにも使えます。</para>
</sect3>

      <sect3>
	<title>2002 年 4 月 11 日以降の FreeBSD 4.5-STABLE
	  (4.6-RELEASE とそれ以降のバージョンが該当)</title>

	<para>より新しいバージョンの FreeBSD では、
	  上記の方法または次の行を <filename>/etc/rc.conf</filename>
	  に設定できます。</para>

	<programlisting>mta_start_script="filename"</programlisting>

	<para><replaceable>filename</replaceable> は、あなたが
	  MTA を立ち上げるために起動時に実行するスクリプト名です。</para>
      </sect3>
    </sect2>

    <sect2>
      <title>システムのデフォルトメーラとして <application>sendmail</application> を置き換える</title>

      <para><application>sendmail</application> プログラムは &unix;
	システム上の標準ソフトウェアとして本当にどこでも利用できるので、
	これがすでにインストールおよび設定されているとみなしている
	ソフトウェアもあるかもしれません。
	この理由により、代替となる MTA の多くは
	<application>sendmail</application> コマンドラインインタフェースと
	互換性のある実装を提供しています。
	これを <quote>差し込む</quote> ことによって、
	<application>sendmail</application> の置き換えとして代替 MTA
	を使用することが容易になります。</para>

      <para>したがって、あなたが互換メーラを使用しているときには、
	<filename>/usr/bin/sendmail</filename> のような標準
	<application>sendmail</application>
	バイナリを実行しようとするソフトウェアが、
	実際にはその代わりにあなたの選択したメーラを実行しているということを
	確かめる必要があるでしょう。
	好運なことに、FreeBSD はこの仕事をする
	&man.mailwrapper.8; と呼ばれるシステムを提供しています。</para>

      <para>インストールされたまま
	<application>sendmail</application> が稼働しているときには
	<filename>/etc/mail/mailer.conf</filename>
	には以下のような記述があるでしょう。</para>

      <programlisting>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</programlisting>

      <para>このことは、これらのうちどの共通コマンド
	(<filename>sendmail</filename> 自身のような) が実行されても、
	システムは <filename>mailer.conf</filename> を確認して、
	代わりに <filename>/usr/libexec/sendmail/sendmail</filename> を実行する
	<filename>sendmail</filename> という名前の mailwapper
	のコピーを呼び出すことを意味します。
	このようなシステムでは、デフォルトの
	<filename>sendmail</filename> が呼び出されたときに、
	どのバイナリが実際に実行されるかを変更するのが簡単になります。</para>

      <para>したがって、<application>sendmail</application> の代わりに
	<filename>/usr/local/supermailer/bin/sendmail-compat</filename>
	を実行させたいのなら、次のように
	<filename>/etc/mail/mailer.conf</filename> を変更してください。</para>

      <programlisting>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</programlisting>
    </sect2>

    <sect2>
      <title>完了</title>

      <para>あなたのやりたいようにすべてを設定しおえたら、
	もはや必要のない <application>sendmail</application>
	のプロセスを終了して新しいソフトウェアに関するプロセスを起動するか、
	単に再起動してください。
	再起動することによって、新しい MTA が起動時に正しく立ち上がるように
	システムが設定されているかどうか確認することもできるでしょう。</para>
    </sect2>
  </sect1>

  <sect1 id="mail-trouble">
    <title>トラブルシュート</title>
    <indexterm>
      <primary>email</primary>
      <secondary>トラブルシューティング</secondary>
    </indexterm>

    <qandaset>
      <qandaentry>
	<question>
	  <para>どうして自分のサイトのホストなのに FQDN を使わなければいけないのですか?</para>
	</question>

	<answer>
	  <para>恐らく、そのホストは実際には別のドメインにあるのでしょう。
	    例えば <hostid role="fqdn">foo.bar.edu</hostid> ドメインにいて、
	    <hostid role="domainname">bar.edu</hostid> というドメイン内の
	    <hostid>mumble</hostid> というホストにアクセスしたいとします。
	    この時は単に <hostid>mumble</hostid> ではなく
	    <hostid role="fqdn">mumble.bar.edu</hostid> と FQDN で参照しなければなりません。</para>

	  <indexterm><primary>BIND</primary></indexterm>
	  <para>そもそも、BSD BIND のリゾルバー (resolver) ではこのようなことが可能でしたが、
	    FreeBSD に入っている最新版の <application>BIND</application>
	    では自分のドメイン以外に対する FQDN でない省略形は許されません。
	    従ってホストを <hostid>mumble</hostid> と曖昧に指定した場合は
	    <hostid role="fqdn">mumble.foo.bar.edu</hostid> という名前があればそれになり、
	    そうでなければ root ドメインから検索されます。</para>

	  <para>これは、
	    <hostid>mumble.bar.edu</hostid> と
	    <hostid>mumble.edu</hostid>
	    ということなったドメイン名に対してホスト名のサーチがおこなわれていた以前の振る舞いとは異なったものです。
	    このような事が悪い例もしくはセキュリティホールとみなされる理由については
	    RFC 1535 を見てください。</para>

	  <para><filename>/etc/resolv.conf</filename> で

	    <programlisting>domain foo.bar.edu</programlisting>

	    と書いてある行を

	    <programlisting>search foo.bar.edu bar.edu</programlisting>

	    と書き換えることで上のようなことができます。
	    しかし、RFC 1535 にあるように検索順序が
	    <quote>内部 (local) と外部 (public) の管理の境界</quote>
	    をまたがないようにしてください。</para>
	</answer>
      </qandaentry>

      <qandaentry>
	<question>
	  <para><application>sendmail</application> が <errorname>mail loops back to
	      myself</errorname> というメッセージを出すのですが。</para>
	</question>

	<answer>
	  <para><application>sendmail</application>
	    FAQ に次のように書いてあります。</para>

	  <programlisting><quote>Local configuration error</quote> というメッセージが出ます。例えば、

553 relay.domain.net config error: mail loops back to myself
554 &lt;user@domain.net&gt;... Local configuration error

のような感じですが、どうしたら解決できますか?

これは、例えば domain.net のようなドメイン宛てのメールを
<literal>MX</literal> レコードで特定のホスト(ここでは
relay.domain.net) に送ろうとしたのに、
そのホストでは domain.net
宛てのメールを受け取れるような設定になっていない場合です。
設定の際に
FEATURE(use_cw_file) を指定してある場合には
/etc/mail/local-host-names の中に domain.net を追加してください。
もしくは、/etc/mail/sendmail.cf の中に <quote>Cw domain.net</quote>
を追加してください。</programlisting>

	  <para><application>sendmail</application> FAQ は
	    <ulink URL="http://www.sendmail.org/faq"></ulink> にありますので、
	    メールの設定に <quote>おかしなこと</quote> があれば常に読んでください。</para>
	</answer>
      </qandaentry>

      <indexterm><primary>PPP</primary></indexterm>
      <qandaentry>

	<question>
	  <para>ダイアルアップ PPP ホストでメールサーバを実行するにはどうしたらいいの?</para>
	</question>

	<answer>
	  <para>LAN 上にある FreeBSD マシンを、
	    インターネットに接続したいとします。FreeBSD マシンは、その
	    LAN でのメールゲートウェイになります。FreeBSD
	    マシンは専用線接続ではありません (訳注: ダイアルアップ接続など)。</para>

	  <indexterm><primary>UUCP</primary></indexterm>
	  <para>これには、少なくとも二つの方法があります。
	    一つは UUCP を使うことです。</para>

	  <para>もう一つの方法は、あなたのドメインに対するセカンダリ
	    MX サービスを提供する常時稼働のインターネットサーバを用意することです。
	    たとえば、あなたの会社のドメインが
	    <hostid role="domainname">example.com</hostid> で、
	    ISP があなたのドメインに セカンダリ MX サービスを提供するために
	    <hostid role="domainname">example.net</hostid> ドメインを
	    用意するとしたら次のようにします。</para>

	  <programlisting>example.com.	MX	10	example.com.
MX	20	example.net.</programlisting>

	  <para>最終的なメール受信先としては、
	    一つのホストだけが定義されるべきです
	    (<hostid role="domainname">example.com</hostid> 上の
	    <filename>/etc/mail/sendmail.cf</filename> ファイルに、
	    <literal>Cw example.com</literal> を追加します)。</para>

	  <para>送信側の <command>sendmail</command> が、
	    メールを配送しようとしている時、モデムの接続を介してあなたのところ
	    (<hostid role="domainname">example.com</hostid>)
	    に接続しようとします。大抵の場合、
	    あなたのマシンがオンラインでないために、
	    接続はタイムアウトしてしまうでしょう。
	    <command>sendmail</command> プログラムは自動的に、
	    たとえばあなたのインターネットプロバイダなどのセカンダリの
	    MX サイト (<hostid role="domainname">example.net</hostid>)
	    にメールを配送するでしょう。
	    セカンダリ MX サイトは定期的にあなたのホストに接続し、
	    プライマリ MX ホスト
	    (<hostid role="domainname">example.com</hostid>)
	    にメールを配送しようとするでしょう。</para>

	  <para>ログインスクリプトとして、
	    このようなものを使うとよいでしょう。</para>

	  <programlisting>#!/bin/sh
# Put me in /usr/local/bin/pppmyisp
( sleep 60 ; /usr/sbin/sendmail -q ) &amp;
/usr/sbin/ppp -direct pppmyisp</programlisting>

	  <para>ユーザごとにログインスクリプトを作りたい場合には、
	    上記のスクリプトの代わりに、
	    <command>sendmail -qRexample.com</command>
	    を使用することもできます。
	    このようにすると、
	    キューの中の <hostid role="domainname">example.com</hostid>
	    に対するすべてのメールは、すぐに強制的に処理されます。</para>

	  <para>さらに、次のような改良もできます。</para>

	  <para>以下は、&a.isp;
	    メーリングリストから抜粋してきたメッセージです。</para>

	  <programlisting>&gt; 私たちはお客様に対して、セカンダリ MX を提供しています。
&gt; お客様は一日に何回か私たちのサービスに接続し、メールを彼らのプライマリ MX
&gt; に受け取ります (彼らのドメインに対するメールが到着した時には、
&gt; 私たちは彼らのサイトを呼び出しません)。
&gt; 私たちの sendmail は、30 分ごとにメールキューに溜っているメールを配送します。
&gt; ちょうどその時に、すべてのメールがプライマリ MX に送られたかどうかを確かめるためには、
&gt; 彼らは 30 分は オンラインでいなければなりません。
&gt;
&gt; すべてのメールを今すぐ送るために sendmail を初期化するコマンドはあるでしょうか?
&gt; もちろん私たちのマシン上には、ユーザはルート (root) 権限を持っていません。

sendmail.cf の <quote>privacy flags</quote> セクションに、
Opgoaway,restrictqrun の定義があります。

root 以外のユーザがキューを処理できるようにするには、
restrictqrun を削除してください。また、MX の再調整が必要かもしれません。
あなたがたは、顧客のサイトに対する一番優先度の高い MX なので、
次のように定義します。

# If we are the best MX for a host, try directly instead of generating
# local config error.
OwTrue

このようにすると、リモートサイトからのメールが、
顧客のマシンと接続しようとせず、直接あなたがたのホストマシンに配送されるようになります。
ホストマシンに配送されたメールは、続いて顧客のマシンに送られます。
これはホスト名にのみ有効なので、顧客のメールマシンに、
<quote>host.customer.com</quote> とは別に、<quote>customer.com</quote> も定義する必要があります。
DNS 上で、<quote>customer.com</quote> に対する A レコードを定義してください。</programlisting>
	</answer>
      </qandaentry>

      <qandaentry>
	<question>
	  <para>なぜ他のホストにメールを送ろうとすると、いつも
	    <errorname>Relaying Denied</errorname> と怒られてしまうの ?</para>
	</question>

	<answer>
	  <para>FreeBSD がインストールされたデフォルトの状態では、
	    <application>sendmail</application>
	    は動作しているホストからのメールだけを送るように設定されています。
	    たとえば POP3 サーバがインストールされているとすると、
	    ユーザは学校や職場など他のリモートの場所からメールを確認することが
	    できます。しかし、彼らは外部からそのホスト以外へのメールを
	    送ることはやはりできません。
	    通常、メールを送ろうとしてから少しすると、
	    <errorname>5.7 Relaying Denied</errorname>
	    というエラーメッセージの書かれたメールが
	    <application>MAILER-DAEMON</application> から送られてくるでしょう。</para>

	  <para>これを解決する方法はいくつかあります。
	    一番の正攻法は <filename>/etc/mail/relay-domains</filename>
	    リレードメインファイルにあなたの ISP のアドレスを書くことです。
	    これをするのに簡単な方法は次のとおりです。</para>

	  <screen>&prompt.root; <userinput>echo "your.isp.example.com" &gt; /etc/mail/relay-domains</userinput></screen>

	  <para>このファイルを作成または編集したら、
	    <application>sendmail</application> を再起動してください。
	    もしあなたがサーバ管理者でメールをローカルに送りたくないか、
	    ポイントを使用して他のマシン (や、さらに他の ISP) の
	    クライアントまたはシステムへ送りたい時は、とても効果があります。
	    さらに、あなたが一つあるいは二つだけのメールアカウントを
	    設定している場合でもこれは非常に有用です。
	    追加すべきアドレスがたくさんある場合には、
	    単にこのファイルをあなたの好きなテキストエディタで開いて、
	    そして一行に一つずつドメインを追加してください。</para>

	  <programlisting>your.isp.example.com
other.isp.example.net
users-isp.example.org
www.example.org</programlisting>

	  <para>これで、リストに掲載されているすべてのホスト
	    (ユーザがあなたのシステムにアカウントを持っていると規定する)
	    からあなたのシステムを通るすべてのメールは送信に成功するでしょう。
	    これはあなたのシステムから SPAM を送ることを認めることなく、
	    リモートであなたのシステムからメールを送ることをユーザに
	    認めるためのとてもよい方法です。</para>

	</answer>
      </qandaentry>
    </qandaset>
  </sect1>

  <sect1 id="mail-advanced">
    <title>先進的なトピックス</title>

    <para>これからのセクションでは、
      メールの設定やドメイン全体のためのメールの設定といったさらに突込んだ話題について触れます。</para>

    <sect2 id="mail-config">
      <title>基本事項</title>
      <indexterm>
	<primary>email</primary>
	<secondary>設定</secondary>
      </indexterm>

      <para>あなたのマシンに FreeBSD を普通にインストールして、
	<filename>/etc/resolv.conf</filename> ファイルを設定するか、
	またはネームサーバを走らせれば、
	他のホストへ電子メールを送ることができるようになります。
	あなたのホスト宛のメールをあなた自身の FreeBSD ホスト上の
	MTA (たとえば <application>sendmail</application>)
	に配送するようにしたい場合には、次の二つの方法があります。</para>

      <itemizedlist>
	<listitem>
	  <para>自身でネームサーバーを実行し、
	    自分のドメインを持つ。例えば
	    <hostid role="domainname">FreeBSD.org</hostid>。</para>
	</listitem>

	<listitem>
	  <para>あなたのホストへ直接メールが配送されるようにする。
	    これはメールがあなたのマシンの現在の
	    DNS 名に直接配送されるようにすることにより実現できます。
	    たとえば <hostid role="fqdn">example.FreeBSD.org</hostid>。</para>
	</listitem>
      </itemizedlist>

      <indexterm><primary>SMTP</primary></indexterm>
      <para>上のどちらを選ぶ場合でも、自分のホストに直接メールが配送されるようにするには恒久的で
	静的 な IP アドレス
	(ほとんどの PPP ダイアルアップ設定で用いられる動的なアドレスではなく)
	を持っていなければなりません。
	もしファイアウォールの中にいるならば、
	SMTP トラフィックが通過してくれないといけません。
	もし自分のホストでメールを直接受け取りたいならば、
	次の二つのうちのどちらかができていることを確認してください。</para>

      <itemizedlist>
	<indexterm><primary>MX レコード</primary></indexterm>
	<listitem>
	  <para>自分のドメインでの
	    (一番値の小さい) MX レコードが自分のホストの
	    IP アドレスを差していることを確認する。</para>
	</listitem>

	<listitem>
	  <para>自分のドメインの中に自分のホスト用の
	    MX エントリがないことを確認する。</para>
	</listitem>
      </itemizedlist>

      <para>上のどちらかが設定されていれば、
	自分のホストでメールを受け取ることができるでしょう。</para>

      <para>次のコマンドを実行してみてください。</para>

      <screen>&prompt.root; <userinput>hostname</userinput>
example.FreeBSD.org
&prompt.root; <userinput>host example.FreeBSD.org</userinput>
example.FreeBSD.org has address 204.216.27.XX</screen>

      <para>もしあなたのマシンが上記のメッセージだけを出力したならば、
	<email>yourlogin@example.FreeBSD.org</email>
	へのメールは問題なく配送されるでしょう
	(<application>sendmail</application> が
	<hostid role="fqdn">example.FreeBSD.org</hostid>
	上で正しく動作していると仮定します)。</para>

      <para>上記のメッセージの代わりに、</para>

      <screen>&prompt.root; <userinput>host example.FreeBSD.org</userinput>
example.FreeBSD.org has address 204.216.27.XX
example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org</screen>

      <para>というメッセージが出力された場合は、
	あなたのホスト (<hostid role="fqdn">example.FreeBSD.org</hostid>)
	に宛てたメールは全て直接配送されずに <hostid>hub</hostid>
	上の同じユーザー名に配送されます。</para>

      <para>上の情報は DNS サーバーが扱います。
	メールルーティング情報をもつ DNS レコードは、
	<emphasis>M</emphasis>ail e<emphasis>X</emphasis>change エントリーです。
	MX エントリが存在しない場合には、IP アドレスにしたがって、
	直接宛先ホストに配送されます。</para>

      <para><hostid role="fqdn">freefall.FreeBSD.org</hostid>
	の現時点での MX エントリは、次のようになっています。</para>

      <programlisting>freefall		MX	30	mail.crl.net
freefall		MX	40	agora.rdrop.com
freefall		MX	10	freefall.FreeBSD.org
freefall		MX	20	who.cdrom.com</programlisting>

      <para><hostid>freefall</hostid> は多くの MX エントリを持っています。
	一番 MX の値の小さいホストが利用可能な場合は直接メールを受け取ります。
	もしなにかの理由でアクセスができない時には、
	他のホスト (ときどき <quote>バックアップ MX</quote> と呼ばれます)
	が一時的にメールを受け取ります。そして、
	より値の小さいホストが利用可能になったときにメールを渡し、
	最終的に一番値の小さいホストに渡ります。</para>

      <para>使い勝手をよくするためには、代替の MX サイトは、それぞれ
	別の経路でインターネットへ接続しているとよいでしょう。
	インターネットプロバイダまたは他の関連サイトが、このサービスを
	提供することができます。</para>
    </sect2>

    <sect2 id="mail-domain">
      <title>あなたのドメインに対するメール設定</title>

      <para><quote>メールホスト</quote> (メールサーバーとしても知られています)
	をセットアップするためには、
	いろいろなワークステーションに宛てた全てのメールを受ける必要があります。
	基本的には、あなたのドメイン内 (この場合だと
	<hostid role="fqdn">*.FreeBSD.org</hostid>)
	のすべてのホスト名宛てのすべてのメールを <quote>受け取って</quote>、
	そのメールをあなたのメールサーバーに配送し、
	ユーザーがマスタメールサーバ上でメールをチェックできるようにします。</para>

      <indexterm><primary>DNS</primary></indexterm>
      <para>話を簡単にするために、あるユーザーのアカウントはどのマシンでも同じ<emphasis>ユーザー名</emphasis>にすべきです。
	そのためには &man.adduser.8; を使ってください。</para>

      <para>使用する予定のメールホストは、
	各ワークステーションごとにメール交換が
	できるように設定されていなければなりません。
	これは DNS の設定で次のように行なうことができます。</para>

      <programlisting>example.FreeBSD.org	A	204.216.27.XX		; ワークステーション
MX	10 hub.FreeBSD.org	; メールホスト</programlisting>

      <para>これは、ワークステーションの A レコードがどこを指していようとも
	そのワークステーション宛てのメールをメールホストに転送する、というものです。</para>

      <para>自前で DNS サーバを運用しているのでなければ、
	この作業は自分では行えません。自分で DNS
	サーバを運用しないとかできないという場合は、
	あなたの DNS を提供しているインターネットプロバイダなどに依頼して
	作業を行ってもらってください。</para>

      <para>もしバーチャル電子メールホストを運用するなら次の情報が役に立つでしょう。
	例として、あなたには自分のドメイン、ここでは
	<hostid role="domainname">customer1.org</hostid>、
	を持っている顧客がいるとしましょう。
	あなたは <hostid role="domainname">customer1.org</hostid> 宛ての全てのメールを
	<hostid role="fqdn">mail.myhost.com</hostid> というメールホストに集めたいとします。
	DNS エントリーは次のようになるでしょう。</para>

      <programlisting>customer1.org		MX	10 mail.myhost.com</programlisting>

      <para><hostid role="domainname">customer1.org</hostid>
	に対して電子メールを送りたいだけなら、
	A レコードは必要<emphasis>ありません</emphasis>。</para>

      <note>
	<para><hostid role="domainname">customer1.org</hostid>
	  に対して ping を実行しても、
	  A レコードが存在しない限りうまくいかないことに留意しておいてください。</para>
      </note>

      <para>やらなければいけない最後のことは、
	メールホスト上の <application>sendmail</application>
	に対してどんあドメインやホスト宛のメールを受け取るのか、
	を教えることです。いくつかの方法がありますが次のどちらかでいいでしょう。</para>

      <itemizedlist>
	<listitem>
	  <para><literal>FEATURE(use_cw_file)</literal> を使っているなら、
	    <filename>/etc/mail/local-host-names</filename>
	    ファイルにホストを加えます。
	    もし <application>sendmail</application> のバージョンが
	    8.10 より前であれば該当ファイルは
	    <filename>/etc/sendmail.cw</filename> です。</para>
	</listitem>

	<listitem>
	  <para><filename>/etc/sendmail.cf</filename> もしくは
	    <application>sendmail</application> 8.10 以降なら
	    <filename>/etc/mail/sendmail.cf</filename>
	    といったファイルに <literal>Cwyour.host.com</literal> という行を加えます。</para>
	</listitem>
      </itemizedlist>
    </sect2>
  </sect1>

  <sect1 id="SMTP-UUCP">
    <title>UUCP とともに SMTP を使う</title>

    <para>FreeBSD とともに出荷されている
      <application>sendmail</application> の設定は、
      サイトがインターネットに直接接続しているものとして設計されています。
      UUCP 経由でメールを交換したいサイトは、他にも
      設定ファイルをインストールしなければいけません。</para>

    <para><filename>/etc/mail/sendmail.cf</filename>
      を手動で調整することは先進的なトピックです。
      <application>sendmail</application> のバージョン 8 は設定ファイルを
      &man.m4.1; プリプロセッサから生成します。
      これにより、高度に抽象化された設定を行うことができます。
      &man.m4.1; による設定ファイルは
      <filename>/usr/src/usr.sbin/sendmail/cf</filename>
      以下にあります。</para>

    <para>もしシステムをすべてのソースとともにインストールしていなければ、
      sendmail の設定材料は分割された個別のソース tarball を取得してください。
      FreeBSD のソースコードが入った CDROM をマウントしているのなら、</para>

    <screen>&prompt.root; <userinput>cd /cdrom/src</userinput>
&prompt.root; <userinput>cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail</userinput></screen>

    <para>と展開してください (展開してもたった数百 KB 程度です)。
      <filename>cf</filename> ディレクトリの
      <filename>README</filename> ファイルは
      m4 による設定の基本的な手引として役に立つでしょう。</para>

    <para>UUCP 配送に対応するための一番よい方法は
      <literal>mailertable</literal> 機能を使用することです。
      これは経路を決定するために
      <application>sendmail</application>
      が使用できるデータベースを作成します。</para>

    <para>まずはじめに <filename>.mc</filename>
      ファイルを作成しなければいけません。
      <filename>/usr/src/usr.sbin/sendmail/cf/cf</filename>
      にいくつか例があります。<filename>foo.mc</filename>
      という名前のファイルをあなたが作成したとすると、
      有効な <filename>sendmail.cf</filename>
      ファイルへ変換するには次のようにするだけです。</para>

    <screen>&prompt.root; <userinput>cd /usr/src/usr.sbin/sendmail/cf/cf</userinput>
&prompt.root; <userinput>make foo.cf</userinput>
&prompt.root; <userinput>cp foo.cf /etc/mail/sendmail.cf</userinput></screen>

    <para>典型的な <filename>.mc</filename> ファイルは次のようになるでしょう。</para>

    <programlisting>VERSIONID(`<replaceable>Your version number</replaceable>') OSTYPE(bsd4.4)

FEATURE(accept_unresolvable_domains)
FEATURE(nocanonify)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')

define(`UUCP_RELAY', <replaceable>your.uucp.relay</replaceable>)
define(`UUCP_MAX_SIZE', 200000)
define(`confDONT_PROBE_INTERFACES')

MAILER(local)
MAILER(smtp)
MAILER(uucp)

Cw    <replaceable>your.alias.host.name</replaceable>
Cw    <replaceable>youruucpnodename.UUCP</replaceable></programlisting>

    <para>
      <literal>accept_unresolvable_domains</literal>,
      <literal>nocanonify</literal> および
      <literal>confDONT_PROBE_INTERFACES</literal> 機能を含んでいる行は、
      メール配送時にまったく DNS を使用しません。
      <literal>UUCP_RELAY</literal> の記述は UUCP 配送に対応するのに必要です。
      そこにインターネットホスト名を単に書くだけで
      .UUCP pseudo ドメインアドレスを扱うことができるようになります。
      大抵の場合、あなたの ISP のメールリレーをそこに入力するでしょう。</para>

    <para>次に、
      <filename>/etc/mail/mailertable</filename> が必要になります。
      メールを配送するリンクが外界との間に一つだけの場合は、
      次のようにファイルを記述するだけで十分でしょう。</para>

    <programlisting>#
# makemap hash /etc/mail/mailertable.db &lt; /etc/mail/mailertable
.                             uucp-dom:<replaceable>your.uucp.relay</replaceable></programlisting>

    <para>次はさらに複雑な例です。</para>

    <programlisting>#
# makemap hash /etc/mail/mailertable.db &lt; /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:</programlisting>

    <para>はじめの三行はドメインで宛先を指定されたメールが、
      配送路を <quote>近道</quote> するために、
      デフォルトルートではなく代わりにいくつかの UUCP 隣接ホストへ送られる特別な場合を扱います。
      次の行はメールを SMTP で配送可能なローカルイーサネットドメインへ送ります。
      最後に
      <literal><replaceable>uucp-neighbor
	</replaceable>!<replaceable>recipient</replaceable></literal>
      がデフォルトルートを上書きすることを許可するための UUCP 隣接ホストは
      .UUCP 仮想ドメイン記法で言及されます。
      最後の行は常に他のすべてが当てはまるシングルドットです。
      これは UUCP 隣接ホストへの UUCP 配送をすることで、
      世界に向けたあなたの普遍的メールゲートウェイとして役に立ちます。
      <literal>uucp-dom:</literal> キーワードの後ろにあるノード名はすべて、
      <literal>uuname</literal> コマンドを使用することで確かめられる正しい
      UUCP 隣接ホストである必要があります。</para>

    <para>このファイルは、実際に使用する前に DBM
      データベース形式に変換する必要があることに注意してください。
      これを実行するコマンドラインは mailertable
      ファイルの先頭にコメントとして書かれています。
      mailertable を変更するたびにいつもこのコマンドを実行する必要があります。</para>

    <para>最後のアドバイス: もし、
      いくつかのメールルーティングがうまく動いているかどうか分からないときは
      <application>sendmail</application> に
      <option>-bt</option> オプションをつけることを覚えておいてください。
      これは <application>sendmail</application> を
      <emphasis>アドレステストモード</emphasis> で起動します。
      あなたがテストしたいメールルーティングのアドレスを後につけて、
      単純に <literal>3,0</literal> と入力してください。
      最後の行は、内部で使われたメールエージェント、
      このエージェントが呼び出された目的地ホスト、および
      (もしかしたら変換された) アドレスを表示します。
      このモードを終了するには
      <keycombo action="simul"><keycap>Ctrl</keycap><keycap>D</keycap></keycombo>
      を入力します。</para>

    <screen>&prompt.user; <userinput>sendmail -bt</userinput>
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter &lt;ruleset&gt; &lt;address&gt;
<prompt>&gt;</prompt> <userinput>3,0 foo@example.com</userinput>
canonify           input: foo @ example . com
...
parse            returns: $# uucp-dom $@ <replaceable>your.uucp.relay</replaceable> $: foo &lt; @ example . com . &gt;
<prompt>&gt;</prompt> <userinput>^D</userinput></screen>
  </sect1>

  <sect1 id="SMTP-dialup">
    <title>ダイアルアップ接続でメールを使う</title>

    <para>あなたが固定 IP アドレスを持っているのなら、
      デフォルトから何も変更する必要はありません。
      割りあてあてられたインターネット名をホスト名に設定すれば、
      <application>sendmail</application> が残りをやってくれます。</para>

    <para>あなたが動的に割り当てられた IP アドレスを持っていて、
      インターネットに接続するのにダイアルアップ PPP を使用しているのなら、
      おそらく ISP のメールサーバにメールボックスがあるでしょう。
      ここでは、あなたの ISP のドメインが
      <hostid role="domainname">example.net</hostid>,
      あなたのユーザ名が <username>user</username>,
      あなたのマシンは <hostid role="fqdn">bsd.home</hostid>
      と呼ばれているものとします。
      また、ISP から、メールリレーとして <hostid
	role="fqdn">relay.example.net</hostid>
      を使用してよいと通知されているとします。</para>

    <para>(訳注: ISP 上の) メールボックスからメールを取得するためには、
      取得アプリケーションをインストールしないといけません。
      <application>fetchmail</application> ユーティリティは、
      さまざまなプロトコルの多くに対応しているのでよい選択肢です。
      通常、あなたの ISP は POP3 を提供しています。
      あなたが user-PPP を使用しているなら、次のエントリを
      <filename>/etc/ppp/ppp.linkup</filename> に追加することで、
      インターネット接続が確立したときに自動的にメールを取得することができます。</para>

    <programlisting>MYADDR:
 !bg su user -c fetchmail</programlisting>

    <para>あなたがローカルではないアカウントへのメールを配送するために
      (下記のような) <application>sendmail</application>
      を使用しているなら、
      インターネット接続が確立するとすぐに、
      <application>sendmail</application>
      があなたのメールキューを処理して欲しいとおそらく考えるでしょう。
      これを行うには、<filename>/etc/ppp/ppp.linkup</filename> ファイルの
      <command>fetchmail</command> コマンドの後に次のコマンドを追加してください。</para>

    <programlisting> !bg su user -c "sendmail -q"</programlisting>

    <para><hostid role="fqdn">bsd.home</hostid> 上に <username>user</username>
      というアカウントを所有しているとします。
      <hostid role="fqdn">bsd.home</hostid> 上の <username>user</username>
      のホームディレクトリに <filename>.fetchmailrc</filename>
      ファイルを作成します。</para>

    <programlisting>poll example.net protocol pop3 fetchall pass MySecret</programlisting>

    <para>このファイルはパスワード <literal>MySecret</literal>
      を含んでいるので、<username>user</username>
      を除く他の誰にも読めるようになっていてはいけません。</para>

    <para>正しい <literal>from:</literal> ヘッダでメールを送るためには、
      <application>sendmail</application> が <literal>user@bsd.home</literal>
      ではなく <literal>user@example.net</literal> を使用するようにしなくてはいけません。
      また、素早くメール送信をするために
      <application>sendmail</application> にすべてのメールを
      <hostid role="fqdn">relay.example.net</hostid> 経由で送るようにもしたいかもしれません。</para>

    <para>次の <filename>.mc</filename> ファイルで十分でしょう。</para>

    <programlisting>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</programlisting>

    <para><filename>.mc</filename> ファイルを <filename>sendmail.cf</filename>
      ファイルに変換する方法の詳細については前の節を参照してください。
      また、<filename>sendmail.cf</filename> ファイルを変更した後は、
      <application>sendmail</application> を再起動し忘れないでください。</para>
  </sect1>

  <sect1 id="SMTP-Auth">
    <title>SMTP 認証</title>

    <para>メールサーバ上で <acronym>SMTP</acronym> 認証を行うと、
      多くの利益があります。
      <acronym>SMTP</acronym> 認証は <application>sendmail</application>
      にもう一つのセキュリティ層を追加することができます。
      さらに、ホストを切りかえるモバイルユーザにとっては、
      その都度メールクライアントの設定を変更せずとも
      同じメールサーバを利用できるようになります。</para>

    <procedure>
      <step>
	<para>ports から
	  <filename role="package">security/cyrus-sasl</filename>
	  をインストールします。
	  この port は
	  <filename role="package">security/cyrus-sasl</filename> にあります。
	  <filename role="package">security/cyrus-sasl</filename>
	  にはここで使用する方法に対する多くのコンパイルオプションがあり、
	  確実に <option>pwcheck</option> オプションを選択してください。</para>
      </step>

      <step>
	<para><filename role="package">security/cyrus-sasl</filename>
	  をインストールした後に
	  <filename>/usr/local/lib/sasl/Sendmail.conf</filename>
	  を編集して (もし無ければ作成して) 次の行を追加してください。</para>

	<programlisting>pwcheck_method: passwd</programlisting>

	<para>この方法は <application>sendmail</application>
	  があなたの FreeBSD の <filename>passwd</filename>
	  データベースに対して認証することを可能にします。
	  この方法は <acronym>SMTP</acronym> 認証に必要となる、
	  それぞれのユーザに対する一組の新しいユーザ名とパスワードを
	  作成する際のトラブルを減らし、
	  ログインパスワードとメールパスワードを同じままにします。</para>
      </step>

      <step>
	<para>ここで <filename>/etc/make.conf</filename> 編集し、
	  次の行を加えます。</para>

	<programlisting>SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsasl</programlisting>

	<para>これらの行は <application>sendmail</application> に対して、
	  コンパイルするときに <filename role="package">cyrus-sasl</filename>
	  とリンクするための適切な設定オプションを与えるものです。
	  <application>sendmail</application> を再コンパイルする前に
	  <filename role="package">cyrus-sasl</filename>
	  がインストールされていることを確かめてください。</para>
      </step>

      <step>
	<para>次のコマンドを入力して <application>sendmail</application>
	  を再コンパイルしてください。</para>

	<screen>&prompt.root; <userinput>cd /usr/src/usr.sbin/sendmail</userinput>
&prompt.root; <userinput>make cleandir</userinput>
&prompt.root; <userinput>make obj</userinput>
&prompt.root; <userinput>make</userinput>
&prompt.root; <userinput>make install</userinput></screen>

	<para><application>sendmail</application> のコンパイルは
	  <filename>/usr/src</filename> が大幅に変更されていなくて、
	  必要な共有ライブラリが利用可能であれば何の問題も起こらないでしょう。</para>
      </step>

      <step>
	<para><application>sendmail</application>
	  をコンパイルして再インストールした後は、
	  <filename>/etc/mail/freebsd.mc</filename> ファイル
	  (またはあなたが <filename>.mc</filename>
	  ファイルとして使用しているファイル。
	  多くの管理者は唯一の名前を用いるために &man.hostname.1; の出力を
	  <filename>.mc</filename> として使用することを選んでいます)
	  を編集してください。
	  次の行を加えてください。</para>

	<programlisting>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</programlisting>

	<para>これらのオプションは、ユーザを認証するために
	  <application>sendmail</application>
	  が利用可能な異なる方法を設定します。
	  もし <application>pwcheck</application>
	  以外の方法を使用したいのならドキュメントを参照してください。</para>
      </step>

      <step>
	<para>最後に <filename>/etc/mail</filename> で &man.make.1;
	  を実行してください。
	  これにより、新しい <filename>.mc</filename>
	  ファイルから <filename>freebsd.cf</filename> という名前
	  (またはあなたの <filename>.mc</filename> に使用している名前) の
	  <filename>.cf</filename> ファイルが作成されます。
	  それから <command>make install restart</command>
	  コマンドを実行してください。
	  新しい <filename>.cf</filename> ファイルが
	  <filename>sendmail.cf</filename> にコピーされ、
	  <application>sendmail</application> が適切に再起動されるでしょう。
	  この手続きについての詳細は
	  <filename>/etc/mail/Makefile</filename>を参照してください。</para>
      </step>
    </procedure>

    <para>すべてがうまくいけば、ログイン情報をメールクライアントに入力し、
      テストメッセージを送ることができるでしょう。
      より詳細に調べるには <application>sendmail</application> の
      <option>LogLevel</option> を 13 に設定し、
      すべてのエラーについて <filename>/var/log/maillog</filename>
      を見てください。</para>

    <para>このサービスがシステムを起動した後にいつでも利用可能となるように、
      <filename>/etc/rc.conf</filename> に次の行を追加しておくとよいでしょう。</para>

    <programlisting>sasl_pwcheck_enable="YES"
sasl_pwcheck_program="/usr/local/sbin/pwcheck"</programlisting>

    <para>これにより、システムの起動時に
      <acronym>SMTP_AUTH</acronym> が確実に初期化されるでしょう。</para>

    <para>詳細については
      <ulink url="http://www.sendmail.org/~ca/email/auth.html">
	<acronym>SMTP</acronym> 認証</ulink> に関する
      <application>sendmail</application> の文書を参照してください。</para>
  </sect1>
</chapter>

<!--
     Local Variables:
     mode: sgml
     sgml-declaration: "../chapter.decl"
     sgml-indent-data: t
     sgml-omittag: nil
     sgml-always-quote-attributes: t
     sgml-parent-document: ("../book.sgml" "part" "chapter")
     End:
-->
