![OpenSMTPD 可以从白名单 IP 中继邮件吗?](https://linux22.com/image/754788/OpenSMTPD%20%E5%8F%AF%E4%BB%A5%E4%BB%8E%E7%99%BD%E5%90%8D%E5%8D%95%20IP%20%E4%B8%AD%E7%BB%A7%E9%82%AE%E4%BB%B6%E5%90%97%EF%BC%9F.png)
我正在运行 opensmtpd 并且一切正常。
当然,我不会运行开放中继,而且我会严格控制邮件通过邮件服务器发送的方式。
但是,我的个人邮件工具与 opensmtpd 虚拟机在同一物理服务器上的不同虚拟机上运行。它们是同一台机器,只是不同的 VM,当然还有不同的 IP。
我可以跳过所有复杂的身份验证机制,只告诉 opensmtpd“可以从这IP地址” ?
我真的很想在我的配置文件中添加一行,指定一个允许通过的 IP,就像它是本地邮件服务器一样,而不必在客户端和服务器端进行复杂的配置...
答案1
我从未使用过 OpenSMTPD,但是SMTPD.CONF(5)看起来相当有帮助。甚至还有一个例子说明如何配置服务器以拒绝消息,除非这些消息来自列为其他中继的 IP 地址。
接受非本地邮件的站点可以通过拒绝声称来自本地域的伪造邮件来减少收到的垃圾邮件数量。以下示例使用列表表 其他中继指定可以合法发送以所有者的域为发件人的邮件的中继的 IP 地址。
table aliases file:/etc/mail/aliases table other-relays file:/etc/mail/other-relays listen on lo0 listen on egress action "local_mail" mbox alias <aliases> action "outbound" relay match for local action "local_mail" match for any action "outbound" match !from src <other-relays> mail-from "@example.com" for any \ reject match from any for domain example.com action "local_mail"
非常match for any
自由,需要match !from src <other-relays>
进一步限制,但由于您请求了单个配置行,因此您可以采取相反的方法。例如,如果您想将 ie 列入白名单允许不受限制的中继从198.51.100.10
,您可以:
match from src 198.51.100.10 for any relay
如果它不能直接起作用,您可能需要先指定简单的中继操作:
action "outbound" relay
match from src 198.51.100.10 for any action "outbound"
那是:
match
选项 行动 姓名如果至少有一个邮件信封与其中一个的选项匹配匹配动作指令,接收传入的消息,将副本放入每个匹配的信封中,并自动将信封保存到邮件池中,以供相应的调度程序稍后处理姓名。
[!] from src
地址 |<address>
指定会话只能源自字符串或列表表地址,该地址可以是特定地址或以 CIDR 符号表示的子网。
[!] for any
指定会话可以寻址任何目的地。
action
姓名方法[选项]
relay
将消息中继到另一个 SMTP 服务器。