Sendmail

如何擺脫髮送給不存在子域的郵件?

  • March 15, 2011

我的 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

對於這些地址,結果如下:

  1. 消息user@sendmail_hostname.my.domain.com被拒絕並出現錯誤“未知使用者”(由於LDAPROUTE_DOMAIN我的文件中的附加行sendmail.mc,這是預期的行為)
  2. 消息user@any_other_hostname.my.domain.com被拒絕並出現錯誤“中繼被拒絕”。我有點奇怪,為什麼這次錯誤不同,但仍然可以。在所有消息被拒絕之後,我不太關心將返回給發件人(垃圾郵件)的錯誤程式碼。
  3. 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.comuser@sendmail_hostname.my_other.domain.comuser@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 條目。

引用自:https://serverfault.com/questions/247290