perl - 创建新的 Net::SMTP::SSL 对象时无提示失败

标签 perl ssl smtp

[在 OS X 10.9.5 上运行 perl 5.16.2]

我有一个小的 Secret Santa perl 脚本,我每年清理一次,现在它决定给我带来麻烦。 (我也有一台新电脑,所以确实存在与去年不同的环境。)我打电话:

$smtp = Net::SMTP::SSL->new(Host => "mail.mydomain.org", Port => 465);

当它返回时,$smtp 不包含任何值(perl 调试器中的 'p $smtp' 只显示一个空行)和后续访问,如 $stmp->domain(和 $smtp->auth())因错误而失败

Can't call method "domain" on an undefined value at ./secretsanta.pl line 67.

我在这里错过了什么?感谢您的指点。

编辑:当我打开 SSL 调试时(perl -MIO::Socket::SSL=debug4 secretsanta.pl)我得到:

DEBUG: .../IO/Socket/SSL.pm:1769: Invalid default certificate authority locations 
SSL error:  8606: 1 - error:2006D002:BIO routines:BIO_new_file:system lib 
SSL error:  8606: 2 - error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib

DEBUG: .../IO/Socket/SSL.pm:1774: Invalid default certificate authority locations error:0200100D:system library:fopen:Permission denied 
DEBUG: .../IO/Socket/SSL.pm:529: socket not yet connected 
DEBUG: .../IO/Socket/SSL.pm:531: socket connected 
DEBUG: .../IO/Socket/SSL.pm:553: ssl handshake not started 
DEBUG: .../IO/Socket/SSL.pm:1769: SSL structure creation failed

DEBUG: .../IO/Socket/SSL.pm:1774: SSL structure creation failed error:140BA0C3:SSL routines:SSL_new:null ssl ctx
DEBUG: .../IO/Socket/SSL.pm:1758: IO::Socket::INET configuration failed

(我使用的是我的托管公司提供的 SSL 证书,它与我的邮件服务器的 DNS 名称不匹配,但显然从去年开始发生了一些变化,导致这不起作用。)

最佳答案

您是否通过升级检查过您是否受到其中一个错误的影响(可能是第一个):

Cpan Bug reports

在我看来适合:新电脑 -> 可能是更新版本 -> SMTP 2.35+ 的错误(列表中的第一个)。

也许您应该简单地使用 Net::SMTP 本身?

关于perl - 创建新的 Net::SMTP::SSL 对象时无提示失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26822717/

相关文章:

perl - 在 Perl 中识别空字符串

mongodb - 如何修复 mongo 中的 SSL 错误 "CSSMERR_TP_VERIFY_ACTION_FAILED"?

php - 如何使用反向代理脚本从 SSL 链接到外部图像

ruby-on-rails - 具有多个SMTP服务器的Rails ActionMailer

python - 通过 Python 发送电子邮件的最简单方法

perl - 在 Mason 中打印参数内容

perl - 套接字中的 Socket recv、sysread 和 Posix::read 之间的区别?

java - Android 上是否有任何系统证书存储?

javascript - 是否可以使用 GMail 的 OAuth 发送邮件

perl - 梅森响应之前和之后的这些数字意味着什么?