<!-- review: finished -->

<a id="mail-smtp"></a>

# SMTP

该模块启用对SMTP邮件协议的支持，允许服务器代理客户端和邮件服务器之间的出站电子邮件流量。它建立与SMTP服务器的连接，支持使用LOGIN或PLAIN方法进行安全认证，提供STARTTLS和SSL/TLS加密，并根据认证结果路由客户端请求。

<a id="directives-62"></a>

## 指令

<a id="index-0"></a>

<a id="m-smtp-auth"></a>

### smtp_auth

| [语法](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)   | `smtp_auth` method ...;   |
|--------------------------------------------------------------------------------------|---------------------------|
| 默认值                                                                                  | `smtp_auth plain login;`  |
| [上下文](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)  | mail, server              |

设置SMTP客户端允许的 [SASL认证](https://datatracker.ietf.org/doc/html/rfc2554) 方法。支持的方法包括：

| `plain`       | [AUTH PLAIN](https://datatracker.ietf.org/doc/html/rfc4616)                              |
|---------------|------------------------------------------------------------------------------------------|
| `login`       | [AUTH LOGIN](https://datatracker.ietf.org/doc/html/draft-murchison-sasl-login-00)        |
| `cram-md5`    | [AUTH CRAM-MD5](https://datatracker.ietf.org/doc/html/rfc2195)。为了使此方法正常工作，密码必须以未加密的形式存储。 |
| `external`    | [AUTH EXTERNAL](https://datatracker.ietf.org/doc/html/rfc4422)                           |
| `xoauth2`     | [AUTH XOAUTH2](https://developers.google.com/gmail/imap/xoauth2-protocol)                |
| `oauthbearer` | [AUTH OAUTHBEARER](https://datatracker.ietf.org/doc/html/rfc7628)                        |
| `none`        | 不需要认证                                                                                    |

明文认证方法 (`AUTH PLAIN` 和 `AUTH LOGIN`) 始终启用，但如果未指定 `plain` 和 `login` 方法，则 `AUTH PLAIN` 和 `AUTH LOGIN` 将不会自动包含在 [smtp_capabilities](#m-smtp-capabilities) 中。

<a id="index-1"></a>

<a id="m-smtp-capabilities"></a>

### smtp_capabilities

| [语法](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)   | `smtp_capabilities` extension ...;   |
|--------------------------------------------------------------------------------------|--------------------------------------|
| 默认值                                                                                  | —                                    |
| [上下文](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)  | mail, server                         |

设置在响应EHLO命令时传递给客户端的SMTP协议扩展列表。根据 [starttls](https://cn.angie.software//angie/docs/configuration/modules/mail/mail_ssl.md#m-starttls) 指令的值，[smtp_auth](#m-smtp-auth) 指令中指定的认证方法和 [STARTTLS](https://datatracker.ietf.org/doc/html/rfc3207) 会自动添加到此列表中。

指定客户端被代理到的MTA所支持的扩展是有意义的（如果这些扩展与认证后使用的命令相关，当Angie透明地将客户端连接代理到后端时）。

<a id="index-2"></a>

<a id="m-smtp-client-buffer"></a>

### smtp_client_buffer

| [语法](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)   | `smtp_client_buffer` size;   |
|--------------------------------------------------------------------------------------|------------------------------|
| 默认值                                                                                  | `smtp_client_buffer 4k|8k;`  |
| [上下文](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)  | mail, server                 |

设置用于读取SMTP命令的缓冲区大小。默认情况下，缓冲区大小等于一个内存页面。根据平台不同，这通常是4K或8K。

<a id="index-3"></a>

<a id="m-smtp-greeting-delay"></a>

### smtp_greeting_delay

| [语法](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)   | `smtp_greeting_delay` time;   |
|--------------------------------------------------------------------------------------|-------------------------------|
| 默认值                                                                                  | `smtp_greeting_delay 0;`      |
| [上下文](https://cn.angie.software//angie/docs/configuration/configfile.md#configfile)  | mail, server                  |

允许在发送SMTP问候语之前设置延迟，以拒绝在发送SMTP命令之前未能等待问候的客户端。
