Top過去ログ目次掲示板

作成日:2008年03月27日 作成:おやじ
掲示板で過去に質問された内容です。

No.7513 SSL/TLSについて・・・


No.7513 投稿時間:2008年03月27日(Thu) 07:18 投稿者名:すげま URL:
タイトル:SSL/TLSについて・・・

サーバーマシンの移転に伴って、セキュリティの向上を考え、おやじ様のページでもいろいろと勉強させていただいております。

まず、環境としては
・マルチドメインを1つの固定IPで運用
・Windowsベースで、ウェブ、メール、FTPサーバーを立てる
ということで、現在は、XAMPP標準のApache2+Mercury+Filezillaでローカル環境で設定&テストをしております。

さて、本題のSSLなのですが、ウェブについては、STONE+OPENSSLでSNIというのを使うことでマルチドメインに対応できそうだ、という構想を描いて居りますが、メールに関して、少し問題がありそうなのです。

まず、メールのマルチドメイン&マルチメールボックスとして、MercuryのCoreモジュール設定のローカルドメインに使用するドメインを登録した上で、ユーザー設定に
user@domain1-com
user@domain2-com
を作成し、それぞれへのエイリアスとして
user@domain1.comをuser@domain1-comへ
user@domain2.comをuser@domain2-comへ
(Mercuryのユーザー名設定は、@を含むのは許可されても@以降に.が含まれるのが許可されない様子です)
これで、マルチドメインで、同一ユーザー名でも別のメールボックスを確保できるようなのを確認しています。

この環境で、STUNNELをインストールし、domain1.comの証明書と秘密鍵を登録したところ、ローカルでPOP3 over SSLで接続できるのを確認しました。

ですが、よくよく考えてみると、このままではdomain2.comにPOP3 over SSLをしようとしたら、ドメイン名が不一致でエラーになると思うのですが、、、これをポートを変えるなどで別の証明書を使用するようにする方法はあるのでしょうか…(疑問1)

POP3のように、クライアント側からの接続であれば、クライアント設定をdomain1.comに統一してしまっても問題ないので、それで解決できるのですが、まだ、問題がありました。

もうひとつ、問題は、SMTPのSTART.TLSです。Mecuryでは、自己証明書を作成できますが、ここでは、domain1.comを指定しています。START.TLSは、外部のSMTPサーバーからの接続時に使用されることがあるようなので、もし、user@domain1.com宛のメールとして外部から送信されたなら、START.TLSでも問題なく受けられそうですが、user@domain2.com宛のメールは、エラーになりませんか?このような事態を回避することはできるのでしょうか?…(疑問2)

また、SMTP over SSLを使用できるようにしているときで、START.TLSを向こうにしている場合、外部のSMTPは25番ポートに平文で通信するという保証はあるのでしょうか?そうであれば、SMTP over SSLだけを有効にして、というのを考えているのですが。。。

ちなみに、現行のサーバー(xmailを使用)で、以前Niftyにメールが送信できなくなり、このとき、Niftyからの説明でSTART.TLSの設定が悪いので、これを設定しなおすか、無効にするように、ということで、無効にするようにしたのですが…いまだに、この原因がよく分かっていません。。。自分から相手に送信するとき、START.TLSに対応していたとして、Niftyから証明書が送られるのだと思いますが…Xmailの設定が悪くて、送信ができなくなるというのは、どういうことだったのか?いまだによく分かっていないのです…(疑問3)

あと、MercuryのGrayWallに相当する「メールが送られてくると1回目は受信せず拒否(コード:451)し、リトライしてきた2回目のメールを受け取る」という処置ですが、Mercuryから自分が送信する場合には、相手側がこの拒否をした場合でも、自動的にリトライしてくれるのでしょうか?このあたりの設定は、どこかにあるのでしょうか?…(疑問4)

メールサーバーは、いかんせんまともに動いていない場合に、とても困ったことになるので、、、なんか、難しすぎて少しあきらめたくなってきてしまったりする今日この頃・・・でも、がんばろう!と思ったりしています。

