作者 主題: [最佳]Sendmail 十問考大家....  (閱讀 55516 次)

0 會員 與 1 訪客 正在閱讀本文。

James Wu

  • 鑽研的研究生
  • *****
  • 文章數: 683
    • 檢視個人資料
[最佳]Sendmail 十問考大家....
« 回覆 #60 於: 2003-11-20 18:10 »
關於HACK用法
之前的連結已經不見了=.=
不過找到另一篇給大家參考一下
http://www.linux-sec.net/Mail/etc.mail/sendmail.check_local.mc
引用
dnl =============== Added check_local-5.0 ===========================
dnl
dnl   http://www.Linux-Sec.net/Mail/etc.mail/check_local.txt
dnl   http://www.digitalanswers.org/check_local
dnl
dnl
dnl check_local definition of headerchecks ( option already turned on )
dnl -- no effect in 8.12.3
dnl -- define(_HC_SWITCH_)
dnl -- define(`_REGEX_LOCALNUMS_')dnl
dnl -- define(`_CHECK_HEADER_RECEIVED_')dnl
dnl -- define(`_CHECK_HEADER_FROM_')dnl
dnl -- define(`_CHECK_MESSAGE_ID_')dnl
dnl
HACK(check_header, `Received', `HRC,,,HRCCNT', `', `parse_received', `+header', `!general', `', `1', `', `"552 Spammer $&{client_addr} $&f rejected - Bad Received"')dnl
HACK(check_header, `Message-Id', `HMI,HMIPARSE,HMIDNS,HMICNT', `test_message_id', `parse_message_id', `+header', `!general', `dns_message_id', `1', `1', `"552 spmmer $&{client_addr} $&f rejected - Message Id corrupt"')dnl
HACK(check_header, `From', `HFR', `', `parse_address', `+header', `+all', `', `', `', `"552 Spammer $&{client_addr} $&f rejected - bad From"')dnl
HACK(check_header, `To', `HFR', `', `parse_address', `+header', `+all', `', `', `', `"552 Spammer $&{client_addr} $&f rejected - bad To"')dnl
HACK(check_header, `Reply-To', `HFR', `', `parse_address', `+header', `+all', `', `', `', `"552 Spammer $&{client_addr} $&f rejected - Bad Reply-To"')dnl
HACK(check_header, `Sender', `HFR', `', `parse_address', `+header', `+all', `', `', `', `"552 Spammer $&{client_addr} $&f rejected - Bad Sender"')dnl
HACK(check_header, `Cc', `HFR', `', `parse_address', `+header', `+all', `', `', `', `"552 Spammer $&{client_addr} $&f rejected - Bad Cc"')dnl
HACK(check_header_end, `XSPAM')dnl
dnl
dnl
HACK(check_unknown_header, `/etc/mail/known-headers')dnl
dnl
dnl
HACK(check_local_patterns)dnl
HACK(check_local_tester)dnl
dnl
dnl -- define(`_MD2NAME_')
dnl -- define(`_ACCEPT_MAIL_FROM_OK_')
dnl -- define(`_CLIENT_MUST_RESOLVE_')
dnl -- define(`_CHECK_REGEX_')
dnl
dnl 05-Dec-02 amo Added these two
dnl -- define(`CHECK_LOCALUSER_`)
dnl -- define(`FORCE_LOCALUSER_`)
dnl
dnl HACK(check_local)
HACK(check_local, `CREL,CMD2N,CMFOK,CBASM,CDNSBL,CDREG,CRES,CMREG,CCRHSBL,CFRHSBL,CBFROM', `XSPAM')
dnl
dnl
dnl
dnl =============== Added linux-sec.m4  header_check ===========================
dnl
dnl http://quanta.kyunghee.ac.kr/~dacapo/sendmail/rulesets/quanta_spam-killer_REGEX.m4
dnl http://www.Linux-Sec.net/Mail/etc.mail/linux-sec.m4 ( aka header_chk.m4 modified from above quanta )
dnl
HACK(`linux-sec')dnl    # modify quanta.m4 and check more headers
dnl

這一段就是abel兄提到的HACK用法
可針對標頭做設定以及檢查domain內不在存使用者
http://www.linux-sec.net/Mail/etc.mail/
這裡還有一些範行和howto文件
希望對那些使用sendmail當MTA和spam奮鬥的各位有所幫助 :D

chenrui

  • 懷疑的國中生
  • **
  • 文章數: 78
    • 檢視個人資料
[最佳]Sendmail 十問考大家....
« 回覆 #61 於: 2005-04-09 11:13 »
第3題或許大家較迫切吧.我舉一個自己的方法,是用  procmail , 但方法不是只有一重哦 (這一題還有討論空間...)

# $FORM 請參照精草區中的解釋
# $HOME/.procmailrc or /etc/procmailrc
#
代碼: [選擇]
:0 H
* ^From: .*@yourdomain
* !^Received: .*211\.72\.21[0-1]\..*
{
        :0 fwh
        | (username=${FROM%%@*};if [ -d /home/$username ] ; then formail -I "Bogus: No"; else formail -I "Bogus: Yes" ;fi )

                :0 H
                * ^Bogus: Yes
                /home/abelyang/procmail/bogus
}

第一個 :0 ...判斷來源
第二個 :0 ...判斷帳號是否存在,如果不存在就在 mail header 加一個 "假貨",這一行可以併入第一個 :0 描述,但除了 H 外尚需加幾個 flag
第三個 :0 ...這是大家最常用的

我按照學長的作法在 /etc/procmailrc 作了編輯后,不起作用.我看了事件如下:


procmail: Match on "^From: .*@cnwm"
procmail: Match on ! "^Received: .*211\.72\.21[0-1]\..*"
procmail: Executing " (username=${FROM%%@*};if [ -d /home/$username ] ; then formail -I "Bogus: No"; else formail -I "Bogus: Yes" ;fi )"
procmail: No match on "^Bogus: Yes"

請問是哪里出錯了.謝謝.

為何會在配置是否為假的時候沒有匹配到.謝謝 .