メールの立ち上げ方

Office:greg@apt.fxis.fujixerox.co.jp
Home:greg@greg.rim.or.jp
last modified 1995/01/15
現在、工事中です。
御意見/要望などがありましたら上記アドレスまで御連絡下さい。
1 はじめに
 この文章をお読みになる方々は、ある程度の技術またはやる気を持っている方を対象にしています。 まず、メールはどのようにして配送されているか知っていますか? 特に知っていなくてのメールそのものは使えますが、この機会に考えてみて下さい。
Picture of MTA network
この図は、メール配送にかかわる物の関係を視覚化した物です。 図中のMTA/MUAとは

と定義します。

メールの配送は

  1. ユーザはMUAを介してメールを発信します。MAUはユーザが発信したメールをMTAへ渡します。MUAはメールの配送方法/配送先を知りません。
  2. MTAは受け取ったメールの配送先を決定します。
    1. 配送先がローカルであった場合、ユーザのメールボックスへメールを格納します。
    2. 配送先がリモートであった場合、リモートのMTAにメールを転送します。
  3. リモートのMTAは送られて来たメールの配送先を決定します。
    1. 配送先がローカル当てのメールであった場合、ローカルユーザのメールボックスにメールを格納します。
    2. さらなる転送が必要だった場合、さらに転送します。
という手順を踏んで、配送されます。

 このドキュメントではMTAとして一般的に使用されているsendmailを取り上げて話を進めて行きます。


2 sendmail.cfの基本事項について
 sendmailの設定は

から構成される。これらはそれぞれ以下のような役目を担っている。

である。

3 配送経路について
 最も代表的な配送方法としては、以下の3つがあげられる。

SMTP(Simple Mail Transfer Protocol)以外の配送方法はsendmailの外部のプログラムを使用して、実現しています。

各メーラの定義は以下のように行います。

Mメーラの名前,\
	P=配送プログラムのパス,\
	F=配送に使用するフラグ,\
	S=発信人アドレスの書き換えルール,\
	R=受信人アドレスの書き換えルール,\
	M=,\
	A=配送プログラムへ与えるコマンドライン

メーラの宣言は行の先頭にMと書かれている行から始まります。 以下の物は宣言の例です。

Mlocal,   P=/usr/libexec/mail.local,
          F=lsDFMmrn,
          S=10,
          R=20/0,
          A=mail -d $u

Mesmtp,   P=[IPC],
          F=mDFMuXa,
          S=11,
          R=21,
          A=IPC $h,
          E=\r\n,
          L=990

Muucp,    P=/usr/bin/uux,
          F=mDFMu,
          S=12,
          R=21,
          M=100000,
          A=uux - -r -gB $h!rmail ($u)


4 各ルールセットについて

 ルールセットは0/1/2/3/4の計5つの物が基本となる。 各ルールセットはそれぞれ、

ルールセットの宣言は

S<ルールセット番号>

で始まります。ルールセットの終りを宣言する物はありません。 また、各ルールは

R<パターン>  書き換えパターン

と記述します。
4.1 ルールセット3
 このルールセットは"Kensaku Masuda <greg@greg.rim.or.jp>"とか "greg@greg.rim.or.jp (Kensaku Masuda)"のような物を通常のメールアドレスに変換する物です。 また、"greg@greg.rim.or.jp:apt.fxis.fujixerox.co.jp"等のようにルーティングを指定されていた場合も、このルールで解決します。
 このルールの最終的な出力は

mail_acount<@relay_host>

のようになります。ちなみに、上記の例だと以下のようになります。

Kensaku Masuda <greg@greg.rim.or.jp>     -> greg<@greg.rim.or.jp>
greg@greg.rim.or.jp (Kensaku Masuda)         -> greg<@greg.rim.or.jp>
greg@greg.rim.or.jp:apt.fxis.fujixerox.co.jp -> greg<@greg.rim.or.jp:apt.fxis.fujixerox.co.jp>

4.2 ルールセット0
 このルールセットは配送に使用するメーラを決定するルールです。 通常は、2つのメーラを使い分ける程度の物が定義されていると思います。 その2つの物とは

  • リモートホストへ配送するためのメーラ
  • ローカルへ配送するためのメーラ

です。
 このツールが出力する、最終的な出力はトリプルと呼ばれる3つの属性の組みです(ローカルの場合は2つで十分です)。以下に例を示します。

$# smtp $@ mailhost.greg.rim.or.jp. $: greg@greg.rim.or.jp
$# local $:greg
3つの属性は以下のような意味があります。

  • $#
    メーラの指定。
  • $@
    転送先のホスト
  • $:
    リモートのユーザ名

 1つ目の例では、SMTPを利用し、転送先はmailhost.greg.rim.or.jpで、ユーザはgreg@greg.rim.or.jpでる事を示しています。 2つ目の例では、ローカルへ配送し、ユーザはgregである事を示しています。

4.3 ルールセット1
 通常、このルールセットは何もしません。 必要があるなら各メーラのR=で指定されたルールを使用します。
4.4 ルールセット2
 通常、このルールセットは何もしません。 必要があるなら各メーラS=で指定されたルールを使用します。
4.5 ルールセット4
 通常、このルールセットは何もしません。

5 オプション/マクロの定義
 通常、ホスト名/ドメイン名等はマクロとして宣言するのが普通です。 マクロには

の2種類があります。 マクロの宣言は

と記述します。

マクロ名のうち、一般的にアルファベットの小文字は予約されているマクロ名だと思って下さい。以下に、予約されているマクロ名をあげます。

 これらのマクロは予約されてはいますが、ユーザが自由に定義する事も出来ます。