メールサーバー勉強
メールアプリケーションを作りたいということで、まずは今更ながら基本的なメールの仕組みを勉強してみた。ネット上でもJamesの資料が少ない(メールサーバーの各ポイントを説明するサイトは多いが、そのポイント同士をつなげるサイトが少ないという意味で)ので、唯一のJames本を買って教本にしています。
Javaメールアプリケーションプラットフォーム Apache Jakarta:JAMES詳解―Mailet、Macher、Avalon、JavaMail活用 (新紀元社情報工学シリーズ)
- 作者: 伊藤滋伸
- 出版社/メーカー: 新紀元社
- 発売日: 2004/08
- メディア: 単行本
- クリック: 12回
- この商品を含むブログ (7件) を見る
メールサーバの役割
メールサーバーには、大きく以下の役割がある。
MTA | Mail Transfer Agent | メールクライアント(Outlook Expressなど)から受け取ったメールを転送する | |||
MDA | Mail Delivery Agent | 届いたメールを適切なユーザーのメールボックスへ格納する | |||
MRA | Mail Retrieval Agent | メールクライアントへメールの取り出しを行う |
これに、Outlook ExpressなどのMUA(Mail User Agent)が加わって4つでメールシステムを表現する。しかし、実際にはMTA、MDA、MRAは1つのサーバーでまとめて設置されることもある。Jameseは、config.xmlでsmtpサーバと、popサーバーを兼ねることもできるけど、これを言っているのね。合点の承知の助。もちろん、JamesをMTA用とMRA用に分けて運用するのもconfig.xml次第。MUA、MTA、MRA間では、以下のプロトコルを通して通信が行われる。
これらのメールサーバーは上記で書いたように通常1つのサーバにMTA、MDA、MRAが配置されるが、社内用のメールサーバーと社外用のメールサーバーに分けて配置されることもあるがポイントは以下
- 社外向けメールサーバーがクラックされても、社内向けサーバーは無事になるように
- クラックされても無事なように、社外メールサーバーにはユーザのメールボックスは置かない
- 社外向けメールサーバーは、インターネット上へ向けやり取りされる。
- 社外向けメールサーバーは、MXサーバーと呼ばれることもある。(後述するMXレコード)
用語解説
SMTP
- Simple Transfer Protocolの略
- 送受信にはテキストベースのコマンドが使用される
- コマンドやレスポンスはCRLFで文字列終端を表現
- 通信ポートは25番ポート
- コマンドは4桁の文字列から成る
- レスポンスは3桁の数値である
- RFC821で定義
- 拡張仕様はRFC1651〜RFC1653
これらのSMTPを実装したSMTPサーバは、いわゆるMTA、MDAの機能を処理する。但し、SMTPサーバには認証の機能が無いため、転送の依頼があると、素直に転送してしまう。これがリレーと呼ばれるもので、スパムに利用される。
POP
- Post Office Protocolの略
- POP1,POP2とPOP3では互換性がない。現状よく使われるPOPはあえてPOP3と表記して区別することが多い
- RFC1725、RFC1734、RFC1939(RFC1725)で定義される
- SMTPと同じくテキストベースのコマンドが使用される
- 通信ポートは110番ポート
MUAから見た場合に、メールを送信する場合は、SMTP自体は認証の機能が無いことから、セキュリティ上問題がある。そのため、POP3自体は認証が必要なことを利用して、POP3で認証をしてからSMTPサーバーにメールの転送を依頼するという方法が取られる。(POP before SMTPと言う)