![Sendmail 如何拒绝发送给本地用户的电子邮件,除非它来自受信任的子网?](https://linux22.com/image/625577/Sendmail%20%E5%A6%82%E4%BD%95%E6%8B%92%E7%BB%9D%E5%8F%91%E9%80%81%E7%BB%99%E6%9C%AC%E5%9C%B0%E7%94%A8%E6%88%B7%E7%9A%84%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%EF%BC%8C%E9%99%A4%E9%9D%9E%E5%AE%83%E6%9D%A5%E8%87%AA%E5%8F%97%E4%BF%A1%E4%BB%BB%E7%9A%84%E5%AD%90%E7%BD%91%EF%BC%9F.png)
我已设置 sendmail 来接收几个域的邮件并为几个子网的系统中继消息。最近,一个特定的仅供内部使用的地址收到了很多垃圾邮件。有人要求我丢弃发往此地址的所有邮件,除非这些邮件来自此系统将中继邮件的计算机之一。
我知道我可以用 procmail 来做这件事,但我更愿意将它与 sendmail 绑定,这样不合格的电子邮件将在 MTA 级别被彻底拒绝。我不知道如何让 sendmail 做到这一点(或者这是否可能)。
我已使用以下设置配置了 sendmail:
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')`
FEATURE(`blacklist_recipients')
/etc/mail/access
包含:
example.com RELAY
connect:192.168.15 OK
to:[email protected] REJECT
我正在/etc/mail/access.db
通过生成makemap hash /etc/mail/access.db </etc/mail/access
。
但是,当我尝试使用该配置时,即使是本地机器在尝试发送到内部地址时也会收到消息。550 5.2.1 <[email protected]>... Mailbox disabled for this recipient
我可以配置 sendmail 来执行我想要的操作吗?如果可以,该如何配置?
答案1
抱歉,我不想冒犯您,但这是您的 /etc/mail/access.db 的确切内容吗?
example.com RELAY
connect:192.168.15 OK
to:[email protected] REJECT
因为它应该是一个哈希映射。上面应该是你的 /etc/mail/access 的内容。然后将其编译为一个映射:makemap hash /etc/mail/access.db < /etc/mail/access