電子メールメッセージをプログラムで処理するために作成されたSpringIntegrationプロセスがあります。IDEからは正常に動作しますが、TomcatUnixサーバーにデプロイすると失敗します。JDK 1.6.0.4、Tomcat 7.0.29、Grails 2.0.4、Spring Integration 2.1.3、およびJavaMail1.4.5を実行しています。これを実行できるようにプロキシ設定を構成する方法を理解しようとしています。2010年からは不可能だという投稿を見てきましたが、現在はJavaMailのプロパティがあるようです。
-DsocksProxyHost=myproxy.mycompany.com
Tomcatで設定しようとしましsetenv.sh
たが、メール部分に到達する前にアプリが失敗しました。これは、内部サイト(データベース接続など)にアクセスできなかったためです。
JavaMail API-FAQを確認しましたが、正しく設定されていると思いますが、タイムアウトが発生し続けます。
Spring Integrationプロセスの電子メールプロキシを正常に設定した人はいますか?
Spring Integration XMLファイルからのスニペット:
<util:properties id="javaMailProperties">
<prop key="mail.imap.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
<prop key="mail.imap.socketFactory.fallback">false</prop>
<prop key="mail.store.protocol">imaps</prop>
<prop key="mail.debug">true</prop>
<prop key="mail.smtp.socks.host">socksproxy.mycompany.com</prop>
<prop key="mail.smtp.socks.port">1080</prop>
<prop key="mail.imap.socks.host">socksproxy.mycompany.com</prop>
<prop key="mail.imap.socks.port">1080</prop>
</util:properties>
<mail:inbound-channel-adapter id="imapAdapter"
store-uri="imaps://myEmailAddress:myPassword@imap.gmail.com/INBOX"
java-mail-properties="javaMailProperties"
channel="receiveEmailChannel"
should-delete-messages="false"
should-mark-messages-as-read="true"
auto-startup="true">
<int:poller max-messages-per-poll="1" fixed-rate="15" time-unit="SECONDS">
</int:poller>
</mail:inbound-channel-adapter>
解決
Bill Shannonの回答に基づいて、javaMailProperties
以下のスニペットに更新しましたが、すべてが期待どおりに機能しています。
<util:properties id="javaMailProperties">
<prop key="mail.store.protocol">imaps</prop>
<prop key="mail.imap.ssl.enable">true</prop>
<prop key="mail.debug">true</prop>
<prop key="mail.imaps.socks.host">socksproxy.mycompany.com</prop>
<prop key="mail.imaps.socks.port">1080</prop>
</util:properties>
JavaDocsからの細かい印刷を指摘することが重要だと思います...
「imaps」プロトコルを使用してSSL経由でIMAPにアクセスする場合、すべてのプロパティの名前は「mail.imaps。*」になることに注意してください。