AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 688758
Accepted
Zulakis
Zulakis
Asked: 2015-05-06 06:14:26 +0800 CST2015-05-06 06:14:26 +0800 CST 2015-05-06 06:14:26 +0800 CST

拒绝使用您自己的域作为发件人的传入电子邮件

  • 772

拒绝使用我的虚拟域之一作为发件人地址而不是我的合法用户的传入电子邮件会很好。

我知道我可以拒绝使用现有别名/帐户名的传入电子邮件,smtpd_sender_restrictions=reject_sender_login_mismatch但这仍然允许攻击者将不存在的电子邮件地址与我的一个虚拟域一起使用。(这在垃圾邮件检测方面受到青睐)。

拒绝使用我的虚拟域之一且未经身份验证的传入邮件的最佳方法是什么?

由于邮件列表和转发存在问题,SPF 和 DKIM 已设置但配置为 SoftFail。我不是在寻找 SPF 或 DKIM,而是针对作为上述域的 MX 的后缀服务器的解决方案。

email
  • 4 4 个回答
  • 17566 Views

4 个回答

  • Voted
  1. Best Answer
    Zulakis
    2015-05-07T00:58:01+08:002015-05-07T00:58:01+08:00

    我找到了两种可能的方法,但也许有更好的方法。

    第一种方法:

    smtpd_sender_restrictions =
        reject_sender_login_mismatch,
        permit_sasl_authenticated,
        permit
    

    现在我修改了 mysmtpd_sender_login_maps以返回域表中admin是否存在域的条目。这样会返回一条记录,即使电子邮件地址不作为 maibox/alias 存在,但当外部域是发件人地址时则不会。

    table = domain
    query = SELECT username AS allowedUser FROM mailbox WHERE username="%s" AND deleted_at IS NULL \
    UNION SELECT goto FROM alias WHERE address="%s" AND active = 1 \
    UNION select 'admin' from domain where domain = '%d'
    

    方法二:

    check_sender_access如果域是虚拟域而用户不是,则此方法使用返回拒绝操作的查找sasl_authenticated。

    smtpd_sender_restrictions =
        reject_sender_login_mismatch,
        permit_sasl_authenticated,
        check_sender_access proxy:mysql:$config_directory/mysql_reject_virtual_domains.cf,
        permit
    

    mysql_reject_virtual_domains.cf:

    table = domain
    query = select 'Reject 530 SMTP authentication is required' from domain where domain = '%d'
    

    第三种方法(感谢masegaloeh):

    smtpd_sender_restrictions =
        reject_sender_login_mismatch,
        permit_sasl_authenticated
        reject_unlisted_sender,
        permit
    

    我不知道有多少 cpu-load/SQL-queries reject_unlisted_sender生成,因为它检查了很多东西:


    请求 Postfix SMTP 服务器拒绝来自未知发件人地址的邮件,即使没有reject_unlisted_sender指定明确的访问限制。这可以减缓蠕虫或病毒伪造邮件的爆炸式增长。

    当一个地址匹配一个虚拟(5)别名或一个规范(5)映射时,它总是被认为是“已知的”。

    • 发件人域匹配 $mydestination、$inet_interfaces 或 $proxy_interfaces,但发件人未列在 $local_recipient_maps 中,并且 $local_recipient_maps 不为空。
    • 发件人域与 $virtual_alias_domains 匹配,但发件人未在 $virtual_alias_maps 中列出。
    • 发件人域与 $virtual_mailbox_domains 匹配,但发件人未在 $virtual_mailbox_maps 中列出,并且 $virtual_mailbox_maps 不为空。
    • 发件人域匹配 $relay_domains 但发件人未列在 $relay_recipient_maps 中,并且 $relay_recipient_maps 不为空。

    • 10
  2. Kondybas
    2015-05-06T06:49:12+08:002015-05-06T06:49:12+08:00

    正确的方法是为您的域设置 SPF 并在 MTA 中启用 SPF。然后,您不仅可以为自己的域伪造获得保护,还可以为所有其他启用了 SPF 的域获得保护。

    • 1
  3. alexus
    2015-05-06T06:55:24+08:002015-05-06T06:55:24+08:00

    您应该尝试至少实现以下一项(两者都更好):

    • SPF:项目概述
    • 域密钥识别邮件 (DKIM)
    • 1
  4. Oleg Kr
    2015-11-16T10:48:31+08:002015-11-16T10:48:31+08:00

    另一个没有联合的单独查询的第一种方法:

    virtual_sender_mailbox_maps.cf
    
    query = SELECT '%s' AS email FROM domains WHERE name='%d' AND active=TRUE
    
    main.cf
    
    smtpd_sender_login_maps = ${proxysql}virtual_sender_mailbox_maps.cf
    smtpd_sender_restrictions =
        reject_sender_login_mismatch,
        permit_sasl_authenticated,
        permit
    
    • 1

相关问题

  • 如何绕过 ISP 的限制性电子邮件政策?

  • SharePoint 传入电子邮件出现“未知别名”错误

  • 电子邮件帐户的角色名称与人名

  • 如何在笔记本电脑上使用 Tobit David?[关闭]

  • 随行人员通过 VPN 连接到 Exchange 2007

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve