2012年08月16日

javax.mail.MessagingException: 501 5.0.0 HELO requires domain address

JavaMailで上記のエラーになった場合は、

mail.smtp.localhostというプロパティに有効なドメイン名を設定すればOKというのは最早有名。

ソースだと以下のような感じ。

Properties props = new Properties();
props.put("mail.smtp.localhost", 有効なドメイン名);


まあ、ここまではよくある話なのだが、S2Maiなど便利なライブラリを利用していると、

一部の用意されているプロパティ以外は、なかなか設定が困難。

ソースを追っかけて、どうにか解析していたのだけど、それよりサーバーの設定見なおした方が早いと判断して方向転換。

同じプログラムでも、表題のエラーが出るサーバーと出ないサーバーがあったのでそっちから攻めてみる。

さて、エラーの原因だが、メールサーバによっては、ドメイン付きホスト名が要求される場合があり、

JavaMail のデフォルトでは そのコンピュータのホスト名がセットされるのが、

これがドメイン付では無い場合に メールサーバへの HELLOコマンド時に拒否される場合があるとのこと。

なるほどね。デフォルトでセットされるコンピュータのホスト名が怪しいね。

早速、動くサーバーと、動かないサーバーの/etc/hosts をチェック。

おー。全然違う。

動くサーバーの関係ありそうなところを真似てみる。

127.0.0.1 test-sv.jp test-sv localhost.localdomain localhost

実行!

動いた!!( ̄ー ̄)ニヤリ

プログラム側の対応もいいけど、サーバー側の対応もいいかもね!

以上!
posted by hana at 18:16| Comment(0) | TrackBack(0) | メール関連 | このブログの読者になる | 更新情報をチェックする