简介
本文档介绍如何根据经过简单邮件传输协议(SMTP)身份验证的用户创建过滤器并将用户名记录到X报头中。
先决条件
思科建议您了解AsyncOS 6.5版及更高版本。
背景信息
SMTP身份验证功能允许客户对其客户端使用SMTP身份验证,以便连接到邮件安全设备(ESA)并从其发送邮件。 由于此功能允许经过身份验证的用户进行中继,因此用户可以在通过思科ESA发送的电子邮件中伪造“发件人:”字段。为防止用户伪造,ESA AsyncOS 6.5版及更高版本现在包含允许与经过身份验证的SMTP用户用户名和邮件发件人电子邮件地址进行比较的邮件过滤条件。
创建过滤器
邮件过滤器条件允许管理员编写类似于下一节示例规则的过滤器,该示例规则比较通过SMTP身份验证会话出站中继的邮件。如果SMTP凭据受损,发送电子邮件的计算机通常会生成多个地址,用作邮件发件人:标题。邮件过滤条件仅允许在用户名和邮件发件人为以下状态时离开邮件:信头匹配。否则,该邮件将被视为伪造邮件“发件人:”,并激活邮件过滤器操作。邮件过滤器操作可以是任何最终操作;示例规则显示隔离操作。过滤器条件具有以下语法:
smtp-auth-id-matches("<target>" [, "<sieve-char>"])
过滤器允许与以下目标之一进行比较:
- 信封发件人:比较在“发件人:”中指定的地址的子网页。
- 发件人地址:比较从“发件人:”(From:)解析的地址标题。因为允许在“发件人:”中使用多个地址报头,只有一个必须匹配。
- 发件人:比较发件人中指定的地址:标题。
- Any:匹配在经过身份验证的SMTP会话期间创建的邮件(无论身份如何)。
- 无:匹配在经过身份验证的SMTP会话期间未创建的邮件(例如,当首选SMTP身份验证时)。
SMTP身份验证ID |
筛炭 |
比较地址 |
匹配? |
某用户 |
|
otheruser@example.com |
无 |
某用户 |
|
someuser@example.com |
Yes |
某用户 |
|
someuser@face.localhost |
Yes |
部分用户 |
|
someuser@example.com |
Yes |
某用户 |
|
someuser+folder@example.com |
无 |
某用户 |
+ |
someuser+folder@example.com |
Yes |
someUser@example.com |
|
someuser@forged.com |
无 |
someUser@example.com |
|
someuser@example.com |
Yes |
someUser@example.com |
|
someuser@example.com |
Yes |
创建此变量替代$SMTPAuthID,以允许在用于中继的原始身份验证凭据的报头中包含。
示例规则
Msg_Authentication: if (smtp-auth-id-matches("*Any"))
{
# Always include the original authentication credentials in a
# special header.
insert-header("X-SMTPAUTH", "$SMTPAuthID");
if (smtp-auth-id-matches("*FromAddress", "+") and
smtp-auth-id-matches("*EnvelopeFrom", "+"))
{
# Username matches. Verify the domain
if (header('from') != "(?i)@(?:example\.com|example\.com)" or mail-from !=
"(?i)@(?:example\.com|\.com)"
{
# User has specified a domain which cannot be authenticated
quarantine("forged");
}
} else {
# User claims to be an completely different user
quarantine("forged");
}
}
注意:此过滤器假设您有一个称为“伪造的隔离区。
相关信息