Grails 邮件 Exchange 服务器配置
Posted
技术标签:
【中文标题】Grails 邮件 Exchange 服务器配置【英文标题】:Grails mail Exchange server configuration 【发布时间】:2015-08-02 22:19:33 【问题描述】:我正在尝试使用 Exchange 服务器配置邮件。
这是我的配置
grails
mail
host = "mail.xxx.xx.xx"
port = 443
username = "username"
password = "password"
props = [ "mail.smtp.auth":"true",
"mail.smtp.port":"443",
"mail.smtp.ssl.enable" :"true"
]
我收到以下错误
Message: org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Exception reading response;
nested exception is:
java.net.SocketException: Connection reset. Failed messages: javax.mail.MessagingException: Exception reading response;
我知道这是我必须更改的道具的问题,因为此配置适用于我的邮件应用程序。 我知道端口是正确的,它使用 SSL。
我也尝试过使用这些道具
props = ["mail.smtp.timeout" : "100000",
"mail.smtp.starttls.enable" : "true",
"mail.smtp.EnableSSL.enable" : "true",
"mail.transport.protocol" : "smtps",
"mail.smtp.socketFactory.port" : "443",
"mail.smtp.auth" : "true",
"mail.smtp.socketFactory.class" : "javax.net.ssl.SSLSocketFactory",
"mail.smtp.socketFactory.fallback": "false",
"mail.debug" : "true"]
调试结果如下:
DEBUG: JavaMail version 1.5.1
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]
DEBUG: Providers Listed By Protocol: imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "xxx.xxx.xx.xx", port 443, isSSL true
【问题讨论】:
当您使用 SSL 时,您确定您的 java 密钥库具有服务器证书颁发者的 CA 吗? 不,你能向我解释一下如何做到这一点吗?我所做的只是将我的邮件应用程序中的数据添加到此配置中。 你可以试试我说的吗? 【参考方案1】:在我看来这是一个证书问题。如果您可以访问不使用 SSL 的服务器,我会先对其进行测试,否则您应该:
查找证书颁发者(如果不知道,可以使用 openssl verify http://www.herongyang.com/Cryptography/OpenSSL-Certificate-Path-Validation-Tests.html) 在您的 java 密钥库中查找 CA 找到默认的 java 密钥库 (How do I find out what keystore my JVM is using?) 或您正在使用的那个 列出密钥库并查找相应的 CA 如果有 CA,那么问题不太可能是这样的 如果没有对应的 CA,则获取 CA 证书并将其导入到您的密钥库,重新启动服务器,应该可以再次工作。【讨论】:
你好试过了,不是证书问题,因为我有。 呃,你确定你的端口是443吗?通常,该端口由安全 Web 服务器使用。安全 smtp 的标准端口是 465。【参考方案2】:不久前我遇到了同样的问题。如果您尝试访问网络(组织)内的交换服务器,我相信端口号是这里的问题。它可能已被网络管理员更改。
请联系网络管理员并向他解释您正在尝试访问 Exchange Server 并需要用户名、密码和相关端口号。如果应用程序在内部运行,则身份验证可能是可选的,即
props = ["mail.smtp.auth":"false"]
我希望这会有所帮助。
【讨论】:
以上是关于Grails 邮件 Exchange 服务器配置的主要内容,如果未能解决你的问题,请参考以下文章
Exchange 2010 预防被恶意中继及配置反垃圾邮件功能
玩转Office 365中的Exchange Online服务 之十一 怎样在Exchange Online中配置邮件传递限制《转》