【问题标题】:SMTP email encryptionSMTP 电子邮件加密
【发布时间】:2018-10-28 14:20:36
【问题描述】:

如何加密使用 SMTP 发送的电子邮件?我对这个 SMTP 有点陌生,对 电子邮件加密SMTP 服务器身份验证 有点困惑。

我真的找不到一个示例,其中 SMTP 邮件以加密格式(使用 tls/ssl)发送而无需任何身份验证。

我的情况是,我有一个 SMTP 服务器(不需要任何身份验证)。我必须以加密格式发送电子邮件。

那么,真的不能在没有任何服务器身份验证的情况下发送电子邮件吗?请在这里清除我。

以下是我的参考代码,当security设置为true时不起作用。

let transporter = nodemailer.createTransport({
  host: prop.mailHost,
  port: prop.mailPort,
  secure: true  //encrytpion enabled. And no authentication provided               
});     

transporter.sendMail(mailOptions, function(error, info) {
  if (error) {
    return console.log(error);
  }
  console.log("successfully sent mail");
}

我在这里遗漏了什么吗? Nodemailer 是这里使用的 node js 包。只要支持邮件加密和添加附件,我可以随意切换到其他一些节点 js 包。

【问题讨论】:

  • 我怀疑您误解了 SSL 上下文中的身份验证。 SSL/TLS 客户端总是在发送数据之前对 SSL 服务器进行身份验证。客户端必须配置一个证书颁发机构 (CA) 证书列表,该证书涵盖客户端可能连接到的所有可能的服务器。我不知道 nodemailer 是如何做到这一点的,你必须检查文档。您说“它不起作用”,但不知道它是如何失败的。

标签: node.js email encryption smtp nodemailer


【解决方案1】:

您似乎混淆了几个安全方面:

  • SMTP 身份验证 意味着邮件客户端需要发送用户/密码以向服务器验证自己。这是 SMTP 服务器中的配置。如果需要验证但未提供,服务器将拒绝接受邮件。 SMTP 无需身份验证也是可能的,这实际上是早期很长一段时间的默认设置(称为“开放中继”),但是当垃圾邮件发送者开始滥用此类服务​​器发送垃圾邮件时,情况发生了变化。如今,除非经过身份验证,否则可能没有 SMTP 服务器接受邮件。
  • TLS 或 STARTTLS 表示邮件客户端和 SMTP 服务器设置了一个安全通道,用于发送电子邮件。这与 SSL 非常相似。带有 TLS 的 SMTP 启动一个不安全的连接,然后在发送数据之前协商设置一个安全通道。 安全的 STMP 或 SMTPS 首先启动 SSL 连接,然后通过它启动 SMTP 协议。在传输器属性中将 secure 设置为 true 意味着在 SMTP 期间请求 TLS。但这与上述无关。
  • 您还提到的电子邮件加密是另一回事。这意味着消息本身由发送客户端加密,而由接收客户端未加密。与仅作为安全通道的 TLS 或 SSL 不同,电子邮件加密是真正的端到端加密。电子邮件加密通常使用 S/MIME 或 PGP 执行。但这与上述无关。

【讨论】:

    猜你喜欢
    • 2016-10-23
    • 2016-08-06
    • 2018-03-20
    • 2011-07-30
    • 2019-10-11
    • 2012-03-09
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    相关资源
    最近更新 更多