如何删除发送到不存在的子域的邮件?

如何删除发送到不存在的子域的邮件?

我的 sendmail 服务器出了点小问题,需要您的帮助:-)

我的情况如下:

用户邮箱放在 MS Exchange 服务器上,所有往返于外界的邮件都通过我的发送邮箱中继。

Exchange server ----- sendmail server ------ Internet

我的服务器接受一个主域(例如my.domain.com)和几个其他域(让我们将其缩小到只有一个,例如my_other.domain.com)的消息。使用下面显示的缩写sendmail.mc文件配置 sendmail 后,基本上一切正常,但有一个小问题。我想尽快拒绝发送给不存在的收件人的消息(以避免发送未送达报告),因此我的 sendmail 服务器向 Exchange 服务器发出 LDAP 查询,验证每个收件人地址。这对两个域都有效,但对子域无效。这样的子域不存在,但有人(我指的是那些狂热的垃圾邮件发送者 :-) 可以尝试这样的地址:

user@any_host.my.domain.com 

或者

user@any_host.my_other.domain.com

对于这些地址,结果如下:

  1. 邮件被user@sendmail_hostname.my.domain.com拒绝并出现错误“未知用户”(由于LDAPROUTE_DOMAIN我的文件中有额外的行sendmail.mc,这是预期的行为)
  2. 邮件user@any_other_hostname.my.domain.com被拒绝,错误为“拒绝转发”。我有点奇怪,为什么这次的错误不同,但仍然没问题。毕竟邮件被拒绝了,我不太关心发件人(垃圾邮件发送者)会收到什么错误代码。
  3. 仅当没有邮箱(在 Exchange 服务器上)时,才会拒绝发送至和的消息,并显示错误“未知用户”。如果存在这样的邮箱,则将接受所有三个地址(即user@sendmail_hostname.my_other.domain.com、和) 。 (在我的文件中添加额外的行不会改变任何内容)user@any_other_hostname.my_other.domain.comuser@my_other.domain.comuser@my_other.domain.comuser@sendmail_hostname.my_other.domain.comuser@any_other_hostname.my_other.domain.comLDAPROUTE_DOMAIN(my_sendmail_host.my_other.domain.com)sendmail.mc

我的缩写sendmail.mc文件如下(sendmail 8.14.3-5)。两个域均列在/etc/mail/local-host-names文件(FEATURE(use_cw_file))中:

define(`_USE_ETC_MAIL_')dnl
include(`/usr/share/sendmail/cf/m4/cf.m4')dnl
OSTYPE(`debian')dnl
DOMAIN(`debian-mta')dnl
undefine(`confHOST_STATUS_DIRECTORY')dnl        
define(`confRUN_AS_USER',`smmta:smmsp')dnl

FEATURE(`no_default_msa')dnl
define(`confPRIVACY_FLAGS',`needmailhelo,needexpnhelo,needvrfyhelo,restrictqrun,restrictexpand,nobodyreturn,authwarnings')dnl
FEATURE(`use_cw_file')dnl
FEATURE(`access_db', , `skip')dnl
FEATURE(`always_add_domain')dnl
MASQUERADE_AS(`my.domain.com')dnl
FEATURE(`allmasquerade')dnl
FEATURE(`masquerade_envelope')dnl

dnl define(`confLDAP_DEFAULT_SPEC',`-p 389 -h my_exchange_server.my.domain.com -b dc=my,dc=domain,dc=com')dnl 
dnl define(`ALIAS_FILE',`/etc/aliases,ldap:-k (&(|(objectclass=user)(objectclass=group))(proxyAddresses=smtp:%0)) -v mail')dnl

FEATURE(`ldap_routing',, `ldap -1 -T<TMPF> -v mail -k proxyAddresses=SMTP:%0', `bounce')dnl
LDAPROUTE_DOMAIN(`my.domain.com')dnl
LDAPROUTE_DOMAIN(`my_other.domain.com ')dnl
LDAPROUTE_DOMAIN(`my_sendmail_host.my.domain.com')dnl
define(`confLDAP_DEFAULT_SPEC', `-p 389 -h "my_exchange_server.my.domain.com" -d "CN=sendmail,CN=Users,DC=my,DC=domain,DC=com" -M simple -P /etc/mail/ldap-secret -b "DC=my,DC=domain,DC=com"')dnl

FEATURE(`nouucp',`reject')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')dnl
define(`confTRY_NULL_MX_LIST',true)dnl
define(`confDONT_PROBE_INTERFACES',true)dnl
define(`MAIL_HUB',` my_exchange_server.my.domain.com.')dnl
FEATURE(`stickyhost')dnl

MAILER_DEFINITIONS
MAILER(smtp)dnl

有经验的 sendmail 人士能否建议我如何拒绝发送至那些不需要的子域的消息?

PS 邮箱@my_other.domain.com仅用于接收消息,不能用于发送。

答案1

在里面配置自述文件您将看到使用 MAIL_HUB 将所有传入邮件重定向到集中式中心。由于您有 LDAP 路由,因此注释掉 MAIL_HUB 条目。

相关内容