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