質問だらけになってしまいましたが、ご教授いただければ幸いです。


No.7514 投稿時間:2008年03月27日(Thu) 21:33 投稿者名:おやじ URL:
タイトル:誤解があるようです。

> まず、メールのマルチドメイン&マルチメールボックスとして、MercuryのCoreモジュール設定のローカルドメインに使用するドメインを登録した上で、ユーザー設定に
> user@domain1-com
> user@domain2-com
> を作成し、それぞれへのエイリアスとして
> user@domain1.comをuser@domain1-comへ
> user@domain2.comをuser@domain2-comへ
> (Mercuryのユーザー名設定は、@を含むのは許可されても@以降に.が含まれるのが許可されない様子です)

下記のとおりで、ここで設定するのはユーザ名でありメールアドレスではありません。正常な動作です。

> これで、マルチドメインで、同一ユーザー名でも別のメールボックスを確保できるようなのを確認しています。

面白いことを考えましたね。このあたりは、No.7326のスレを見てもらえれば分かります。MercuryはArgo型なので、ユーザでしかメールボックスを管理していないので同一ユーザ名でドメインが異なっても異なるメールボックスは持てません。従って、上記の設定では、user@domain1-com及びuser@domain2-comというユーザを作成したことになります。XMailならuser@domain1.comとuser@domain2.comは全く別のメールボックスになるのでこうはなりません。

> この環境で、STUNNELをインストールし、domain1.comの証明書と秘密鍵を登録したところ、ローカルでPOP3 over SSLで接続できるのを確認しました。
>
> ですが、よくよく考えてみると、このままではdomain2.comにPOP3 over SSLをしようとしたら、ドメイン名が不一致でエラーになると思うのですが、、、これをポートを変えるなどで別の証明書を使用するようにする方法はあるのでしょうか…(疑問1)

いくつか勘違いあるようです。POP3でアクセスするのはユーザ名なので、この例ではuser@domain1-comとuser@domain2-comです。user@domain1.comやuser@domain2.comではありません。また、SSLで認証するのはメールアドレスのドメインではなく、サーバ名です。従って、サーバ名がdomain1.comであるならdomain1.comで作成した証明書を使い、クライアントのサーバ設定は、メールアドレスのドメインに関係なくpop3/smtpサーバとしてはdomain1.comとします。domain1.comというサーバが2つのドメインを扱っているという考え方です。SSLを使用するなら、メールのアクセスにはサーバ名としてdomain2.comは使輪内容にすべきです。

>
> POP3のように、クライアント側からの接続であれば、クライアント設定をdomain1.comに統一してしまっても問題ないので、それで解決できるのですが、まだ、問題がありました。

設定しているのがサーバ名なので、これが正しい考え方です。

> もうひとつ、問題は、SMTPのSTART.TLSです。Mecuryでは、自己証明書を作成できますが、ここでは、domain1.comを指定しています。START.TLSは、外部のSMTPサーバーからの接続時に使用されることがあるようなので、もし、user@domain1.com宛のメールとして外部から送信されたなら、START.TLSでも問題なく受けられそうですが、user@domain2.com宛のメールは、エラーになりませんか?このような事態を回避することはできるのでしょうか?…(疑問2)

クライアントなら左記のとおり使用するサーバをdomain1.comとします。他のSMTPサーバなら単純にSSLなしで繋がってくるので何も問題ありません。

> また、SMTP over SSLを使用できるようにしているときで、START.TLSを向こうにしている場合、外部のSMTPは25番ポートに平文で通信するという保証はあるのでしょうか?そうであれば、SMTP over SSLだけを有効にして、というのを考えているのですが。。。

今一、「SMTP over SSLだけを有効にして」という意味がわからないのですが・・・。25番ポートは他のSMTPサーバからのメール配送を受けるためにも必須です。意図的に設定したsmtpサーバはstartsslで接続をトライしてくることがありますが、一般的にはstarttlsはクライアント用と考えてください。SMTP over SSLはクライアント用として無難な選択肢と思います。

