Postfix 仅作为特定网络的中继

Postfix 仅作为特定网络的中继

我在使用 Postfix 时遇到了一个奇怪的问题,它让我有点抓狂,因为它似乎有 50% 的时间都在工作,但却没有做出任何改变。

我想要实现的目标:

我在几个不同的外部网络上有许多虚拟服务器,例如 1.2.3.4/24 10.20.30.40/24 11.22.33.44/24

我已经设置了 4 个具有循环 DNS 的 Postfix 服务器,它们都有相同的 main.cf 配置文件。

我只希望那些外部子网中的服务器被允许通过邮件服务器进行中继,不需要用户名或密码。

我读了一些资料,似乎 mynetworks 选项是可行的,但是它似乎只有 50% 的时间有效,即使我将其他 3 台服务器排除在外,只让 1 台邮件服务器在 50% 的时间内运行,我也会收到中继被拒绝错误。

这是正在使用的配置:

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

append_dot_mydomain = no

readme_directory = /usr/share/doc/postfix

smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

myhostname = relay.example.co.uk
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = relay.example.co.uk, localhost.example.co.uk, , localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mynetworks = 1.2.3.4/24
mynetworks = 10.20.30.40/24
mynetworks = 11.22.33.44/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
html_directory = /usr/share/doc/postfix/html
smtpd_error_sleep_time = 2s
smtpd_hard_error_limit = 20
smtpd_recipient_restrictions = permit_mynetworks

我怀疑 mydestination 可能在这里发挥了一定作用,但我们欢迎任何帮助?

答案1

根据 postconf(5) 手册页:

当同一个参数被定义多次时,只记住最后一次。

这意味着你的变量的定义mynetworks应该是这样的:

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 1.2.3.4/24 10.20.30.40/24      11.22.33.44/24

或者

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
 1.2.3.4/24
 10.20.30.40/24
 11.22.33.44/24

或者

mynetworks = 127.0.0.0/8, [::ffff:127.0.0.0]/104, [::1]/128,
 1.2.3.4/24,
 10.20.30.40/24,
 11.22.33.44/24,

相关内容