stateDiagram-v2
[*] --> Connected
Connected --> AwaitingGreeting: TCP连接建立
# 协议握手阶段
AwaitingGreeting --> HelloCommand: 收到220后发送EHLO
HelloCommand --> TLS_Decision: 解析250扩展
# 加密与认证决策
TLS_Decision --> TLS_Handshake: 需要STARTTLS
TLS_Handshake --> HelloCommand: 加密后重发EHLO
TLS_Decision --> Auth_Decision: 无需TLS
Auth_Decision --> AUTH_Login: 需要认证
AUTH_Login --> MailFromCommand: 认证成功
Auth_Decision --> MailFromCommand: 无需认证
# 邮件传输流程
MailFromCommand --> RcptToCommand: 收到250后发送RCPT TO
RcptToCommand --> DataCommand: 收到250(最终收件人)后发送DATA
DataCommand --> Data: 收到354后发送邮件内容
Data --> QuitCommand: 收到250后发送QUIT
QuitCommand --> Disconnected: 收到221断开连接
Disconnected --> [*]
# 统一错误处理
state ErrorHandler <<choice>>
HelloCommand --> ErrorHandler: 错误响应
MailFromCommand --> ErrorHandler: 错误响应
RcptToCommand --> ErrorHandler: 错误响应
DataCommand --> ErrorHandler: 错误响应
Data --> ErrorHandler: 错误响应
ErrorHandler --> RSETCommand: 可恢复错误
RSETCommand --> MailFromCommand: 重置到发件人状态
ErrorHandler --> Disconnected: 致命错误
TOC
SMTP 状态图
发布于码厩技术博客的所有文章,除注明转载外,均为作者原创,欢迎转载,但必须注明出处。
尊重他人劳动,共创开源社区!转载请注明以下信息:
转载来源: 码厩技术博客 [https://www.markjour.com]
原文标题:SMTP 状态图
原文地址:/article/20250531-smtp-state-diagram.html
尊重他人劳动,共创开源社区!转载请注明以下信息:
转载来源: 码厩技术博客 [https://www.markjour.com]
原文标题:SMTP 状态图
原文地址:/article/20250531-smtp-state-diagram.html

如果你有魔法,你可以看到一个评论框~