> ちなみに、現行のサーバー(xmailを使用)で、以前Niftyにメールが送信できなくなり、このとき、Niftyからの説明でSTART.TLSの設定が悪いので、これを設定しなおすか、無効にするように、ということで、無効にするようにしたのですが…いまだに、この原因がよく分かっていません。。。自分から相手に送信するとき、START.TLSに対応していたとして、Niftyから証明書が送られるのだと思いますが…Xmailの設定が悪くて、送信ができなくなるというのは、どういうことだったのか?いまだによく分かっていないのです…(疑問3)

これも意味がよく分かりませんが、XMailのクライアント側でstarttlsを有効にしたのですか? あまり意味がないと思いますが・・。

> あと、MercuryのGrayWallに相当する「メールが送られてくると1回目は受信せず拒否(コード:451)し、リトライしてきた2回目のメールを受け取る」という処置ですが、Mercuryから自分が送信する場合には、相手側がこの拒否をした場合でも、自動的にリトライしてくれるのでしょうか?このあたりの設定は、どこかにあるのでしょうか?…(疑問4)

相手=自分でもあるわけですが、一般的にちゃんとしたSMTPサーバならリトライします。(例外がありますが・・・。これが厄介) spamは大量に流すため、ある時間を置いてはリトライしてこないという性質を利用したのがGreylistの仕組みです。Mercuryはコアモジュールのメールキューの中にリトライの最小期間がありデフォルトで30分になっており、デフォルトで問題ありません。


No.7515 投稿時間:2008年03月27日(Thu) 22:44 投稿者名:すげま URL:
タイトル:Re: 誤解があるようです。

おやじ様、早速のお返事ありがとうございます。
(長文のため、引用一部削除などしました。ご了承ください。)

> > を作成し、それぞれへのエイリアスとして
> > user@domain1.comをuser@domain1-comへ
> > user@domain2.comをuser@domain2-comへ
> > (Mercuryのユーザー名設定は、@を含むのは許可されても@以降に.が含まれるのが許可されない様子です)
>
> 下記のとおりで、ここで設定するのはユーザ名でありメールアドレスではありません。正常な動作です。
>
> > これで、マルチドメインで、同一ユーザー名でも別のメールボックスを確保できるようなのを確認しています。
>
> 面白いことを考えましたね。このあたりは、No.7326のスレを見てもらえれば分かります。MercuryはArgo型なので、ユーザでしかメールボックスを管理していないので同一ユーザ名でドメインが異なっても異なるメールボックスは持てません。従って、上記の設定では、user@domain1-com及びuser@domain2-comというユーザを作成したことになります。XMailならuser@domain1.comとuser@domain2.comは全く別のメールボックスになるのでこうはなりません。


この件に関しては、少し訂正させてください。。。
Mercuryでユーザー名を用意した上で、エイリアスを設定して、同一ユーザー名でドメインが異なる場合に別のメールボックスを用意できる(擬似的に?)のは、確認済みです。その上で、ユーザー名に@を含んだものを設定できないかと思い、試していたのですが、設定すること自体は可能なのですが、どうやらうまく動いてはいなかったようです。従って、上記の例では、いまのところ
user--domain1-com
user--domain2-com
というユーザーを作成するほかないようです。その上で、エイリアスとしてそれぞれをuser@domain1.comとuser@domain2.comに割り当てることで(擬似的なのかもしれませんが)、別ドメインで同一ユーザー名を、別々のメールボックスに割り当てることができるのは、ローカル上ですが再確認しました。


