別記事でメール配送の仕組みを通じ、動作原理を理解することの重要性をお伝えしました。今回はメールの仕組みについて、もう少し細かいところを話してみようと思います。元々はシンプルなつくりだったメール配送システムが、現在はややこしいものになっている感があります。それを歴史的背景から紐解く事で、何が問題なのか、どういったアプローチをとったのか、というところを知る事でインターネット技術に少しでも興味をもってもらえたらと思い、記事にしてみました。単なる説明も多いので眠くなったらゴメンナサイ、ですが。エンジニアの方にはぜひご覧いただきたいです。別記事で書いた内容を、さらに機能ごとに分解して描いた図がこちらです。緑枠のアルファベット3文字は、メールの機能を一般的にこう呼んでいる、というところで書きましたが、正直ここまで詳しく覚えてもらう必要はありません。逆に、省略前の英単語は覚えてもらった方が理解は進むと思います。それでは、個別に説明をしていきます。左上の送信者が使うメーラーです。利用者を示すプログラムを意味します。メールを扱う利用者向けプログラム、と理解すると覚えやすいでしょう。一般的に言うメーラーですが。これも分解していくといくつかの機能に分けられます。ここでは「メールを送る」機能だとイメージしてください。メーラーがメールを送る時は、当たり前ではありますが相手が分からないといけません。その相手というのは、次に説明するMSA(送信サーバー)です。具体的には送信先メールサーバー名(ホスト名)ポート番号ログインIDログインパスワードこのような情報です。みなさん、メーラーをセットアップした事があれば思い当たるフシがあると思います。..送信受付と認証MUA(メーラー)から送られてきたメッセージを受け付けるのが、MSAです。いう名前が付けられました。受け付けるだけではなく、ログインIDとパスワードでアクセス認証も行っています。いった実装の一部分でもあり、歴史的経緯から言うと比較的最近実装された部分です。Blocking)MSAの前に「OP25B」と書いていますが、ここについて先に説明しましょう。Blocking)とは、プロバイダー側でプロバイダー外に行くTCP/25(SMTPプロトコル)の通信をブロックします、という意味で、メールの仕組み、特に歴史的背景から生まれた後付けの仕組みです。いうのは「外向けの」という意味ですが、ここではISPより外への通信を指します。SMTPプロトコル(メール送信に関する通信手順)のこと。ISP契約者が勝手に外に悪さをしないようTCP/25(SMTPプロトコル)をブロックしますよ、という意味です。直接メールを送る事もできました。SMTPプロトコルそのものには認証の仕組みはありません。誰でもメールを送る事ができます。いうことかというと、赤の他人が用意したSMTPサーバーを使う事が出来るという事です。Fromアドレスを詐称できてしまいます。転送をする、という処理を考えた時に、Fromという「誰が」という情報は不要だからです。送り主が誰か、という事を気にする必要がなく、いくらでもメールを送る事が出来るわけですから、これを利用しない手はありません。スパムメールや詐欺メールが横行するのも自然な成り行きです。いえ、メールの仕組みが出来た時はそんな事は起きていませんでした。~1990年までの話ですが。インターネットというのは一部の技術者や研究機関など限られた人たちが使うもので、またインターネットが多くの人の援助のもと成り立っている相互扶助の通信環境でしたから、お互い信頼関係のもと節度をわきまえて使われていたものです。それが一般人にも開放され、Windows95の登場で誰でもインターネットを使える時代になると(1995年~)、ずる賢い人も出てくるわけで、そういう人たちがスパムメールや詐欺メールを大量に発行し始めたのです。さあこれは困った..という事でOP25Bで身内(ISP利用者)が悪さをしないよう、外向けのTCP/25送信をブロックしよう!という話になりました。それじゃあ自分が契約しているISPのメールサーバーに、ISP外からアクセスできなくて困ります!そういう声がでますから、別の入口を作りましょう、となりPORT番号587をSMTPの新たな入口にしました。認証がないと元の木阿弥ですので、認証機能も入れた送信専用のプロトコルとしてサブミッションポートを使ったプロトコルが生まれました。いったアプリケーションの一部として実装されています。2007年あたりから普及した仕組みです。して認証を通過したメールだけが、いよいよメールシステムの核であるMTAに引き渡されるのです。..転送メールを送る本体部分、いわば核となる部分で、これを知る事がメールの基本機能を知る事と言っても過言でないでしょう。MUA(メーラー)から送られたメールのうちMSA(認証)を通過したものが、ここMTAに送られます。3のように、MTAから別のMTAを通じて送られる場合もあります。OP25Bで説明したとおり、TCP/25(SMTPプロトコル)で通信されますが、認証機能に問題がある..というか認証機能が無いため、Toアドレスが自身のものだけを受け取り、それ以外はreject(拒否する)ようにするなど設定されています。この設定を忘れてしまうと、スパムメールの発信元として知らず知らずのうちに踏み台にされている可能性がありますので、サーバー設定時は十分お気を付けください。ウェブサーバーを立ち上げる時にLinuxサーバーのセットアップをする人、又はAWSなどクラウドでサーバーを立ち上げて管理する人は少なくないと思います。LinuxにはMTA(sendmail等)が標準でインストールされます。アドレスが自身のドメイン以外を拒否するといった設定をする必要があります。最近の標準設定では上記2点は既に行われた状態で提供されるようなので、この事を知らない人もいるかと思いますが、下手にMTAの設定を触って踏み台にされないよう、最低限の知識として知っておいて下さい。MTAのコアとなる働きはこうです。1.送られてきたメールのTo(送り先メールアドレス)をみて、自身が受けとるメールかどうかを判断する2.自身が受け取るものであれば、続くMDAにデータを渡す(3ローカル配送と呼ばれる処理です)3.自身が受け取るもの以外(外部のメール)であれば、DNSを参照して転送先を調べ、送信ドメイン認証機能があれば行い、別のMTAにメールを転送をするこれがメールが全世界に配送できる基本的な仕組みです。これがメールはバケツリレー方式と呼ばれる所以です。DNSによる名前解決が一般的になってからは、外部ドメイン間のメールは直接やりとりされるようになりましたから、バケツリレー方式ではなくなっています。同一ドメインでアカウントが大量にありすぎてメールサーバーを分散させていたり、ウィルスチェックなど各種フィルタリングを行っているような環境で機能別にメールサーバーを構築している、などされている場合は、相変わらず次の転送先はどこ、というようにバケツリレー方式でメールを送るようになっています。3.の転送についてもうちょっと見ていきましょう。OP25Bで少し話しましたが、SMTPプロトコルではFromアドレスは仕組み上使いません。MSAで認証が通ったとしても、相変わらずFromアドレス(送信元)は未チェックのため、いくらでも送信元を詐称できてしまいます。この問題を解決するために、送信ドメイン認証、という仕組みが組み込まれるようになりました。その一つがSPFという方法です。送信ドメイン認証というのは、送信ドメインが本人かどうかをチェックするための仕組みです。SPFはその一つで、「Fromアドレス(ドメイン)は〇〇というメールサーバーから送られます」という情報を用いて認証を行います。〇〇というメールサーバーに当MTAが含まれていれば認証する、そうでなければ認証しない、というマークを転送するメールに付与する仕組みです。記載されていれば、送信ドメイン認証されたという事。以外は問題あり、と思ってください。このチェックを行うために必要となる情報は、DNSサーバーのTXTレコードに格納されています。–all”中身の説明はここではしませんが。ポイントは、DNSサーバーの情報を変更できるのは、そのドメインの所有者だけだという事。チェックを行うための情報が正しいと保証されるのです。他にも、DKIM、DMARCといった送信ドメイン認証もあります。こちらも話が長くなるのでここでは割愛しますが、このような送信ドメイン認証というのは、ここMTAで外部に転送する際に行われます。..ローカル配送MTAの働きとしてもう1つ重要なのは、自身が受け取るメールを自身のサーバーに保存する事です。自身が受け取るメールというのは、Toアドレスに含まれるドメイン(@より後ろの部分)が、MTA自身のドメインと一致するメールです。このようにして、自分が受け取る分はしっかり受け取って外部に転送させないようにします。しないと永遠にメールが世界中に転送され続ける事になりますので。自身が受け取るメールは、「ローカル配送」と言って、続くMDAによってメールボックスと呼ばれるファイルやデータベースに、ユーザー毎に格納されます。ここでいうユーザーとは、Toアドレスのうち@より前の部分で定義されたテキストで識別されます。ここでいうユーザーを定義したリストの実装例の1つです。ユーザーが登録されていない場合は、ユーザーが見つからないという理由で、メールを送り返します。Fromアドレスです(これは実装方式で動きが異なります)。返送と書いていますが、実際には元のメールを元に新たにメールを作成して、メールを配送する動きです。これもメールの特徴的な機能ですね。「返送」という機能ではなく、送信元に「新たにメールをする」というかたちで、メールの仕組みをシンプルに実装しています。Agent)という仕組みを経て、MUA(メーラー)に渡されます。MUA(メーラー)は冒頭で出てきた通り、OutlookやGmailなどのアプリケーションですが、それらアプリケーションから見ると「受信する先」がこのMRAになります。この受信する先とは、POP3サーバー、IMAPサーバーという名前で呼ばれているものです。受信メールサーバー名(ホスト名)ポート番号ログインIDログインパスワードこのような情報をメーラーに設定していると思いますが、これ届いたメールを受け取る窓口(MRA)なのです。渡し終えたメールは必要に応じメールボックスから削除しますが、これもMRAの役割です。MRAの実装としては、Dovecot、imapdといったものがあります。メールの機能に関するまとめメールというのは元々MTAに相当する部分から始まり、歴史的経緯から徐々にセキュリティに関する機能強化をされていった、というところがおぼろげにでも知っていただけたのではないかと思います。メールの機能というと、配送以外にメッセージのフォーマットをどう扱うか、といった面でも多くの進化がありましたが、それはまた別の機会にお話したいと思います。お問い合わせ、ご相談を受け付けております今回はどちらかというとエンジニア向けのお話になりました。当社はアプリケーション開発を主業務として行っており、インフラ面、ミドルウェアといったところを主体で受け持っているわけではありませんが、必要なスキルとして身につけていて、社内でも共有してスキルアップを心がけています。いう事を知っているのと知らないのとでは、開発時はもちろん保守や運用サポートを行う段階での提案や問題解決力は変わってきますからね。いうこともあり、関係値のあるエンジニアさんからもこのような相談をもらったりします。いうことで、エンジニアさんからのお問い合わせやご相談も随時お受けしてますから、お気軽にご相談下さい。「IT相談役」というサービスであればリーズナブルにご利用いただけると思います。サブスク型IT相談役サービスIT専門家が行う、サブスク型IT相談役サービス初回のお問い合わせやご相談は無料です。何か少しでも気になる事があれば、お気軽にお問い合わせください。このフィールドは空白のままにしてくださいメールマガジン「ビジネスお役立ち情報」のご案内あなたのビジネスに役に立つ情報は要りませんか?技術動向、マーケティング、AI、業務効率化、セキュリティ、法務、その他。エン・PCサービスならではの情報をお届けします。*登録解除はいつでも行えます。お気軽にご登録ください。受信ボックスか迷惑メールフォルダを確認して購読手続きを完了してください。株式会社エン・PCサービス。