Hi there
I have encountered a bizzare problem... I have a small peice of code that
fetches emails from an IMAP server using TLS. This code works perfectly in a
standalone application, however, when I copy and paste it over to a Tomcat
application it does not work. The code uses Java Mail 1.4.1 and Java Secure
Sockets.
The following error is outputted when the code is run from within Tomcat:
javax.mail.MessagingException: Unrecognized SSL message, plaintext
connection?;
nested exception is:
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext
connection?
NOTE: in case you are wondering: YES in both cases the server is connecting
to the same port.
Now I have checked:
- the same java mail version is used across applications
- the same JRE (v1.6)
- all input parameters are the same
Any ideas on what might be causing this problem in the Tomcat environment?
package com.test.support;
import java.io.*;
import java.security.Security;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import java.net.*;
public class TestMailboxConnection {
/**
* @param args
*/
private static final String DUMMY_SSL_FACTORY =
"com.test.support.DummySSLSocketFactory";
public static void main(String[] args) {
if (args.length<3) {
System.out.println("\n\nUtility to Detect Mail Server
Connection Settings");
System.out.println("Usage: TestMailboxConnection server
username password port secure_port ");
return;
}
String server = args[0];
String username = args[1];
String password = args[2];
String port = "143";
String secureport = "993";
if (args.length>3) {
port = args[3];
secureport = args[4];
}
Properties props = new Properties();
// Insecure Test
testEcho(server,port);
//testEcho(server,secureport);
System.out.println("properties:"+props);
String protocol = "imap";
props.put("mail."+protocol+".port",port);
test("imap
insecure",protocol,server,Integer.valueOf(port),username,password,props);
props.put("mail."+protocol+".starttls.enable", Boolean.TRUE);
props.put("mail."+protocol+".socketFactory.fallback","true");
props.put("mail."+protocol+".socketFactory.class",
getSSLFactory());
props.put("mail."+protocol+".socketFactory.port",secureport);
test("imap tls
(fallback)",protocol,server,Integer.valueOf(port),username,password,props);
props.put("mail."+protocol+".socketFactory.fallback","false");
test("imap
tls",protocol,server,Integer.valueOf(port),username,password,props);
protocol = "imaps";
props = new Properties();
props.put("mail."+protocol+".socketFactory.fallback","false");
props.put("mail."+protocol+".socketFactory.class",
getSSLFactory());
props.put("mail."+protocol+".socketFactory.port",secureport);
test("imap
ssl",protocol,server,Integer.valueOf(port),username,password,props);
}
public static String getSSLFactory() {
return DUMMY_SSL_FACTORY;
}
public static void test(String testName, String protocol, String server,
int port, String username, String password, Properties props) {
java.security.Provider[] providers = Security.getProviders();
Session session = Session.getInstance(props, null);
session.setDebug(true);
Store store = null;
try {
store = session.getStore(protocol);
} catch (Exception nspe) {
System.out.println("no such provider");
return;
}
try {
System.out.println("\nprotocol='"+protocol+"',server='"+server+"',port='"+port+"',username='"+username+"',password='"+password+"'}");
System.out.println(props+"\n");
store.connect(server,Integer.valueOf(port), username,password);
} catch (Exception e) {
System.out.println("\n>>>>>>>>>>>>>>>>>
failed:"+e.getMessage()+"\n");
System.out.println("mailbox connection properties "+props);
e.printStackTrace();
return;
}
System.out.println("\n>>>>>>>>>>>>>>>>> success!"+"\n");
System.out.println("mailbox connection properties "+props);
return;
}
public static void testEcho(String server,String port) {
System.out.println("test echo (port "+port+"):");
BufferedReader in = null;
Socket echoSocket=null;
try {
echoSocket = new Socket(server, Integer.valueOf(port));
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
echoSocket.setSoTimeout(2000);
System.out.println("echo: " + in.readLine());
in.close();
echoSocket.close();
} catch (UnknownHostException e) {
System.err.println("unknown host host:"+server);
return;
} catch (IOException e) {
System.err.println("IO error occurred while connecting to
host:"+e.getMessage());
return;
}
}
}
--
View this message in context:
http://www.nabble.com/Java-Mail-Inside-Tomcat-tp16008995p16008995.html
Sent from the Tomcat - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To start a new topic, e-mail: [email protected]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]