title_parttitle_parttitle_part
静岡県浜松市であれこれソフトを開発している A.K.I Software のブログです。日々の開発日記やサーバー・セキュリティ関連の話題なども掲載。
<< 2024/05 >>12345678910111213141516171819202122232425262728293031
《《《 ネットワーク機器の購入は Amazon で! 》》》
Powered by BLOM IPv6 対応へ
小さくも大きくも閉じたりもしません
10/04/04 01:55 / PMailServer2

今更なんですが、お問い合わせを頂いたのと IMAP4 に対応すると残りは SSL/TLS と IPv6 位しかすることが無いので
IPv6 対応をぼつぼつ開始しようかと思っています。
(SSL/TLS は IPSec が使われるようになったら使わなくなるかな?ってことで後回し状態です。schannel.dll の使い方も非常に面倒ですし。OpenSSL はライセンス関係で使いたくないですし)

とは言いつつも IPv6 の処理を行う部分はほぼ出来ていますので、各プロトコルエンジンに組み込むだけで一応動いてしまいます。

photo

現在の最新である 1.84 に組み込んでみました。
telnet や Connect from の行を見ると FE80 で始まる IPv6 アドレスで接続しているのがわかります。

蛇足ですが、::1 や 0::0 や fe80::1 みたいな省略表記は私は余り好きじゃありません。はい、どうでもいいですね。

実は IPv6 自体への TCP/IPレベルの対応はそれ程難しくなかったりします。

Socket() する前に GetAddrInfo() って関数を使って準備してあげれば後は bind() したり accept() したり、connect() するだけです。
5分悩むレベルなのは bind() する場合 GetAddrInfo() する時に flags に AI_PASSIVE を設定する位かな?

ちょいと面倒なのは、MX を DNS に問い合わせる際に IPv6 用に AAAA レコード(IPv4 は A レコード)を問い合わせる必要があるのですが、DNS用のエンジンは既に対応済みですので(サーバーマネージャーの nslookup を見ると AAAA レコードがあります。www.v6pc.jp を AAAA で引いたりすればちゃんと取得出来るのは確認できます。)せいぜい IPv6 版の場合、MX を引く>AAAAで引く>無かったら A で引くと1クッション処理が入る位です。

TCP/IP レベルではこれでオッケーなんですが、問題は PMail Server のアプリケーションレベルです。

フィルタとかの指定が IPv4 の時と違い単純に出来ませんし(アドレス指定が長いから)
国別検索とかも IPv6 用データを用意しなければなりませんし。(データが大きいので IPv4 用しか入れていませんし)

あと PMail Server の公式なサポートから半分外れていますが、Windows NT4.0 Server が非サポートになるのです。

NT4.0 では Winsock 1.1 では使えないのですが、IPv6 の処理にはどうしても Winsock 2.0 が必要になるというジレンマです。
14〜15年前のOSに拘ってもしょうがないのですが、きっとどこかの片隅でひっそりとイントラなどで動いている NT4.0 があるに違いないということで、ちょっとだけ拘っています。
多分 IPv6 対応にする際には PMail ServerPMail Server 2 と名前を変えて、PMail Server のコードは凍結することになると思いますが、それまでは拘りたいですねぇ。

[更新日付:2010/04/04 01:55:16]
トラックバックを見る(0)
Log Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+sl+65d8b8432df5704fe9ef159804e3e810afd92cab]
TB Link [https://akisoftware.com/cgi-bin/blom.exe?akisoft+tb+65d8b8432df5704fe9ef159804e3e810afd92cab]

記事へのコメント

コメントはありません

名前
コメントキー
 
コメントする時はキーを正確に入力して下さい
コメント
アドレスを含んだコメントはできません
© 2008-10 A.K.I Software all rights reserved.