如何使用 Perl 通过仅支持基于证书的身份验证的中继发送邮件
我一直在使用 Email::Sender
和 < a href="http://search.cpan.org/perldoc?Email%3a%3aSender%3a%3aTransport%3a%3aSMTP%3a%3aTLS" rel="nofollow">电子邮件::发件人::传输::SMTP::TLS
使用启用 STARTTLS
的中继发送电子邮件。中继最近已更改为使用 X.509 证书进行身份验证。但是我注意到 Email::Sender::Transport::SMTP::TLS
没有选项指向我的证书。 Email::Sender::Transport::SMTP::TLS
所基于的 Net::SMTP::TLS
也没有。
有人可以提出解决方案吗?另一个模块可能允许我使用证书进行身份验证。
谢谢
I have been using Email::Sender
with Email::Sender::Transport::SMTP::TLS
send email using a STARTTLS
enabled relay. The relay has recently changed to using X.509 certificates for authentication. However I note that Email::Sender::Transport::SMTP::TLS
has no option to point to my certificate. Neither does Net::SMTP::TLS
on which Email::Sender::Transport::SMTP::TLS
is based.
Can someone suggest a solution? Another module perhaps that will allow me to authenticate using a certificate.
Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
检查依赖树:
Email::Sender::Transport::SMTP::TLS
==>Net::SMTP::TLS::ButMaintained
==>IO::Socket::SSL
==>Net::SSLeay
IO::Socket::SSL
和Net::SSLeay
均支持 X.509 客户端证书。因此,应增强Net::SMTP::TLS::ButMaintained
和Email::Sender::Transport::SMTP::TLS
以支持客户端证书。正确的方法应该更新两个模块以允许SSL_key|SSL_key_file
和SSL_cert|SSL_cert_file
参数。这是一个快速的肮脏的 - 您需要创建修改后的
Net::SMTP::TLS::ButMaintained
并将其保存在本地。请将用户和密码参数留空。
祝你好运!
Checking the dependency tree:
Email::Sender::Transport::SMTP::TLS
==>Net::SMTP::TLS::ButMaintained
==>IO::Socket::SSL
==>Net::SSLeay
Both
IO::Socket::SSL
andNet::SSLeay
supporting the X.509 client certificates. SoNet::SMTP::TLS::ButMaintained
andEmail::Sender::Transport::SMTP::TLS
should be enhanced to support client certificates. A proper way should update both modules to allow theSSL_key|SSL_key_file
andSSL_cert|SSL_cert_file
parameters.Here is a quick dirty one -- you need to create modified
Net::SMTP::TLS::ButMaintained
and keep it locally.Please leave the User and Password parameter as blank.
Good luck!
为了完整起见,如果 IO::Socket::SSL 可用,Net::SMTP 就可以做到这一点(不要问我从什么时候开始,但我知道它适用于两个模块的最新版本)。
代码:
主机必须与证书中的主题完全匹配,否则将无法验证。
我假设您的系统信任中继服务器的证书颁发机构,否则您也需要修复它。
for completeness sake, Net::SMTP can do this if IO::Socket::SSL is available (don't ask me since when, but I know it works with recent versions of both modules).
Code:
The host must exactly match the subject in the certificate, or it will not validate.
I assume your system trusts the certificate authority of the relay server, otherwise you need to fix that too.