こんにちは。スプラトゥーン2ではずっとジェットスイーパーの下地です。
最近はクーゲルシュライバーやエクスプロッシャーの登場で、射程で競り負けることが多くつらい環境ですががんばっています。
さて、今日のブログはメールサーバの話です。
postfixの本を読んでいるとMTAやらMSAやら色々用語が出てきたので、1つずつ整理してみようと思いました。
宜しくお願いします。
MTA
MTAはMail Transfer Agentの略で、文字通りメールを配送するエージェントプログラムです。
いわゆる「メールサーバ」や「SMTPサーバ」と呼ばれる部分で、SMTPプロトコルを使用してメールを配送します。
MTAは、MSAや他のMTAからメールを受け取り、MDAや他のMTAにメールを配送します。
配送の際は、メール本体(ヘッダ)ではなくエンベロープアドレスからDNSを検索して、配送先のMTAを見つけ出します。
ローカル宛の場合はMDAに配送します。
MSA
MSAはMessage Submission Agentの略で、ユーザ(主にMUA)から送られてくるメールを受け取るプログラムです。
OP25Bや認証を担当する部分です。
Submissionは間接技ではなくて「提出」という意味があります。
また、他の用語は全てMailから始まりますが、これだけMessageから始まる分かりにくいやつです。
受け取ったメールはMTAに配送します。
一般的にMTAとまとめて解釈されることが多いです。
MUA
MUAはMail User Agentの略で、いわゆる「メーラー」です。
ThunderbirdとかOutlookとかですね。
エンドユーザがメールを読んだり作成したりするプログラムです。
ユーザがメールを送信するときにSMTPプロトコルを使用してMTA/MSAに接続します。
メールの受信時にはPOPやIMAPプロトコルを使用してMRAに接続し、メールを受け取ります。
MDA
MDAはMail Delivery Agentの略で、MTAが受け取ったメールをユーザ個々のメールボックスに配送するプログラムです。
MTAが受け取ったメールをMUAが読み取れるようにローカル分類配送をするだけで、システム間のメール配送には関与しません。
メールボックスには「Mailbox形式」と「Maildir形式」があります。
MRA
MRAはMail Retrieval Agentの略で、個々のメールボックスに蓄えられているメールをMUAに渡すプログラムです。
Retrieval(レトリーバル)はあまり馴染みの無い単語ですが、検索という意味があります。
MUAから接続されて認証を行う機能があり、POPサーバとかIMAPサーバなどと呼ばれます。
代表的な実装に、Dovecot・qpopper・imapdなどがあります。
それぞれの連携
用語だけだと分かりにくいので、各要素の連携を図にしました。
流れとしては、
1.MUAで作成したメールは、SMTPプロトコルにしたがってMSAに送られます。
2.MSAが認証(SMTP認証実施の場合)を行い、通過したらMTAに配送します。
3.MTAは、配送先がローカル宛か外部宛かを判別し、ローカル宛の場合はMDAにメールを渡します。
外部宛の場合は、DNSに問い合わせて宛先を特定し、SMTPプロトコルを使ってそちらに配送します。
4.宛先MTAはメールを受け取ると、MDAにそれを渡して個々のメールボックスに割り振ります。
5.宛先のユーザはMUAを使ってMRAにアクセスし、メールボックスからメールを取り出します。
まとめ
メールサーバを勉強するとき、私は個々の設定項目に気を取られてしまって全体の流れがイマイチな感じでした。
まず大枠を捕らえてから細かい部分にフォーカスするような流れで勉強できればと思います。
お読み頂きありがとうございました。