普段の仕事で重要情報をやりとりしているのはメールサーバ
最近ではSlackなどメール以外ので社内のやりとりを行う企業も増えつつありますが、社外への重要情報をやりとりはメールであることは多いのではないでしょうか。インシデントの遭遇頻度で
言えば、Web関連と十分に勝負できるレベルにも関わらず、Webサーバに比べたメールサーバの知識は随分と解離があるように思います。
皆さんはいかがでしょう。普段何気なく使っていて重要な情報をやりとりしているメールですがメールサーバを含めて知識は自信があるでしょうか。インシデントが発生した時どんな情報があればいいか。メールヘッダやログを見て状況の説明やリスクを理解できるでしょうか。
メールサーバ基礎知識チェック
まずは基礎知識をチェックしてみましょう。
メールをLinuxコマンドで送れる?
はい送れます。素直にmailというコマンドです。
$mail info@at-virtual.net -s タイトル
一般にメールサーバは1つのサーバで成立する?
いいえ、通常メールの送信と配送を行うサーバとユーザーがメールを受信するための機能を提供するサーバの2つをあわせてメールサーバと呼んでいます。
POP と IMAP の違いはメールダウンロード時にメールがサーバから消えるかそうでないかの違い?
いいえ、POP はダウンロード時にメールサーバのメールを消さない設定が可能です。また、IMAP でもダウンロード時にメールを削除する設定も可能です。
IMAP にはディレクトリ操作するコマンドが存在しその点がPOPと異なります。
Webメールとはメーラ(MUA:Mail User Agent)にWebブラウザを利用したサービス?
はい、Webメールを利用する場合は、原則メールデータの管理やMUAの設定などはすべてサーバ上で行われます。
メールのヘッダの読み方、メールヘッダの翻訳の仕方
メールヘッダをスラスラ読むに便利なように翻訳を載せてみました。
Return-Path :A
→メールが届かなかった場合Aにメールを返します。(メール配信エラーの際の差し戻し先)
Received: from A by B →AからBへという経路を通りました。
X-Mailer:Microsoft Outlook Express for Macintosh
→メールクライアントのソフトウェア名はMicrosoft Outlook Express for Macintoshです。
MIME-Version: Version1.0
→メールクライアントはMINE (Multipurpose Internet Mail Extention)に対応しています。
Content-Type: text/plain
→メールの形式はテキスト形式です。
Message-Id: XXXX
→メールの個別の認識番号はXXXXです。当該のメールを検索する際に役に立ちます。
Received: from アドレスA (アドレスB [XXX.XXX.XXX.XXX])
→アドレスAは自己申告、アドレスBはサーバが確認したアドレスです。ここが不一致の場合は偽装されている可能性があります。
Content-Transfer-Encoding:Base64
→MIME(BASE64)でバイナリーをASCIIテキストに変換しています。
References:XXXX
→XXXXを参照しました。
Date XXXX
→メールの作成日はXXXXです。
Disposition-Notification-To:XXXX
→開封通知先はXXXXです。
X-UIDL:XXXX
→POPサーバ利用時の識別しはXXXXです。
DKIM-Signature:ハッシュなど→DKIMを利用しています。問い合わせに必要な情報は○○です。
インシデント調査では、Receivedの不一致は偽装を疑う
インシデント調査では、Received: fromの不一致があれば[XXX.XXX.XXX.XXX]部分のアドレスをWHOIS等調査します。
メールヘッダの確認方法
Outlook Expressは右クリックした際のコンテキストメニューから「プロパティ>詳細」を選択します。
Thunderbirdでは「表示メニュー>ヘッダ>すべて」を選択します。
Gmailでは右上の下向き矢印のアイコンをクリックして「メッセージのソースを表示」を選択します。表示されたページの下にある「クリップボードにコピー」をクリックすると取得できます。
メールの送信から受信まで
メールが送信されてから受信されるまでの基本的な流れを確認しましょう。
GmailやOutlookといったメーラ(MUA:Mail User Agent)でユーザがメールを作成する
MUA:Mail User AgentとしてMicrosoft OutlookやMozilla Thunderbirdといったメールクライアントソフトウェアが多く利用されています。メールの作成のユーザインターフェースを提供し、メール作成に関する補助と端末に保存されたメールデータの操作や設定などの機能を提供しています。
GmailやOutlookといったメーラ(MUA:Mail User Agent)の接続設定に基づきメールサーバ(MTA:Mail Transfer Agent)に接続を要求
メーラ(MUA:Mail User Agent)はメールサーバ(MTA:Mail Transfer Agent)のMicrosoft ExchangeやPostfixなどにメーラ(MUA:Mail User Agent)に設定された接続情報を送信します。
メールサーバ(MTA:Mail Transfer Agent)に接続すると、まずはメールサーバ(MTA:Mail Transfer Agent)がSMTPを受け入れることを表すグリーティングを返す
接続確立後、ESMTPメッセージでESMTPつまりSMTPの拡張版が利用できるか応答しつつ、以下のように環境とソフトウェアの情報を返答します。
220 smtp.example.com ESMTP Postfix (Ubuntu)
メールクライアントは、メールサーバのグリーティングに対して挨拶 EHLO (Extended HELLO) を返す。(RFC 821の頃はHELO (HELLO) コマンド)
ESMTPが来たときはEHLOを返し、そうでない時はHELOを返し応答します。ここでSMTPセッションが開始となります。
EHLO client.example.com (またはIPアドレス)
SMTPサーバはユーザがメーラ(MUA:Mail User Agent)から送信したメールを受け取る
受け取りの際にメールアドレスの@以降を読み取り送信者と送信相手のドメインを確認する。同じ場合はこの時点で通信を終了する。異なる場合は次のステップに進みます。
SMTPサーバは宛先のメールアドレスの情報で送信先のMTAを割り出すためDNSサーバに問い合わせる
DNSサーバはSMTPサーバに要求された宛先のメールアドレスの@以降のドメイン名から相手先のIPアドレスを割り出し、MXレコードの問合わせます。その結果をSMTPサーバに返答します。
SMTPサーバはDNSサーバの返答を元に送信先のMTAにメールデータを転送する
エンベロープ上のメールの送信者を指定し、エンベロープ上のメールの受信者を指定します
MAIL FROM 送信者のアドレス
RCPT TO 受信者のアドレス
次にメールのデータをセットします。
DATA
接続を終了します。
354 End data with .
QUIT
221 2.0.0 Bye
サーバ内で MDA (メール配送エージェント)によって適切な場所(メールボックス)に保存される
受信者側のメールボックスに届きます。設定に応じ通知を出します。
サーバはクライアントからの受信要求を待つ
受信者が MRA (メール取得エージェント)に要求を出しメーラ(MUA:Mail User Agent)にメールデータを取得する
メールを一覧から選択し、メールデータをメールクライアント上で整形し表示します。メーラ起動時、定期更新、手動更新によるメールデータの更新が必要な場合があります。
メールのセキュリティ
SPFとDKIM
SPF:Envelope-Fromのドメイン認証をします。Header-Fromを参照するケースもあります。
SPFでは、認証情報としてIPアドレスを利用します。具体的には、DNSサーバからSPFレコードを取得し、送信元メールサーバのIPアドレスと一致するかどうかを確認します。
一方、DKIM:Header-Fromのドメインの電子署名ベースの認証をします
DKIMでは電子署名を使って認証を行います。具体的には、送信側メールサーバの公開鍵をあらかじめDNSサーバに登録しておき、MTAで送信する際電子署名を取得し自身の秘密鍵による電子署名を付けてメールを送信、受信側ではメールヘッダからDKIM-Signatureヘッダを読み取り、DNSサーバに問い合わせます。取得した公開鍵とヘッダ記載のハッシュ値を比較し検証します。
以上です。参考になりましたら幸いです。