我需要使用端口 25 在本地网络(nagios、ups 等)上发送一些无需 sasl 身份验证的通知。
所以我必须阻止网络访问以使用端口 25
我已将其添加到 smtp master 并且正在运行,
smtpd_client_restrictions=permit_mynetworks,reject
但是当有人从外部发送电子邮件(587/465)时出现错误
Client host rejected: Access denied
为什么 ?
也许有其他方法可以做到这一点
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
#smtp inet n - y - - smtpd
#smtp inet n - n - 1 postscreen
#smtpd pass - - n - - smtpd
#dnsblog unix - - n - 0 dnsblog
#tlsproxy unix - - n - 0 tlsproxy
smtp inet n - y - - smtpd
-o syslog_name=postfix/smtp
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=permit_mynetworks,reject
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=permit_mynetworks,reject_unauth_destination
# -o smtpd_relay_restrictions=permit_mynetworks,defer_unauth_destination
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
# -o smtpd_sasl_type=dovecot
# -o smtpd_sasl_path=private/auth
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_auth_only=yes
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_helo_restrictions=
# -o smtpd_sender_restrictions=$mua_sender_restrictions
-o smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
-o smtpd_relay_restrictions=permit_sasl_authenticated,permit_mynetworks,defer_unauth_destination
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
-o smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
-o smtpd_relay_restrictions=permit_sasl_authenticated,permit_mynetworks,defer_unauth_destination
# - smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
#628 inet n - n - - qmqpd
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
#qmgr unix n - n 300 1 oqmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
-o syslog_name=postfix/$service_name
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
postlog unix-dgram n - n - 1 postlogd
#
答案1
标准 Postfix 配置允许从外部接收邮件以及通过端口 25 从本地“受信任”主机/网络发送邮件而无需身份验证。您无需弄乱smtpd_client_restrictions
,默认值非常合理。smtpd_*_restrictions
除了 之外,所有 的默认值均为空smtpd_recipient_restrictions
,即:
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
这正是您需要的。permit_mynetworks
允许来自参数指定的主机的邮件mynetworks
,并rejest_unauth_destination
拒绝所有收件人不是本地的邮件(即收件人域匹配mydestination
、inet_interfaces
、proxy_interfaces
、virtual_alias_domains
或virtual_mailbox_domains
)relay_domains
。
在像您这样的简单情况下,您唯一需要关心的参数是mydestination
列出您的服务器可以接收邮件的所有可能的名称,以及mynetworks
包括允许无需身份验证即可发送邮件的所有主机/网络的 IP 地址。
我建议你从非常简单但有效的配置开始配置 Postfix,然后逐渐添加更复杂的东西。一个好的起点是http://www.postfix.org/STANDARD_CONFIGURATION_README.html显示了最典型的配置。对于你的情况,“本地网络上的 Postfix”可能是你感兴趣的。
master.cf
而且,不要用太多不需要的参数弄乱您的设置,这是很好的做法-o
。相反,main.cf
是放置配置的预期位置。在简单的 Postfix 实例中,master.cf
通常可以保留出厂默认设置。
另外有用的命令是postconf -d
列出默认值所有 Postfix 配置参数,并postconf -n
列出您需要的配置参数明确指定(main.cf
它们可能与默认值相同或不同)。