> > STUNNELをインストールし、domain1.comの証明書と秘密鍵を登録したところ、ローカルでPOP3 over SSLで接続できるのを確認しました。
> >
> > このままではdomain2.comにPOP3 over SSLをしようとしたら、ドメイン名が不一致でエラーになると思うのですが、、、これをポートを変えるなどで別の証明書を使用するようにする方法はあるのでしょうか…(疑問1)
>
> SSLで認証するのはメールアドレスのドメインではなく、サーバ名です。従って、サーバ名がdomain1.comであるならdomain1.comで作成した証明書を使い、クライアントのサーバ設定は、メールアドレスのドメインに関係なくpop3/smtpサーバとしてはdomain1.comとします。domain1.comというサーバが2つのドメインを扱っているという考え方です。SSLを使用するなら、メールのアクセスにはサーバ名としてdomain2.comは使わないようにすべきです。

なるほど・・・というか、やはりサーバー名としてdomain2.comを使用しないほかないのでしょうか?
クライアントからのアクセスなので、ポート番号を別に振り分け、そちらで別にSTONEなどを咬ませることで・・・あるいは、STUNNELが多重起動できるのであれば、それも、、とか、考えてみたのですが、、理論上はできそうな気もするのですが、いかがなものでしょう、というのが趣旨だったのです。


そして、ここからは、他のSMTPサーバーとの通信に関する疑問です。「試してみれば?」というのもありかと思いましたが、いかんせん、五万とあるSMTPサーバーで、相手方の設定によって、うまくいったりいかなかったり、というのでは困りますし、実際に運用してから「届いてないの?」と言われたり「送信できないよ」と言われたりしてから右往左往するのも嫌なので、できるだけ理解して、安心しておきたい、と思った次第です。。。で、

> > もうひとつ、問題は、SMTPのSTART.TLSです。Mecuryでは、自己証明書を作成できますが、ここでは、domain1.comを指定しています。START.TLSは、外部のSMTPサーバーからの接続時に使用されることがあるようなので、もし、user@domain1.com宛のメールとして外部から送信されたなら、START.TLSでも問題なく受けられそうですが、user@domain2.com宛のメールは、エラーになりませんか?このような事態を回避することはできるのでしょうか?…(疑問2)
>
> クライアントなら左記のとおり使用するサーバをdomain1.comとします。他のSMTPサーバなら単純にSSLなしで繋がってくるので何も問題ありません。

これなのですが、他のSMTPからuser@domain2.com宛にメールが送られたとき、他のSMTPサーバーは、domain2.comを指定して接続しようとするので間違いないかと思っています。そのとき、START.TLSに対応していますよ、と私の側のサーバーが返答するわけですから、相手方はSTART.TLSで繋ごうとしても文句を言えない??でも、実際にSTART.TLSをしようとすると、証明書のドメインが不一致になる。ここで、相手方が「信用できないサーバーには送らない」という設定になっていたとしたら、メールが届かない、ということにならないか、という心配をしています。


> > また、SMTP over SSLを使用できるようにしているときで、START.TLSを向こうにしている場合、外部のSMTPは25番ポートに平文で通信するという保証はあるのでしょうか?そうであれば、SMTP over SSLだけを有効にして、というのを考えているのですが。。。
>
> 今一、「SMTP over SSLだけを有効にして」という意味がわからないのですが・・・。25番ポートは他のSMTPサーバからのメール配送を受けるためにも必須です。意図的に設定したsmtpサーバはstartsslで接続をトライしてくることがありますが、一般的にはstarttlsはクライアント用と考えてください。SMTP over SSLはクライアント用として無難な選択肢と思います。

もちろん、25番ポートは、他のSMTPサーバー用に、「START.TLSなしで」開放して、という意味です。
先に書いた心配事から、もしマルチドメインでSTART.TLSを有効にするのが好ましくない、というのであれば、クライアント用には、SMTP over SSLを使って、START.TLSはなしで、ということを考えたのです。

その上で、「意図的に設定された外部のSMTPサーバー」が、25番ポートではなく、SMTP over SSLを使って、465番ポートとかに接続を試みてくることはないのか、という質問だったのですが。。。もちろん、そんなSMTPサーバーは無視しろ、というのもありかと思いましたが、ルール上、それは許されているのか、どうか、と思いまして・・・


