最近,垃圾邮件发送者使用我的邮件服务器向不同的地址发送电子邮件。例如,我的一位同事收到了一封据称是自己发送的电子邮件(但事实并非如此)。查看电子邮件中的信息,我发现以下内容:
已接收 SPF:软失败 (domain.com:默认情况下未授权发件人使用'[电子邮件保护]' 在 'mfrom' 身份中,但是域当前尚未为错误失败做好准备(机制 '~all' 匹配))receiver=mail.domain.com.py;identity=mailfrom;envelope-from="[电子邮件保护]";helo="[45.159.74.66]";客户端ip=45.159.74.66。
我怎样才能阻止他们使用我的邮件服务器发送此类电子邮件?我知道问题出在机制上~all
,但如果我修改它,我明白我将不再能够从公司外部发送电子邮件,对吗?
如果您能指导我如何解决这个问题,那将会非常有帮助。
我的邮件服务器是 Postfix。
编辑:
我的 main.cf 是这样的:
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks
permit_sasl_authenticated
check_helo_access hash:/etc/postfix/helo_access
reject_invalid_helo_hostname
reject_non_fqdn_helo_hostname
reject_unknown_helo_hostname
reject_unauth_pipelining
reject_non_fqdn_hostname
reject_invalid_hostname
warn_if_reject reject_unknown_hostname
permit
smtpd_sender_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unknown_sender_domain
reject_unknown_reverse_client_hostname
reject_unknown_client_hostname
policy_time_limit = 3600
smtpd_recipient_restrictions =
reject_unknown_sender_domain
reject_unknown_recipient_domain
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
check_policy_service unix:private/policy
check_policy_service unix:/var/spool/postfix/postgrey/socket
reject_unauth_pipelining
reject_non_fqdn_hostname
reject_non_fqdn_sender
reject_invalid_hostname
check_client_access hash:/etc/postfix/rbl_override
reject_rhsbl_helo dbl.spamhaus.org
reject_rhsbl_reverse_client dbl.spamhaus.org
reject_rhsbl_sender dbl.spamhaus.org
permit_dnswl_client list.dnswl.org=127.0.[0..255].[1..3]
permit_dnswl_client swl.spamhaus.org
reject_rbl_client zen.spamhaus.org
reject_rbl_client blackholes.mail-abuse.org
reject_rbl_client sbl.spamhaus.org
reject_rbl_client cbl.abuseat.org
reject_rbl_client dul.dnsbl.sorbs.net
reject_rbl_client sbl-xbl.spamhaus.org
reject_rbl_client korea.services.net
reject_rbl_client bl.csma.biz
reject_rbl_client relays.ordb.org
答案1
正如 Gerald 已经指出的那样,SPF 设置可以得到改进而不会出现任何问题(我想)。
此外,为了在 SPF 之上添加另一层安全性,我建议您在域上激活 DKIM 身份验证方法。
基本上,您必须在域中添加一条 TXT 记录,其中包含由 SMTP 提供商正确设置的公钥。使用 GMAIL 非常简单,您可以在以下位置找到非常清晰的指南关联。
一旦激活,只有您的 SMTP 服务器才拥有能够正确签署您发送的电子邮件的私钥,并且每个收件人都可以使用您域 TXT 记录上公开提供的公钥检查您邮件的真实性。
它类似于以下内容(来自这里):
v=DKIM1; p=76E629F05F709EF665853333EEC3F5ADE69A2362BECE40658267AB2FC3CB6CBE
稍后,您还可以激活 DMARC 记录,这样您就可以告诉接收服务器如何处理未通过 SPF 或 DKIM 的外发邮件。您还可以收到每日报告,其中包含从您的域发送的所有电子邮件以及有关发件人 IP 地址的一些详细信息。它的冗长程度可以降低,否则可能会让人不知所措……
答案2
我建议将 postfix 与 spamassian 集成。 https://www.linuxbabe.com/mail-server/block-email-spam-check-header-body-with-postfix-spamassassin
我将实施这些配置指令来强化你的 postfix
myhostname = hostname
myorigin = domain
mydomain = domain
mydestination = $myhostname, localhost.$mydomain, localhost, example.com
mynetworks = 127.0.0.0/8
smtpd_relay_restrictions = permit_mynetworks reject_unauth_destination
relay_domains =
relay_host =
尤其是 mydestination 非常重要,因为它指定了要接受哪些域的邮件。
可能值得使用像 sendgrid 这样的服务来发送邮件。然后你就可以在 tls 上使用 smtp 了。https://docs.sendgrid.com/for-developers/sending-email/postfix. 而 sendgrid 已经成为一种众所周知的外发 mta 即服务