550 エラーは、送信元のホスト名を元の IP アドレスに逆変換できない場合に、SMTP サーバーから返されることがよくあります。これにより、メールサーバーは、送信側クライアントが誰であるかを少し認証できます。残念ながら、多くのテスト クライアント (特に NAT デバイスの背後にあるシステム) は、どの名前にもマップされない元の IP アドレスを持っています。
たとえば、これを入力しているマシンの IP アドレスは 192.168.1.103 であり、私のホスト名は so.example.myhouse である可能性があります。これは、私のルーターが私のデスクからのパケットが (たとえば) 69.59.196.211から来ているように装うためです。は私の WAN アドレスです。ただし、props.put("mail.from", "me@so.example.myhouse")
SMTP サーバーを使用すると、DNS ルックアップが試行され、架空のホスト名 (つまり、グローバル DNS が知らないホスト名) に対して明らかに失敗する可能性があります。
69.59.196.211 にマッピングされる DNS 名 (例: stackoverflow.com) を使用した場合でも、SMTP サーバーは逆引き DNS ルックアップを実行して、211.196.59.69.in-addr.arpa が stackoverflow.com にマッピングされることを確認する場合があります。それが失敗した場合、SMTP サーバーはあなたをスプーファーと見なし、550 を返す可能性があります。
最後に、送信クライアントまたはその IP アドレス ブロック内のすべてのホストが、制御できない理由で SMTP サーバーによってブラックリストに登録される可能性があります。
おそらく投稿したいよりも多くのコンテキスト (有罪のクライアントとサーバーの名前とアドレス) がなければ、Java とは無関係の SMTP/DNS の問題であるとは確信できないため、それらのビットを自分で確認する必要があります。Java を完全にスキップしてtelnet smtp-servername 25
、自分でサーバーに話しかけることができます。試してみると、 RFC 2821が役立つことがわかります。