Sendmail
如何擺脫髮送給不存在子域的郵件?
我的 sendmail 伺服器有小問題,需要您的幫助 :-)
我的情況如下:
使用者郵箱放置在 MS 交換伺服器上,所有進出外部世界的郵件都通過我的發送郵箱轉發。
Exchange server ----- sendmail server ------ Internet
我的伺服器接受一個主要域(例如
my.domain.com
)和少數其他域(讓我們也將其縮小為一個,例如my_other.domain.com
)的消息。使用顯示的縮略sendmail.mc
文件配置 sendmail 後,基本上一切正常,但有一個小問題。我想盡快拒絕發給不存在的收件人的郵件(以避免發送未送達報告),因此我的 sendmail 伺服器對交換伺服器進行 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
被拒絕並出現錯誤“中繼被拒絕”。我有點奇怪,為什麼這次錯誤不同,但仍然可以。在所有消息被拒絕之後,我不太關心將返回給發件人(垃圾郵件)的錯誤程式碼。user@sendmail_hostname.my_other.domain.com
發送給和被拒絕的消息user@any_other_hostname.my_other.domain.com
,錯誤為“未知使用者”,但僅在沒有user@my_other.domain.com
郵箱時(在 Exchange 伺服器上)。如果存在這樣的郵箱,則所有三個地址(即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
僅用於接收消息,從不用於發送。
在配置自述文件中,您將看到使用 MAIL_HUB 將所有傳入郵件重定向到集中式集線器。由於您有 LDAP 路由註釋掉 MAIL_HUB 條目。