> > ちなみに、現行のサーバー(xmailを使用)で、以前Niftyにメールが送信できなくなり、このとき、Niftyからの説明でSTART.TLSの設定が悪いので、これを設定しなおすか、無効にするように、ということで、無効にするようにしたのですが…いまだに、この原因がよく分かっていません。。。自分から相手に送信するとき、START.TLSに対応していたとして、Niftyから証明書が送られるのだと思いますが…Xmailの設定が悪くて、送信ができなくなるというのは、どういうことだったのか?いまだによく分かっていないのです…(疑問3)
>
> これも意味がよく分かりませんが、XMailのクライアント側でstarttlsを有効にしたのですか? あまり意味がないと思いますが・・。

恥ずかしながら、このときの状況はよく記憶にないのです。XMailのバージョンアップでSTART.TLSが加わったことを知らずに、設定を放置してあったのが原因のようで、Niftyとのメールの送受信がうまくいかなくなっていたので、調べてもらったところ、START.TLSを適正に設定するか、無効にしてください、と言われ、、そのとき、わからぬままにとにかく、START.TLSと名のつく設定を全て無効にして解決しました。ただ、いま考えて、何が原因だったのか、、と思っていますが。

この経験を踏まえて、サーバーマシンの移動をするのに伴って、移行後のマシンで十分にローカルのテストをする時間もあるので、ゆっくりと勉強しながら、確実な設定をしたい、と思っている次第です。その上で、SSLなどで安全に運用できるように、と思ったのですが、過去の経験から、かなり恐々とやっているところです。



> > あと、MercuryのGrayWallに相当する「メールが送られてくると1回目は受信せず拒否(コード:451)し、リトライしてきた2回目のメールを受け取る」という処置ですが、Mercuryから自分が送信する場合には、相手側がこの拒否をした場合でも、自動的にリトライしてくれるのでしょうか?このあたりの設定は、どこかにあるのでしょうか?…(疑問4)
>
> 相手=自分でもあるわけですが、一般的にちゃんとしたSMTPサーバならリトライします。(例外がありますが・・・。これが厄介) spamは大量に流すため、ある時間を置いてはリトライしてこないという性質を利用したのがGreylistの仕組みです。Mercuryはコアモジュールのメールキューの中にリトライの最小期間がありデフォルトで30分になっており、デフォルトで問題ありません。

「キュープロセス制御」というところですね、なるほど。ありがとうございます。


No.7516 投稿時間:2008年03月28日(Fri) 06:39 投稿者名:おやじ URL:
タイトル:普通にDNSを触ればすむことです。

> この件に関しては、少し訂正させてください。。。
> Mercuryでユーザー名を用意した上で、エイリアスを設定して、同一ユーザー名でドメインが異なる場合に別のメールボックスを用意できる(擬似的に?)のは、確認済みです。その上で、ユーザー名に@を含んだものを設定できないかと思い、試していたのですが、設定すること自体は可能なのですが、どうやらうまく動いてはいなかったようです。従って、上記の例では、いまのところ
> user--domain1-com
> user--domain2-com
> というユーザーを作成するほかないようです。その上で、エイリアスとしてそれぞれをuser@domain1.comとuser@domain2.comに割り当てることで(擬似的なのかもしれませんが)、別ドメインで同一ユーザー名を、別々のメールボックスに割り当てることができるのは、ローカル上ですが再確認しました。

すげまさんは表面から見た話をされており、おやじは中のことを言っているだけです。同じユーザ名(フォルダ名)は持てないし、POP3でアクセスできるのはユーザ名(フォルダ名)なのでuser--domain1-comまたはuser--domain2-comでアクセスすることになり、もとのユーザ名ではアクセスできないと説明しただけで、同じことを言っていると思います。

