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

Modified on: Thu, 15 Aug 2019 20:40:02 +0800

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

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

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

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

作者:,Zulakis

最佳答案

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

第一种方法:

smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated,
    permit

现在我修改了我的smtpd_sender_login_maps,如果domain表中存在域,则返回admin的条目。这样就会返回一条记录,即使电子邮件地址不是作为maibox /别名存在,也不是当外国域名是来自地址时。

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'

第3种方法(感谢masegaloeh):强>

smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated
    reject_unlisted_sender,
    permit

我不知道有多少cpu-load / SQL查询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不为空。


作者:,Zulakis

相关问答

添加新评论