跳到主要内容

7. 安全考虑事项 (Security Considerations)

7.1. 邮件安全和伪造 (Mail Security and Spoofing)

SMTP 邮件本质上不安全, 原因包括:

  • 缺少内建认证
  • 发送者地址很容易伪造
  • 基本协议没有加密

MAIL FROM 和 RCPT TO 地址很容易被伪造. SPF, DKIM, DMARC 等附加协议有助于缓解伪造, 但它们不属于核心 SMTP.

7.2. "Blind" 副本

BCC (Blind Carbon Copy) 接收者不得出现在消息头部中. 通常通过以下方式处理:

  • 为 BCC 接收者创建单独 SMTP 事务
  • 传输前移除 BCC 头部字段

7.3. VRFY, EXPN 和安全

VRFY (verify) 和 EXPN (expand) 命令可用于收集有效电子邮件地址. 服务器可以:

  • 禁用这些命令
  • 要求认证后才能使用
  • 返回不确认地址有效性的通用响应

7.4. 基于 251 和 551 响应代码的邮件重路由

响应代码 251 (user not local, will forward) 和 551 (user not local) 可能被利用:

  • 发现转发地址
  • 收集地址
  • 进行流量分析

服务器应谨慎处理自动转发以及这些响应中披露的信息.

7.5. 公告中的信息披露

服务器 greeting (220 响应) 和 EHLO 响应不应披露:

  • 详细软件版本信息
  • 内部系统架构
  • 安全配置细节

攻击者可以利用这些信息针对已知漏洞.

7.6. Trace 字段中的信息披露

Received 头部字段包含:

  • IP 地址
  • 主机名
  • 时间信息
  • 内部网络拓扑

虽然这些信息对调试是必要的, 但也可用于:

  • 网络映射
  • 流量分析
  • 识别安全基础设施

7.7. 消息转发中的信息披露

转发消息时, 服务器应:

  • 避免披露内部地址
  • 跨越信任边界时清理 trace 信息
  • 考虑自动转发的隐私影响

7.8. 抗攻击能力 (Resistance to Attacks)

SMTP 服务器应实现防护以抵御:

拒绝服务 (DoS)

  • 每来源连接限制
  • 速率限制
  • 资源消耗限制
  • 超时强制

缓冲区溢出

  • 严格输入验证
  • 长度限制强制
  • 安全字符串处理

命令注入

  • 正确解析命令
  • 验证参数
  • 拒绝畸形输入

目录收集攻击

  • 限制 RCPT TO 命令速率
  • 延迟或通用响应
  • 记录并阻止扫描行为

7.9. SMTP 服务器的操作范围 (Scope of Operation of SMTP Servers)

SMTP 服务器应:

  • 明确定义其操作范围

  • 实现适当访问控制

  • 区分:

    • 内部消息提交
    • 外部消息中继
    • 最终消息投递不得部署开放中继 (接受任何人发往任何地方并进行转发的服务器), 因为它们:
  • 促成垃圾邮件分发

  • 便利滥用

  • 损害 Internet 邮件基础设施

推荐安全实践

  1. 使用 TLS/STARTTLS: 尽可能加密连接
  2. 实现认证: 对消息提交要求 SMTP AUTH
  3. 部署 SPF/DKIM/DMARC: 添加发送者认证
  4. 速率限制: 防止滥用和 DoS 攻击
  5. 访问控制: 适当限制中继访问
  6. 日志记录: 维护详细日志用于安全分析
  7. 定期更新: 及时应用安全补丁
  8. 监控: 检测并响应可疑活动