SMTP-сервер часто возвращает ошибку 550, когда имя отправляющего хоста не может быть обращено обратно к исходному IP-адресу. Это позволяет почтовым серверам немного аутентифицировать, что отправляющий клиент является тем, кем он говорит. К сожалению, у многих тестовых клиентов - особенно систем за устройством 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 не знает).
Даже если я использовал DNS-имя, которое отображается на 69.59.196.211 ( например stackoverflow.com), SMTP-сервер может выполнить обратный поиск DNS , чтобы проверить это 211.196.59.69. in-addr.arpa отображается на stackoverflow.com. Если это не удается, SMTP-сервер может считать вас спуфером и вернуть 550.
Наконец, ваш отправляющий клиент или каждый хост, у которого есть свой блок IP-адресов, может быть помещен в черный список SMTP-сервером по причинам, которые вы не можете контролировать.
Без большего контекста, чем вы, вероятно, хотите опубликовать (имена и адреса виновного клиента и сервера), я не могу быть уверен, что это проблема SMTP / DNS, не связанная с Java, поэтому вам придется проверять эти биты самостоятельно , Вы можете вообще пропустить Java и telnet smtp-servername 25
и пообщаться с сервером самостоятельно. RFC 2821 окажется полезным, если вы попробуете.