用語解説は神戸隆博さんのメールをそのまま利用させていただきました. 神戸さん,どうもありがとうございます.
メールの配送を担うエンティティ,これらが協調してMTS(Message Transfer System)を構成する.
メール・システムの利用者(人やプログラム)の意志を反映して,メッセージの送信,取り込みを行うエンティティ.
この区別はあくまでもモデルとしてのものであり,sendmailにしてもMTAの処理の大半を行うのは確かだが,MUA的な処理も行っている.現実の実装では厳密に区別されるものではない.
MUAからMTAまたはMTAからMTAの間で送られるメールとして送られるもので,実際はエンベロープの部分とコンテンツから成る.
メッセージに含まれる,送信者や受信者等を含む部分. 本質的にMTAが配送に利用するための情報で,MUAが送るメールの本体(コンテンツ)とは別のものである. 通常のメールを読み書きするプログラムからは,一部のヘッダに残骸として見えるか,まったく見えない.
エンベロープの送信者や受信者は別名の処理やメーリングリストの処理によって書き換えられることがある.
(SMTPではMAIL/RCPTコマンドでやりとりされる情報,X.400ではプロトコル上でやりとりされる情報.)
MUAからMTA,またはMTAからMTAの間でやりとりされるメール本体で,通常で言うところのメールのメッセージに相当する. SMTP的には最初の空行で区切られたヘッダとボディから構成され,RFC822で定義されたものがベースである.
(SMTP的にはメモ・ベースの内容であるが,MIMEにより構造化した内容を扱う.X.400では元々構造化された内容を扱える.)
コンテンツのうち,MUA等が利用する付加情報を含む部分.
From, Sender, To, Cc, Bccといったヘッダに指定される送受信者とエンベロープの内容は,一致していない場合も存在する.
ヘッダの送信者や受信者はポスティングの時点や,何らかのポリシーに基づいた書き換えが行われる場合を除いて,基本的には書き換えられない.
MUAから最初のMTAへの送信であるが,SMTPでは明示的な区別はなされていない. 以下の処理はポスティングの段階で行うべきことである.
特別なメールのゲートウェイ等を行う場合を除いて,これらの情報はポスティング時以外に書き換えられるべきではない.
MTAから最終的なMTAまで配送される過程では,ヘッダに対して行う処理は以下の処理に限定される.
自分の組織のアドレスを,何らかの目的で積極的に書き換える場合は,一種のメール・ゲートウェイの延長と解釈できる.
ユーザのメールボックスに格納する段階であり,SMTP的にはエンベロープの送信者を値としたReturn-Pathヘッダを付加する. 最終的な配送でない段階でのReturn-Pathヘッダの付加は正しい処理ではない.
コンテンツのうち,ユーザが送付する本文に相当する部分.
mail.local(/bin/mail)でメッセージの区切りを表す行で,メッセージ本体ではない. (RFC822的な規則にも従っていない.)
"From "で始まることになっているため,本文に同じパターンで始まる行の扱いが問題となるケースがある.
sendmail的な世界ではmail.local(/bin/mail)やprogram mailerに渡されて,処理が正常に完了した段階で終了したことになる.