You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Puppet中验证邮箱域名是否属于数组域名或其子域名?

解决方案

问题分析

你之前用in操作符出错,是因为直接判断包含关系会导致误匹配(比如'main.com'会被误判为匹配'support.randomain.com'),且反向判断时无法区分子域名和字符串部分重叠的情况。正确逻辑应该是后缀匹配:邮箱域名要么和数组内域名完全一致,要么是该域名的子域名(即邮箱域名以'.目标域名'结尾)。

实现步骤

  1. 从邮箱字符串中提取@符号后的域名部分;
  2. 遍历域名数组,对每个域名检查两种情况:
    • 邮箱域名与当前域名完全相等;
    • 邮箱域名以.当前域名结尾;
  3. 只要有一个域名满足任一条件,返回True;遍历结束无匹配则返回False。

代码实现

def check_domain(email, domain_list):
    # 提取邮箱的域名部分
    email_domain = email.split('@')[1]
    for domain in domain_list:
        # 检查完全匹配或子域名后缀匹配
        if email_domain == domain or email_domain.endswith(f'.{domain}'):
            return True
    return False

# 测试你的示例
str_email = 'call@support.randomain.com'
arr_domains = ['randomain.com', 'test.com', 'support.com']
print(check_domain(str_email, arr_domains))  # 输出: True

测试说明

  • 你的示例中,邮箱域名support.randomain.com以.randomain.com结尾,符合子域名条件,返回True;
  • 若邮箱为user@test.com,会直接匹配数组内的test.com,返回True;
  • 若邮箱为user@abc.test.com,会匹配test.com(子域名),返回True;
  • 若邮箱为user@randomain.com.cn,不会匹配randomain.com(结尾为.com.cn而非.randomain.com),返回False。

内容的提问来源于stack exchange,提问作者Fulliautomatix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 21:37:17