www.mtkn.jp

Manuscripts for my personal webpage.
git clone https://git.mtkn.jp/www.mtkn.jp
Log | Files | Refs | README

commit ee567b206dd73dc19a939278a7d034ff6cfbb743
parent d62ce180644cf4421df44c23ec78c613acf00c6e
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Mon, 15 Jan 2024 15:47:41 +0900

update draft

Diffstat:
Mman/draft/mailserver.html | 128++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
Mpub/draft/mailserver.html | 71+++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------
Mpub/rss.xml | 4++--
3 files changed, 174 insertions(+), 29 deletions(-)

diff --git a/man/draft/mailserver.html b/man/draft/mailserver.html @@ -11,9 +11,9 @@ <h2>使うもの</h2> <ul> -<li>VPS: さくらのVPS</li> +<li>VPS: さくらのVPS (IPアドレスをsss.sss.sss.sssとする)</li> <li>OS: OpenBSD 7.4</li> -<li>ドメイン: ムームードメイン</li> +<li>ドメイン: ムームードメイン (mtkn.jpとする)</li> <li>SMTPサーバー(MTA): OpenSMTPD</li> <li>IMAPサーバー(MDA): Dovecot</li> </ul> @@ -42,10 +42,31 @@ SMTPサーバーは自分の管理しているユーザー宛のメールが届 <p> SMTPサーバーどうしが通信する際、スパムメールをフィルタリングする為、\ いくつかの方法で送信元の本人確認を行う。\ -その際第三者としてDNSが登場する。\ +その際第三者としてDNS及び、サーバーのIPアドレスを管理している人\ +(今回の場合はさくらインターネット)が登場する。\ +DNSにはドメインをIPアドレスにひもづける情報が登録できる。\ +またIPアドレスの管理人には、自分が借りているIPアドレスを、\ +自分のドメインにひもづける情報を登録してもらう。\ +これらによって、メールの送信者がドメイン、IPアドレス双方から\ +確認できるので、オレオレ詐欺を防止できる仕組みである。\ +</p> + +<p> +最近はgmail等の大手がスパム対策を強化する一環として、\ +以下に述べるような本人確認をすべてに通らないものは受信しない\ +ようにしている。\ </p> <h3>Aレコード、MXレコードによる送信先の特定</h3> +<p> +SMTPサーバーがメールを送信する際、まずは宛先のサーバーを\ +特定する必要がある。\ +この際に使用するのがDNSに登録されているMXレコードである。\ +送信元のSMTPサーバーはまずDNSに宛先のドメインのMXレコード\ +を問い合わせる。\ +するとメールの送信先のドメイン名が分かるので、続いて\ +この送信先のIPアドレスを問い合わせる:\ +</p> <pre> MTA (mtkn.jp sss.sss.sss.sss) DNS せやuser@example.comにメールしたろ。 @@ -54,15 +75,19 @@ MTA (mtkn.jp sss.sss.sss.sss) DNS 誰に送ったらええん? ----------------------------------------> - mai.example.comやで + mai.example.comやで(MXレコード) <---------------------------------------- mail.example.comってどこや? ----------------------------------------> - ddd.ddd.ddd.dddやで + ddd.ddd.ddd.dddやで(Aレコード) <---------------------------------------- </pre> +<p> +以上で宛先が特定できたので、次にこの宛先のSMTPサーバーとの\ +通信を開始する:\ +</p> <pre> MTA (mtkn.jp sss.sss.sss.sss) MTA (example.com ddd.ddd.ddd.ddd) こんちは。mtkn.jpです。 @@ -73,8 +98,22 @@ MTA (mtkn.jp sss.sss.sss.sss) MTA (example.com ddd.ddd.ddd.ddd) するからちょっとまってな。 <---------------------------------------- </pre> +<p> +しかし宛先のSMTPサーバー(example.com)は、\ +mtkn.jpを名乗るサーバーが本当にmtkn.jpかどうか確認する必要がある。\ +そうしないと、オレオレ詐欺のスパムメールが送り放題だからである。\ +</p> <h3>SPFレコードによる送信元の本人確認</h3> +<p> +宛先のMTAはまず、自分に連絡してきたサーバーが本人かどうかを\ +DNSに問い合わせる。\ +このときに使うのがSPFレコードである。\ +このレコードには自分のドメインからメールを送信してもいいIPアドレスを\ +指定できるので、宛先のMTAは送信元のIPアドレスと、このレコードに\ +記載されているIPアドレスを比べることで、送信元のMTAがドメインの所有者\ +に認められているMTAかどうか判断できる。\ +</p> <pre> DNS MTA (example.com ddd.ddd.ddd.ddd) mtkn.jpを名乗るやつから連絡 @@ -82,31 +121,47 @@ DNS MTA (example.com ddd.ddd.ddd.ddd) <---------------------------------------- IPアドレスがsss.sss.sss.sss - やったら多分本物やわ。 + やったら多分本物やわ。(SPFレコード) ----------------------------------------> よっしゃ </pre> <h3>PTRレコード</h3> +<p> +次は逆にIPアドレスからドメインを辿って本人確認する。\ +これに使われるのがDNSのPTRレコードである。\ +このレコードはIPアドレスの管理人(ここではさくらインターネット)\ +でないと登録できない。\ +しかし、IPアドレスを借りるにあたって、自分の名前やら住所やらを\ +提供しているので、PTRレコードをきちんと設定した上でスパムメールを\ +送ると、自分の身元がバレバレになるので、スパムの抑止に繋がる。\ +</p> <pre> -VPS管理会社 MTA (example.com ddd.ddd.ddd.ddd) +DNS MTA (example.com ddd.ddd.ddd.ddd) sss.sss.sss.sssってIPアドレスで - mtkn.jpってドメイン登録されてる? + mtkn.jpってドメイン登録されてる? <---------------------------------------- - されてるで。 + されてるで。(PTRレコード) ----------------------------------------> よっしゃ </pre> <h3>DKIM</h3> +<p> +送信側MTAが本人であることを証明するため、受信側に送るメールに署名する。\ +署名は公開鍵方式で行うが、この鍵をドメイン鍵というようである。\ +この署名が付いたメールがDKIM(DomainKey Identified Mail)である。\ +送信側はあらかじめDNSにドメイン鍵の公開鍵を登録しておき、\ +メール送信時に秘密鍵で署名する:\ +</p> <pre> MTA (mtkn.jp sss.sss.sss.sss) MTA (example.com ddd.ddd.ddd.ddd) 本人確認できたわ - おまたせ。 + おまたせ。 <---------------------------------------- userさんにメール送るで。 @@ -118,6 +173,9 @@ MTA (mtkn.jp sss.sss.sss.sss) MTA (example.com ddd.ddd.ddd.ddd) 署名付けて送るで。 ----------------------------------------> </pre> +<p> +受信側はDNSから送信側のドメイン鍵の公開鍵をダウンロードし、署名を確認する:\ +</p> <pre> DNS MTA (example.com ddd.ddd.ddd.ddd) mtkn.jpが署名付きでメール @@ -131,20 +189,68 @@ DNS MTA (example.com ddd.ddd.ddd.ddd) </pre> <h3>DMARCレコード(上記の本人確認で詐欺だと発覚した場合)</h3> +<p> +この他DNSにはDMARCレコードというものを登録することができる。\ +これは、以上の本人確認により送信側がにせものであることが確認できた際、\ +受信側にどのような行動を取ってほしいかを記述するものである。\ +これにより例えば、自分を名乗る詐欺師がメールをどこかに送信した場合、\ +受信したサーバーから自分宛てに通報するように頼める\ +(この頼みが聞き入れられるかどうかは多分MTAによる)。 +</p> <pre> DNS MTA (example.com ddd.ddd.ddd.ddd) mtkn.jpを名乗る詐欺師から メールきたんやけどどないしょ? <---------------------------------------- - ここに通報や。 + ここ(portmaster@mtkn.jp)に通報や。 + (DMARCレコード) ----------------------------------------> よっしゃ </pre> <h2>VPSの契約、ドメインの取得</h2> +<p> +VPSとドメインを契約する。\ +今回はVPSをさくらインターネットで、\ +ドメインをムームードメインでそれぞれ契約した。\ +さくらのVPSは好きなISOからOSをインストールでき、管理画面も分かりやすい\ +(他のVPSを知らないので比較はできないが)。\ +ムームードメインは安い。管理画面も悪くはない。\ +以前お名前.comでも借りたことがあるが、こちらは広告のメールが\ +やたら届いてうっとうしかった記憶がある。\ +</p> + <h2>OpenBSDのインストール</h2> +<p> +さくらのVPSにOpenBSDをインストールする。\ +さくらインターネットが用意したISOがあるので、\ +OS再インストールの画面からそれを選べばすぐにインストールが\ +開始できる。\ +でもなんとなく気持悪いのでopenbsd.orgから本家をダウンロードした。\ +</p> +<p> +インストールのこまかい手順は省略するが、\ +ひとつだけひっかかった点があるので書いておく。\ +インストール先のディスクをセットアップし、OSに必要なファイルを\ +インストールメディアからディスクにコピーすると以下のエラーがでて\ +カーネルパニックになった: +</p> +<pre><code>\ +wdc_atapi_start: not ready, st = 50 +fatal protection fault in supervisor mode +trap type 4 code 0 rip ffffffff810081a9 cs 8 rflags 10282 cr 2 23a896000 cpl 6 rsp ffff80000e9df410 +gsbase 0xffffffff81908ff0 kgsbase 0x0 +panic: trap type 4, code=0, pc=ffffffff810081a9 +syncing disks...18 18 18 18 18 18 18 18 +</code></pre> +<p> +原因はあまり調べていないが、どうもインストールメディアの読み込みに失敗している\ +ようで、インストールに必要なファイルをウェブ上からダウンロードする方法\ +を選択すると問題なくインストールできた。 +</p> + <h2>OpenSMTPDの設定<h2> <h2>SSLの設定</h2> <h2>Dovecotの設定</h2> diff --git a/pub/draft/mailserver.html b/pub/draft/mailserver.html @@ -31,30 +31,34 @@ <h2>使うもの</h2> <ul> -<li>VPS: さくらのVPS</li> +<li>VPS: さくらのVPS (IPアドレスをsss.sss.sss.sssとする)</li> <li>OS: OpenBSD 7.4</li> -<li>ドメイン: ムームードメイン</li> +<li>ドメイン: ムームードメイン (mtkn.jpとする)</li> <li>SMTPサーバー(MTA): OpenSMTPD</li> <li>IMAPサーバー(MDA): Dovecot</li> </ul> <h2>メールの仕組み</h2> <p> -メールの送受信にはSMTPというプロトコルが使われ、この通信を担うのがSMTPサーバーと呼ばれるソフトウェアである。SMTPサーバーは自分の管理しているユーザー宛のメールが届くと、所定の場所に保存する。手元のパソコンから自分宛のメールを読むには、SMTPサーバーが保存したこのメールをダウンロードする必要がある。このとき使われるのがIMAPというプロトコルである。他にPOPというプロトコルもあるが今回はIMAPを使う。</p> - -<p> -SMTPサーバーどうしが通信する際、スパムメールをフィルタリングする為、いくつかの方法で送信元の本人確認を行う。その際第三者としてDNSが登場する。 -、およそ以下の手順を踏む: -</p> +メールの送受信にはSMTPというプロトコルが使われ、この通信を担うのがSMTPサーバーと呼ばれるソフトウェアである。メールを書いてから相手に届くまではおよそ以下の手順を踏む:</p> <ol> <li>メールを書く。</li> <li>送信側のSMTPサーバーに送る。</li> <li>受信側のSMTPサーバーに送る。</li> <li>受信者が受信側のIMAPサーバーのメールを確認する。</li> </ol> +<p> +SMTPサーバーは自分の管理しているユーザー宛のメールが届くと、所定の場所に保存する。手元のパソコンから自分宛のメールを読むには、SMTPサーバーが保存したこのメールをダウンロードする必要がある。このとき使われるのがIMAPというプロトコルである。他にPOPというプロトコルもあるが今回はIMAPを使う。</p> +<p> +SMTPサーバーどうしが通信する際、スパムメールをフィルタリングする為、いくつかの方法で送信元の本人確認を行う。その際第三者としてDNS及び、サーバーのIPアドレスを管理している人(今回の場合はさくらインターネット)が登場する。DNSにはドメインをIPアドレスにひもづける情報が登録できる。またIPアドレスの管理人には、自分が借りているIPアドレスを、自分のドメインにひもづける情報を登録してもらう。これらによって、メールの送信者がドメイン、IPアドレス双方から確認できるので、オレオレ詐欺を防止できる仕組みである。</p> + +<p> +最近はgmail等の大手がスパム対策を強化する一環として、以下に述べるような本人確認をすべてに通らないものは受信しないようにしている。</p> <h3>Aレコード、MXレコードによる送信先の特定</h3> +<p> +SMTPサーバーがメールを送信する際、まずは宛先のサーバーを特定する必要がある。この際に使用するのがDNSに登録されているMXレコードである。送信元のSMTPサーバーはまずDNSに宛先のドメインのMXレコードを問い合わせる。するとメールの送信先のドメイン名が分かるので、続いてこの送信先のIPアドレスを問い合わせる:</p> <pre> MTA (mtkn.jp sss.sss.sss.sss) DNS せやuser@example.comにメールしたろ。 @@ -63,15 +67,17 @@ MTA (mtkn.jp sss.sss.sss.sss) DNS 誰に送ったらええん? ----------------------------------------> - mai.example.comやで + mai.example.comやで(MXレコード) <---------------------------------------- mail.example.comってどこや? ----------------------------------------> - ddd.ddd.ddd.dddやで + ddd.ddd.ddd.dddやで(Aレコード) <---------------------------------------- </pre> +<p> +以上で宛先が特定できたので、次にこの宛先のSMTPサーバーとの通信を開始する:</p> <pre> MTA (mtkn.jp sss.sss.sss.sss) MTA (example.com ddd.ddd.ddd.ddd) こんちは。mtkn.jpです。 @@ -82,8 +88,12 @@ MTA (mtkn.jp sss.sss.sss.sss) MTA (example.com ddd.ddd.ddd.ddd) するからちょっとまってな。 <---------------------------------------- </pre> +<p> +しかし宛先のSMTPサーバー(example.com)は、mtkn.jpを名乗るサーバーが本当にmtkn.jpかどうか確認する必要がある。そうしないと、オレオレ詐欺のスパムメールが送り放題だからである。</p> <h3>SPFレコードによる送信元の本人確認</h3> +<p> +宛先のMTAはまず、自分に連絡してきたサーバーが本人かどうかをDNSに問い合わせる。このときに使うのがSPFレコードである。このレコードには自分のドメインからメールを送信してもいいIPアドレスを指定できるので、宛先のMTAは送信元のIPアドレスと、このレコードに記載されているIPアドレスを比べることで、送信元のMTAがドメインの所有者に認められているMTAかどうか判断できる。</p> <pre> DNS MTA (example.com ddd.ddd.ddd.ddd) mtkn.jpを名乗るやつから連絡 @@ -91,31 +101,35 @@ DNS MTA (example.com ddd.ddd.ddd.ddd) <---------------------------------------- IPアドレスがsss.sss.sss.sss - やったら多分本物やわ。 + やったら多分本物やわ。(SPFレコード) ----------------------------------------> よっしゃ </pre> <h3>PTRレコード</h3> +<p> +次は逆にIPアドレスからドメインを辿って本人確認する。これに使われるのがDNSのPTRレコードである。このレコードはIPアドレスの管理人(ここではさくらインターネット)でないと登録できない。しかし、IPアドレスを借りるにあたって、自分の名前やら住所やらを提供しているので、PTRレコードをきちんと設定した上でスパムメールを送ると、自分の身元がバレバレになるので、スパムの抑止に繋がる。</p> <pre> -VPS管理会社 MTA (example.com ddd.ddd.ddd.ddd) +DNS MTA (example.com ddd.ddd.ddd.ddd) sss.sss.sss.sssってIPアドレスで - mtkn.jpってドメイン登録されてる? + mtkn.jpってドメイン登録されてる? <---------------------------------------- - されてるで。 + されてるで。(PTRレコード) ----------------------------------------> よっしゃ </pre> <h3>DKIM</h3> +<p> +送信側MTAが本人であることを証明するため、受信側に送るメールに署名する。署名は公開鍵方式で行うが、この鍵をドメイン鍵というようである。この署名が付いたメールがDKIM(DomainKey Identified Mail)である。送信側はあらかじめDNSにドメイン鍵の公開鍵を登録しておき、メール送信時に秘密鍵で署名する:</p> <pre> MTA (mtkn.jp sss.sss.sss.sss) MTA (example.com ddd.ddd.ddd.ddd) 本人確認できたわ - おまたせ。 + おまたせ。 <---------------------------------------- userさんにメール送るで。 @@ -127,6 +141,8 @@ MTA (mtkn.jp sss.sss.sss.sss) MTA (example.com ddd.ddd.ddd.ddd) 署名付けて送るで。 ----------------------------------------> </pre> +<p> +受信側はDNSから送信側のドメイン鍵の公開鍵をダウンロードし、署名を確認する:</p> <pre> DNS MTA (example.com ddd.ddd.ddd.ddd) mtkn.jpが署名付きでメール @@ -140,20 +156,43 @@ DNS MTA (example.com ddd.ddd.ddd.ddd) </pre> <h3>DMARCレコード(上記の本人確認で詐欺だと発覚した場合)</h3> +<p> +この他DNSにはDMARCレコードというものを登録することができる。これは、以上の本人確認により送信側がにせものであることが確認できた際、受信側にどのような行動を取ってほしいかを記述するものである。これにより例えば、自分を名乗る詐欺師がメールをどこかに送信した場合、受信したサーバーから自分宛てに通報するように頼める(この頼みが聞き入れられるかどうかは多分MTAによる)。 +</p> <pre> DNS MTA (example.com ddd.ddd.ddd.ddd) mtkn.jpを名乗る詐欺師から メールきたんやけどどないしょ? <---------------------------------------- - ここに通報や。 + ここ(portmaster@mtkn.jp)に通報や。 + (DMARCレコード) ----------------------------------------> よっしゃ </pre> <h2>VPSの契約、ドメインの取得</h2> +<p> +VPSとドメインを契約する。今回はVPSをさくらインターネットで、ドメインをムームードメインでそれぞれ契約した。さくらのVPSは好きなISOからOSをインストールでき、管理画面も分かりやすい(他のVPSを知らないので比較はできないが)。ムームードメインは安い。管理画面も悪くはない。以前お名前.comでも借りたことがあるが、こちらは広告のメールがやたら届いてうっとうしかった記憶がある。</p> + <h2>OpenBSDのインストール</h2> +<p> +さくらのVPSにOpenBSDをインストールする。さくらインターネットが用意したISOがあるので、OS再インストールの画面からそれを選べばすぐにインストールが開始できる。でもなんとなく気持悪いのでopenbsd.orgから本家をダウンロードした。</p> +<p> +インストールのこまかい手順は省略するが、ひとつだけひっかかった点があるので書いておく。インストール先のディスクをセットアップし、OSに必要なファイルをインストールメディアからディスクにコピーすると以下のエラーがでてカーネルパニックになった: +</p> +<pre><code>wdc_atapi_start: not ready, st = 50 +fatal protection fault in supervisor mode +trap type 4 code 0 rip ffffffff810081a9 cs 8 rflags 10282 cr 2 23a896000 cpl 6 rsp ffff80000e9df410 +gsbase 0xffffffff81908ff0 kgsbase 0x0 +panic: trap type 4, code=0, pc=ffffffff810081a9 +syncing disks...18 18 18 18 18 18 18 18 +</code></pre> +<p> +原因はあまり調べていないが、どうもインストールメディアの読み込みに失敗しているようで、インストールに必要なファイルをウェブ上からダウンロードする方法を選択すると問題なくインストールできた。 +</p> + <h2>OpenSMTPDの設定<h2> <h2>SSLの設定</h2> <h2>Dovecotの設定</h2> diff --git a/pub/rss.xml b/pub/rss.xml @@ -5,8 +5,8 @@ <description>ウェブページの更新履歴</description> <language>ja-jp</language> <link>https://www.mtkn.jp</link> -<lastBuildDate>Sat, 13 Jan 2024 19:48:02 +0900</lastBuildDate> -<pubDate>Sat, 13 Jan 2024 19:48:02 +0900</pubDate> +<lastBuildDate>Mon, 15 Jan 2024 15:47:30 +0900</lastBuildDate> +<pubDate>Mon, 15 Jan 2024 15:47:30 +0900</pubDate> <docs>https://www.rssboard.org/rss-specification</docs> <item> <title>使用しているハードウェア、ソフトウェア</title>