> なるほど・・・というか、やはりサーバー名としてdomain2.comを使用しないほかないのでしょうか?
> クライアントからのアクセスなので、ポート番号を別に振り分け、そちらで別にSTONEなどを咬ませることで・・・あるいは、STUNNELが多重起動できるのであれば、それも、、とか、考えてみたのですが、、理論上はできそうな気もするのですが、いかがなものでしょう、というのが趣旨だったのです。
>
>
> そして、ここからは、他のSMTPサーバーとの通信に関する疑問です。「試してみれば?」というのもありかと思いましたが、いかんせん、五万とあるSMTPサーバーで、相手方の設定によって、うまくいったりいかなかったり、というのでは困りますし、実際に運用してから「届いてないの?」と言われたり「送信できないよ」と言われたりしてから右往左往するのも嫌なので、できるだけ理解して、安心しておきたい、と思った次第です。。。で、

娘や家内が仕事で使用していますが、SSLでつないでくるのはスパマぐらいです。下記の答えにもなりますが、domain2.comのDNSでMXをdomain1.com.にするだけで解決すると思いますが・・・。 どうしてもなら、仮想サーバでも立ち上げて、別にデーモンを動かすしかない?(当然IPは別に必要です)

> これなのですが、他のSMTPからuser@domain2.com宛にメールが送られたとき、他のSMTPサーバーは、domain2.comを指定して接続しようとするので間違いないかと思っています。そのとき、START.TLSに対応していますよ、と私の側のサーバーが返答するわけですから、相手方はSTART.TLSで繋ごうとしても文句を言えない??でも、実際にSTART.TLSをしようとすると、証明書のドメインが不一致になる。ここで、相手方が「信用できないサーバーには送らない」という設定になっていたとしたら、メールが届かない、ということにならないか、という心配をしています。

先のとおりDNSで解決すれば・・・。

> もちろん、25番ポートは、他のSMTPサーバー用に、「START.TLSなしで」開放して、という意味です。
> 先に書いた心配事から、もしマルチドメインでSTART.TLSを有効にするのが好ましくない、というのであれば、クライアント用には、SMTP over SSLを使って、START.TLSはなしで、ということを考えたのです。
>
> その上で、「意図的に設定された外部のSMTPサーバー」が、25番ポートではなく、SMTP over SSLを使って、465番ポートとかに接続を試みてくることはないのか、という質問だったのですが。。。もちろん、そんなSMTPサーバーは無視しろ、というのもありかと思いましたが、ルール上、それは許されているのか、どうか、と思いまして・・・

サーバが465番でくることは有り得ません。先にも書きましたが、SSLでくるサーバも普通はありません。(DNSを触ることを考えればこれ自体考える必要がありません。)

本質は、SSLはサーバ名が問題ということであり、メールを配送しているのはサーバでありドメインではないこと、ドメインとそれを扱うサーバ名は直接的には関係ないこと、を考えればよいのではないですか?


No.7518 投稿時間:2008年03月28日(Fri) 21:06 投稿者名:すげま URL:
タイトル:勘違いしていたようです。。。


> 娘や家内が仕事で使用していますが、SSLでつないでくるのはスパマぐらいです。下記の答えにもなりますが、domain2.comのDNSでMXをdomain1.com.にするだけで解決すると思いますが・・・。 どうしてもなら、仮想サーバでも立ち上げて、別にデーモンを動かすしかない?(当然IPは別に必要です)
> 本質は、SSLはサーバ名が問題ということであり、メールを配送しているのはサーバでありドメインではないこと、ドメインとそれを扱うサーバ名は直接的には関係ないこと、を考えればよいのではないですか?

というところで、どうも勘違いしていたようです。というより、MXレコードをちゃんと理解していなかった?!いま、少しネットで検索して調べてみて、「メールのドメイン」と、メールを扱う「サーバー名」というのが同じでなく、それをMXでちゃんと指定しないといけない、ということがわかりました・・・というか、わかりつつある?

DNSの設定についても見直す必要がありそうです。もう少し勉強して、トライしてみます。ありがとうございました!



掲示板▲頁先頭