我有两个运行 sendmail 的盒子并且配置如下:
- MTA 接受外界连接(
mta.xyz.com
) - MDA 接受来自内部网络的连接并将其存储在用户邮箱中(
mda.xyz.com
)
MTA 不存储任何电子邮件,它将所有邮件转发给 MDA。
现在,假设有一封电子邮件发送到一个不存在的帐户[email protected]
:
- MTA 接受收件人并打开与 MDA 的 lmtp 连接。
- MDA 以 SMTP 550 用户未知错误拒绝电子邮件。
- MTA 使用从 MDA 收到的 SMTP 550 拒绝原始电子邮件。
- MTA 关闭连接。
- MTA 向邮政局长发送电子邮件,通知 MDA 因错误 550 用户未知错误而拒绝了一封电子邮件
流程似乎合理。电子邮件在原始连接中被拒绝,错误为 550,并且发件人(垃圾邮件发送者)正确收到有关该问题的通知。但令我困扰的是,MTA 正在将每封被拒绝的电子邮件都发送给postmaster
,这相当于每天有几十封垃圾邮件。MDA 不会发送任何内容,它只是拒绝电子邮件。我很高兴他们俩都将拒绝记录在日志中,但我如何说服 MTA 忽略它从 MDA 收到的 550 用户未知错误?
我最初的想法是只接受特定的电子邮件地址,但为了接受电子邮件,MTA 必须设置为使用xyz.com
其本地域。这意味着任何 mailertables 和访问文件都会被跳过(据我所知)。
因此,我现在正在考虑向 MTA 添加一些 sendmail 规则,以便只接受特定收件人的电子邮件。我希望如果 MTA 首先拒绝它们,它就不会费心向邮政局长发送任何内容。
你会怎么做?有人能帮忙制定 sendmail 规则吗?
MTA 配置:
DOMAIN(generic)
LOCAL_DOMAIN(`xyz.com')
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
dnl FEATURE(local_lmtp)
define(`confDOMAIN_NAME', `xyz.com')
(... some cert-related and other unrelated config ...)
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')
define(`MAIL_HUB', `mda.xyz.com.')
define(`SMART_HOST', `mda.xyz.com.')
define(`confFORWARD_PATH', `')
dnl MAILER(local)
MAILER(smtp)
MTA 的访问文件:
Connect:[127.0.0.1] OK
To:xyz.com RELAY
MDA 配置:
DOMAIN(generic)
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')
FEATURE(blacklist_recipients)
FEATURE(`use_cw_file')
FEATURE(`smrsh')
dnl FEATURE(local_lmtp)
dnl FEATURE(mailertable, `hash -o /etc/mail/mailertable')
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')
FEATURE(`local_procmail_lmtp')
(... some cert-related and other unrelated configs ...)
define(`confNO_RCPT_ACTION', `add-to-undisclosed')
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')
MAILER(local)
MAILER(smtp)
MAILER(procmail)
MDA 的访问文件:
To:xyz.com OK
From:192.168 OK
MDA 的虚拟用户表:
# In 'aliases' those are redirected to procmail
[email protected] user1-xyz-com.virtual
[email protected] user2-xyz-com.virtual
MDA 的本地主机名:
xyz.com
somesubdomain.xyz.com
答案1
结果比我最初想象的要简单得多。只需确保您的 中有以下内容sendmail.cf
:
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access' `relaytofulladdress')
FEATURE(blacklist_recipients)
请注意relaytofulladdress
。
现在您可以有选择地接受特定地址并拒绝其余地址access
:
Connect:[127.0.0.1] OK
To:[email protected] RELAY
To:[email protected] RELAY
To:xyz.com REJECT
请注意Connect
接受本地电子邮件以及postmaster@
接受任何管理电子邮件的条目(如果您使用它们,其他电子邮件也类似webmaster@
)。