2006年07月18日
Flash | OML for AS3
「Programming ActionScript 3.0」を8割方読み終わった。新機能の実装する練習として、いくつかプログラムを作っているのだけど、ozacc-mail libraryのAS3版を実装中。JavaMailに相当するようなライブラリはないので、AS3のSMTPクライアントはもうどこかで公開されているのかも知れないけど、SMTPクライアントから自作することにした。
Socketクラスを使ったSMTPクライアントはほぼ完成し、きちんとヘッダがセットされていないメールを送れるところまではできた。SMTPサーバに接続する上でのセキュリティを考えると、実践ではなかなか使いづらいだろうけど、サーバプログラム無しでSWFから直接メールを送信できる手軽さはイイ。
ところで、本来SMTPコマンド「HELO」のパラメータとしてSMTPクライアントのFQDNを渡すのだけど、AS3では実行マシンのホスト名を取得する手段がない(と思われる)。Javaで言うところの「InetAddress.getLocalHost().getHostName()」。まあ、この値は所詮テキトーでいいんだけどさ。
テキトーだと困ることも多いかも。
まあ、それ以外に方法がないなら仕方ないと思いますけど。
http://www.postfix.org/uce.html#smtpd_helo_restrictions
takaiさん、こんばんは。
Postfixは使ってないのだけど、実際にここで制限して運用するようなケースって多いのかな?
ちょっと長いけど「JavaMail完全解説」からの引用です。
http://www.sk-jp.com/book/javamail/contents/javamail_protocols.html#SEC1
heloのパラメタである「SenderMTAのホスト名」はRFC821ではドメイン名と書かれていますが、現在はここに何を書いてもほとんど意味をなさないようになっています。理由は、heloのパラメタはクライアントが宣言するものですが、クライアントがグローバルなホスト名を持たないことが多くなってきましたので、記述すべき内容がない場合が多いことと、そういったものに対しては正しいものであるかを検証する手段もないためです(実際正しくないわけですから仕方がありません)。現在はheloのパラメタは一応Received:ヘッダに記録はされます(それすらしないMTAも多いですが)が、その時に接続してきたホストのIPアドレスとそれを元にドメイン名を逆引きしたものを同時に記録するものがほとんどです。
昔、ひっかかった記憶があったのです。
ただ、Outbound Port 25 Blockingが主流になっていくだろう世界では関係がないっちゃあ、関係がないでしょうからお気になさらず。