我正在努力理解以下内容。是否可以有一个 postfix-“仅接收”服务器。例如 mx.example.com 应该只接收特定域列表的邮件。应该不可能通过它发送邮件。我似乎找不到任何解决这个问题的文章。我知道我可以禁用 sasl,但这并不能阻止无需身份验证的发送。这甚至可以完全禁用吗?
答案1
默认情况下,Postfix 允许来自受信任网络的无限制中继:
mynetworks
(默认:参见“postconf -d”输出)比“陌生人”拥有更多权限的“受信任”远程 SMTP 客户端列表。
特别是,“受信任”的 SMTP 客户端被允许通过 Postfix 中继邮件。请参阅
smtpd_relay_restrictions
参数说明。
默认值可能类似于以下内容,至少本地环回网络:
mynetworks = 127.0.0.0/8 198.51.100.100/24 [::1]/128 [fe80::]/64
默认值为smtpd_relay_restrictions
:
permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination
permit_mynetworks
当客户端 IP 地址与 中列出的任何网络或网络地址匹配时,允许请求$mynetworks
。
因此,最简单的方法是permit_mynetworks
从该列表中删除。(或者可以设置mynetworks
不包括127.0.0.0/8
,但这可能会导致其他问题。)
答案2
第一个也是最简单的方法:
创建 iptables 规则以阻止所有外发电子邮件。示例:
iptables -A OUTPUT -p tcp --dport 25 -j DROP
但您也需要丢弃所有出站流量。您可以使用默认策略执行此操作:
iptables -P OUTPUT DROP
或者(更好的)默认策略是接受所有并在链末尾删除规则。并且您需要接受所有已建立和相关的流量。规则的反弹将如下所示:
iptables -P OUTPUT ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport 25 -j DROP
iptables -A OUTPUT -s <type_host_ip> -j DROP
这只是规则集的一部分!!!您需要允许所有出站 IMAP 和 POP3 流量以及其他流量,例如 SSH!!!
第二种方法:
创建运输地图:
> /etc/postfix/transport
在此文件中添加以下内容:
your_domain:
* local:some_local_user
每个域一行。
添加/etc/aliases
此字符串:
some_local_user: /dev/null
在main.cf
:
luser_relay = some_local_user@your_domain.tld
transport_maps = hash:/etc/postfix/transport
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
逐个运行:
postmap /etc/postfix/transport
postmap /etc/aliases
service postfix reload
您可以使用拒绝动作图将拒绝信息发送回给用户。
用以下方式替换运输地图:
your_domain:
* error: not allowed!