JavaMailのソース調査

java.com.sun.mail.util.SocketFetcherクラスでした。
サーバーと接続するソケットを生成するスレッドが、mail.{smtp|imap|pop3}.connectiontimeoutの値だけ経過するとjava.net.ConnectExceptionを投げるようになっています。また、生成したソケットに対しては、mail.{smtp|imap|pop3}.timeoutの値を用いてsetSoTimeout()が呼ばれますので、このソケットのI/Oでタイムアウトが発生すると、java.net.SocketTimeoutExceptionが発生することになります。

あと、connectiontimeout, timeoutを指定しないと、-1が用いられます。

以上、調査終了。