我有一些基于 Debian 的虚拟机,它们应该将邮件交给中央主机(smarthost/satellite)。
这仅适用于通过本地主机或sendmail
命令接收的本地生成的邮件,但有一个变化:我不希望本地虚拟机能够将邮件发送到互联网,而只是发送到一些指定的域。(有点像阻止本地主机的开放中继)。
如果不是因为它没有监听本地主机上的正常 SMTP 端口,我本来会使用 ssmtp,所以我使用 Exim。
我在用着update-exim4.conf
:
% cat update-exim4.conf.conf
dc_eximconfig_configtype='satellite'
dc_other_hostnames=''
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost=''
dc_relay_domains='mydomain1.com ; mydomain2.net'
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='mailsrv1.mydomain2.net:mailsrv2.mydomain2.net'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='false'
dc_mailname_in_oh='true'
dc_localdelivery='maildir_home'
我在本地宏中有这个:
% cat exim4.conf.localmacros
CHECK_RCPT_LOCAL_ACL_FILE = /etc/exim4/local_CHECK_RCPT_LOCAL_ACL_FILE.conf
相关 ACL 片段:
% cat local_CHECK_RCPT_LOCAL_ACL_FILE.conf
deny
message = relay not permitted
log_message = XXXXXXXXXXXXXXXXX
!domains = mydomain1.com : mydomain2.net
现在的问题是,它在中继和本地域CHECK_RCPT_LOCAL_ACL_FILE
之后被包含在内,因此在到达我的本地宏之前就完成了。accept
acl_smtp_rcpt
当然,我可以用 替换整个acl_smtp_rcpt
,MAIN_ACL_CHECK_RCPT
但我不想这样做——我必须复制现有的acl_smtp_rcpt
部分,如果在未来升级时它与新自动生成的配置不同步怎么办?