作者 主題: [教學]百年問題之三-- 使用 procmail 做寄出備份  (閱讀 70119 次)

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

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
這或許稱不上百年問題吧~~ :roll: 我的感覺並沒有中文處理等來得難

這篇文章我只介紹寄出備份,至於寄出過濾請依自己的功力發揮了
寄出備份的做法很多,至少我就看過四種 ,但是有三種都會有 delay time ,
用 procmail 也會有一點點微不足道的 delay time, 因為一封信要經過兩次的 sendmail process

開始前請先做好現行 sendmail 環境的備份工作,以免出包~~
其中最重要的 .mc 及 .cf 別漏了,
此處我們還會再用到, 以本例而言,請將 sendmail.cf 改為 sendmail.cf.1
以供 procmail 使用

1. sendmail.mc
編輯 sendmail.mc 檔,在
MAILER(smtp)dnl
這一行後加上後面內容:
代碼: [選擇]

MAILER(`procmail')

LOCAL_CONFIG
CP PROCMAIL

LOCAL_RULE_0
R$*                             $: <> $1                        mark all
R<> < @ $* > $*                 $: < @ $1 > $2                  skip route-addr
R<> $* < @ $* . PROCMAIL . >    $: $>3 $1 @ $2                  already filtered
R<> $* < @ PROCMAIL . >         $: $1                           already filtered
R<> $* < @ $* . >               $: <> $1 < @ $2 >               remove dot
R<> $* < @ $* >                 $: $1 < @ $2 . PROCMAIL . >     send to procmail
R<> $*                          $: $1 < @ PROCMAIL . >          send to procmail

以上請注意 <TAB> 鍵, $: 前的空白是 TAB 鍵哦,而後的像
mark all,skip route-addr..得也都是 TAB 鍵區隔,
再用 m4 做出 sendmail.cf 檔,而您的 sendmail.mc 要支援 mailertable,
也就是下面的內容
代碼: [選擇]
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl

2. 編輯 mailertable 檔
引用
PROCMAIL        procmail:/etc/procmailrc_out_filter
.PROCMAIL       procmail:/etc/procmailrc_out_filter                            

記得 makemap 即可...mailertable 是做什麼的也不要問我哦~~夜深了

3. 設定 /etc/procmailrc_out_filter
代碼: [選擇]
PATH=$PATH
SHELL=/bin/sh
LOGFILE=/etc/mail/procmail_out.log
VERBOSE=ON

:0 H
| sendmail -C /etc/mail/sendmail.cf.1 -oi -t copy_mail)


其中 copy_mail 使用一個收件者,其他的處理就和 進信的一樣,唯一要注意的是
所 call 的這個 sendmail -C 舊的cf ...

什麼? 就這樣....沒有錯,至少我用都沒有問題.大家會不會有問題我就不知了,
主要跟你的 sendmail.mc 有很大的關係吧 (mailertable 那一項莫忘)
要做寄出過濾條件就寫在後面,但請記得,用 pipe (|) 轉給正常的 sendmail -C 舊cf...
不然會一直 queue 住,因為沒有 mailer

astaka

  • 憂鬱的高中生
  • ***
  • 文章數: 164
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #1 於: 2003-08-15 10:28 »
:oops:  :oops: abelyang大大,感謝你post了這麼詳練的文章,我會試試看的,但我會先把m4裡的東東給搞懂,procmail又是怎麼和sendmail接在一起的,感謝你又做了一篇那麼詳細的解說(好像特別post給我的 :oops:  :oops: )...還是再次感謝你囉~

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #2 於: 2003-08-15 17:29 »
引述: "astaka"
:oops:  :oops: abelyang大大,感謝你post了這麼詳練的文章,我會試試看的,但我會先把m4裡的東東給搞懂,procmail又是怎麼和sendmail接在一起的,感謝你又做了一篇那麼詳細的解說(好像特別post給我的 :oops:  :oops: )...還是再次感謝你囉~


嗯~自己多研究才能學得多~~
有些部份我也是看 google ,一個一個查,點到二十幾頁都還在看~
當然,不是每一個 link 都有看,但是找答案,找方法有時的確像是大海撈針
不過當然只是啟發我而以~~因為都沒有找到一個直接的答案
我並沒有找錯 keyword  

至於會貼出來,和 astaka 兄確實有關, 但我想您學習的觀念對了, 一定會去想
為什麼要這樣,為什麼要那樣
之前一直不敢貼的原因是我知道這會對 sendmail 的設定造成影響,沒做好可能會
讓 sendmail 失效, 如此我就罪過了
總之,先用 testbed, 如果完全理解了,會應用了,再套到現行環境較好
不要直接在現行系統試較好

duan

  • 榮譽博士
  • 活潑的大學生
  • ***
  • 文章數: 253
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #3 於: 2003-08-15 20:38 »
abelyang 兄實在太厲害了, 這裡的文章收集一下, 說不定就可以出本書了,
書名就叫 "正常人不知道的 linux 精華吧"   ^^;;;;

// flee....

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #4 於: 2003-08-16 14:33 »
引述: "duan"
abelyang 兄實在太厲害了, 這裡的文章收集一下, 說不定就可以出本書了,
書名就叫 "正常人不知道的 linux 精華吧"   ^^;;;;

既是正常人不知道的~那誰會買呢  :D 呵~
更何況寫書不比在這裏打打文字 ~~
其實國內 Linux 的書巳很多了~倒是較缺乏對某一服務
(如 DNS/MAIL/Web/IDS/MRTG like...等)較深入淺出的專一書籍
(我指國內原著,非翻譯書)
一本書的構成遠比想像來得難呀~
有寫過的一定更能體會的到...

講到 sendmail, 有人對 HACK 這個功能有研究嗎 ?
大家要知道嗎 ? 我看學園裏好像從沒有討論過這個問題 (Sorry, 我今年六月才來報到),
如何在 sendmail.cf 中用 RE 就可以檔掉 SPAM 也是一門學問哦~~
我會的不是只有 procmail , 各種方式大概都有去試過吧

wilson

  • 俺是博士!
  • *****
  • 文章數: 1821
  • 帥氣柴老大
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #5 於: 2004-07-03 03:35 »
今天照這篇文章操作一次~~遇到了問題
不知道abelyang學長能不能指點一 , 二?

maillog出現如下訊息:
引用

Jul  3 02:54:49 ibm sendmail[6024]: AUTH=server, relay=[172.19.106.7], authid=wilsonmau, mech=LOGIN, bits=0
Jul  3 02:54:50 ibm sendmail[6024]: i62IsnTC006024: from=<wilsonmau@172.19.106.11>, size=1202, class=0, nrcpts=1, msgid=<011d01c46066$0cc0a920$076a13ac@mis3>, proto=ESMTP, daemon=MTA, relay=[172.19.106.7]
Jul  3 02:54:50 ibm sendmail[6026]: i62IsnTC006024: to=<wilson@192.168.1.30>, delay=00:00:01, xdelay=00:00:00, mailer=esmtp, pri=30446, relay=192.168.1.30.procmail., dsn=5.1.2, stat=Host unknown (Name server: 192.168.1.30.procmail.: host not found)
Jul  3 02:54:50 ibm sendmail[6026]: i62IsnTC006024: i62IsoTC006026: DSN: Host unknown (Name server: 192.168.1.30.procmail.: host not found)
Jul  3 02:54:50 ibm sendmail[6026]: i62IsoTC006026: to=<wilsonmau@172.19.106.11>, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=32226, relay=172.19.106.11.procmail., dsn=5.1.2, stat=Host unknown (Name server: 172.19.106.11.procmail.: host not found)
Jul  3 02:54:50 ibm sendmail[6026]: i62IsoTC006026: i62IsoTD006026: return to sender: Host unknown (Name server: 172.19.106.11.procmail.: host not found)
Jul  3 02:54:50 ibm sendmail[6026]: i62IsoTD006026: to=postmaster, delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=33250, relay=procmail., dsn=5.1.2, stat=Host unknown (Name server: procmail.: host not found)
Jul  3 02:54:50 ibm sendmail[6026]: i62IsoTC006026: Losing ./qfi62IsoTC006026: savemail panic
Jul  3 02:54:50 ibm sendmail[6026]: i62IsoTC006026: SYSERR(root): savemail: cannot save rejected email anywhere


版本:sendmail-8.12.8-9.90
謝謝.....

wilson

  • 俺是博士!
  • *****
  • 文章數: 1821
  • 帥氣柴老大
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #6 於: 2004-07-03 11:38 »
嗯~~今天早上解決了~
換一台機器就OK了~~是我這邊自己的問題~~sorry啦~
昨天用的那一台是測試用的機器~之前移掉sendmail
做成qmail的mail gateway~
現在又做回sendmail~一來一回可能被我玩壞了~~ :oops:

台灣阿堂

  • 憂鬱的高中生
  • ***
  • 文章數: 185
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #7 於: 2004-07-03 16:48 »
引述: "duan"
abelyang 兄實在太厲害了, 這裡的文章收集一下, 說不定就可以出本書了,
書名就叫 "正常人不知道的 linux 精華吧"   ^^;;;;

// flee....


那是不是不正常的人看的書啊~ :roll:

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #8 於: 2004-07-05 10:06 »
引述: "wilson"
嗯~~今天早上解決了~
換一台機器就OK了~~是我這邊自己的問題~~sorry啦~
昨天用的那一台是測試用的機器~之前移掉sendmail
做成qmail的mail gateway~
現在又做回sendmail~一來一回可能被我玩壞了~~ :oops:


wilson 兄可以發覺,用 procmail 做寄出備份,可朔性可以變得很高
你可以只備某人,或某些特徵就好...
而不用全部備...再找某人 (當然,也可以全部備哦)

wilson

  • 俺是博士!
  • *****
  • 文章數: 1821
  • 帥氣柴老大
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #9 於: 2004-07-05 13:17 »
引述: "abelyang"
引述: "wilson"
嗯~~今天早上解決了~
換一台機器就OK了~~是我這邊自己的問題~~sorry啦~
昨天用的那一台是測試用的機器~之前移掉sendmail
做成qmail的mail gateway~
現在又做回sendmail~一來一回可能被我玩壞了~~ :oops:


wilson 兄可以發覺,用 procmail 做寄出備份,可朔性可以變得很高
你可以只備某人,或某些特徵就好...
而不用全部備...再找某人 (當然,也可以全部備哦)


我現在還沒有攪定~~還有一點問題~~

簡單來說~~我有兩台mail server
A為郵件過濾的之後relay到B
B為user收發郵件的mail~~
(當然MX那一端就把信指給A)

現在我在A上面做了filter outgoing/relay mail的功能
條件是發現的SPAM後~~就送到A機器的spammail信箱~~

現在一切都OK~~SPAM被檔下並送到spammail裡~~
不過
mailbox的格式會被破壞掉~~
造成OE無法讀取
引用

您的 '收件匣' 資料夾未被檢查還有多少郵件未閱讀。 無法取得 '收件匣' 在 'www.cju.edu.tw' 上未閱讀的數目 帳戶: 'www.cju.edu.tw', 伺服器: 'www.cju.edu.tw', 通訊協定: IMAP, 伺服器回應: 'STATUS failed: Can't open INBOX (file /var/spool/mail/spammail): not in valid mailbox format', 連接埠: 143, 安全(SSL): 否, 錯誤碼: 0x800CCCD2


我發現送到spammail的mail他的第一行
引用

From wilson@210.70.162.212  Mon Jul  5 09:45:40 2004

會被拿掉~~造成格式不對~~

我還在找原因~

不知道abelyang兄能否指點一,二? ^_^

我還在網路上抓文章~~

現在在讀這一篇~~
http://www.technoids.org/procmailfilter.html#Outgoing

(小弟對sendmail.mc/cf等格式並不熟~~)

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #10 於: 2004-07-05 13:21 »
你的 procmailrc  ? procmail.log ?
我來看看是什麼原因

wilson

  • 俺是博士!
  • *****
  • 文章數: 1821
  • 帥氣柴老大
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #11 於: 2004-07-05 13:50 »
引述: "abelyang"
你的 procmailrc  ? procmail.log ?
我來看看是什麼原因


感謝abelyang學長~~(抱歉剛剛忘記附上設定檔....)

mc檔是照您的方式寫的

/etc/procmailrc_out_filter
引用

LOGFILE=/var/log/procmail_out.log

:0fw: spamassassin.lock
| /usr/bin/spamassassin

:0:
* ^X-Spam-Status: Yes
/var/spool/mail/spammail

:0 # re-send the message
! -oi -f "$@"


/var/log/procmail_out.log(當擋下SPAM時,B機器收不到)
引用

Subject: ****SPAM**** h24892506@mail1.cju.edu.tw
  Folder: /var/spool/mail/spammail                                         2065


/var/log/procmail_out.log(不是SPAM時,B機器可收到)
引用

Subject: h24892506@mail1.cju.edu.tw
  Folder: /usr/sbin/sendmail -oi -oi -f                                     953

chenrui

  • 懷疑的國中生
  • **
  • 文章數: 78
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #12 於: 2004-07-07 19:20 »
wilson 兄可以發覺,用 procmail 做寄出備份,可朔性可以變得很高
你可以只備某人,或某些特徵就好...
而不用全部備...再找某人 (當然,也可以全部備哦)

abelyang 學長可否告知如何實現備份個人發出的郵件,謝謝.

曾見過,有個公司作到用文件來實現備份(表達得不好,就是說備份時調用了文件,也就是說想設置將 A用戶所有接收到發出的郵件都轉到 B用戶時,只是在一個文件里設置就行了.)現在把那家公司實現的過程貼出來

只要在backupfile內設定, 那個用戶發出郵件轉寄一份給另一個帳戶
eg. auser@abc.com:buser@abc.com
即從auser@abc.com發出郵件會轉寄一份給 buser 的帳戶

我覺得這樣比較方便,但不知如何實現,abelyang 學長能否告知如何實現這個功能?

wilson

  • 俺是博士!
  • *****
  • 文章數: 1821
  • 帥氣柴老大
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #13 於: 2004-07-07 21:32 »
引述: "abelyang"
你的 procmailrc  ? procmail.log ?
我來看看是什麼原因


嘻嘻~~用formail解決了~~
真高興阿~~哈哈哈~~謝謝abelyang學長
本來是要用qmail做的~~但是沒找到qmail filter outgoing的方法
現在終於成功了~~

真是感謝大家....... :o

chenrui

  • 懷疑的國中生
  • **
  • 文章數: 78
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #14 於: 2004-07-08 09:25 »
wilson學長,能否將你的實現過程貼出來?還有能否說下如何實現備份個人的所有收發與接收的郵件.謝謝.

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #15 於: 2004-07-08 09:52 »
wilson 表現的真讚! 沒話說,懂得自己研究,找資料
(這是不是我的推辭呀 ! 因為沒幫到你,最近太忙 )
wilson 的問題是 mail 的 header 被切掉 ..用 formail 可以
補回來,我想應是這樣吧 ...
不然就是用 formail 先存起來,再用 pipe (|) 重送這個檔案也可以解


至於 chenrui 兄,先問您幾個問題哦,請見諒:
您懂 procmail ? (多 Search 本站 procmail 可找到一堆)
您懂 sendmail ? 上面教的設定您做到了嗎 ?

如果上兩點您是了解的,應不難解這個問題.

代碼: [選擇]

FROM=`formail -zxFrom: | sed -e 's/.*<\(.*\)@.*/\1/g'`

:0 h
| sendmail -C /etc/mail/sendmail.cf.1 -oi -t ${FROM}_other_backup_account)


類似的做法即可,至於 wilson 兄碰到的問題,我想由他來為您解釋
會較好...( mail header 經過 procmail 會掉的問題)

wilson

  • 俺是博士!
  • *****
  • 文章數: 1821
  • 帥氣柴老大
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #16 於: 2004-07-08 10:24 »
引述: "abelyang"
wilson 表現的真讚! 沒話說,懂得自己研究,找資料
(這是不是我的推辭呀 ! 因為沒幫到你,最近太忙 )
wilson 的問題是 mail 的 header 被切掉 ..用 formail 可以
補回來,我想應是這樣吧 ...
不然就是用 formail 先存起來,再用 pipe (|) 重送這個檔案也可以解


哈~~說不上研究啦~~我只是...上網找找資料..然後貼過來而已.. :oops:
引用

:0 fhw
| ${FORMAIL} -I "From " -a "From "

procmail和formail實在是很大的學問~~懂得用的話可以做很多事...... :o

chenrui

  • 懷疑的國中生
  • **
  • 文章數: 78
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #17 於: 2004-07-08 16:20 »
[root@sn mail]# /etc/rc.d/init.d/sendmail restart
Shutting down sendmail: [  OK  ]
Shutting down sm-client: [FAILED]
Starting sendmail: 554 5.0.0 /etc/mail/sendmail.cf: line 984: invalid rewrite line "R*                             : <> 1                        mark all" (tab expected)
554 5.0.0 /etc/mail/sendmail.cf: line 985: invalid rewrite line "R<> < @ * > *                 : < @ 1 > 2                  skip route-addr" (tab expected)
554 5.0.0 /etc/mail/sendmail.cf: line 986: invalid rewrite line "R<> * < @ * . PROCMAIL . >    : >3 1 @ 2                  already filtered" (tab expected)
554 5.0.0 /etc/mail/sendmail.cf: line 987: invalid rewrite line "R<> * < @ PROCMAIL . >         : 1                           already filtered" (tab expected)
554 5.0.0 /etc/mail/sendmail.cf: line 988: invalid rewrite line "R<> * < @ * . >               : <> 1 < @ 2 >               remove dot" (tab expected)
554 5.0.0 /etc/mail/sendmail.cf: line 989: invalid rewrite line "R<> * < @ * >                 : 1 < @ 2 . PROCMAIL . >     send to procmail" (tab expected)
554 5.0.0 /etc/mail/sendmail.cf: line 990: invalid rewrite line "R<> *                          : 1 < @ PROCMAIL . >          send to procmail" (tab expected)
[FAILED]



這是 /etc/mail/sendmail.mc 的部份內容

dnl FEATURE(masquerade_envelope)dnl
dnl #
dnl # masquerade not just @mydomainalias.com, but @*.mydomainalias.com as well
dnl #
dnl FEATURE(masquerade_entire_domain)dnl
dnl #
dnl MASQUERADE_DOMAIN(localhost)dnl
dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl
dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl
dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
MAILER(smtp)dnl
MAILER(`procmail')

LOCAL_CONFIG
CP PROCMAIL

LOCAL_RULE_0
R$*                             $: <> $1                        mark all
R<> < @ $* > $*                 $: < @ $1 > $2                  skip route-addr
R<> $* < @ $* . PROCMAIL . >    $: $>3 $1 @ $2                  already filtered
R<> $* < @ PROCMAIL . >         $: $1                           already filtered
R<> $* < @ $* . >               $: <> $1 < @ $2 >               remove dot
R<> $* < @ $* >                 $: $1 < @ $2 . PROCMAIL . >     send to procmail
R<> $*                          $: $1 < @ PROCMAIL . >          send to procmail
dnl MAILER(procmail)dnl


編輯 mailertable 檔
引言回覆:
PROCMAIL procmail:/etc/procmailrc_out_filter
.PROCMAIL procmail:/etc/procmailrc_out_filter  

記得 makemap 即可

我 makemap 的時候是用下面的命令的.不知有沒有錯

[root@sn mail]# makemap hash /etc/mail/mailertable < /etc/mail/mailertable.db
makemap: /etc/mail/mailertable: line 1: line too long (1024 bytes max)
makemap: /etc/mail/mailertable: line 2: line too long (1024 bytes max)
makemap: /etc/mail/mailertable: line 3: line too long (1024 bytes max)
makemap: /etc/mail/mailertable: line 4: line too long (1024 bytes max)
makemap: /etc/mail/mailertable: line 5: line too long (1024 bytes max)
makemap: /etc/mail/mailertable: line 6: line too long (1024 bytes max)
makemap: /etc/mail/mailertable: line 7: line too long (1024 bytes max)
makemap: /etc/mail/mailertable: line 8: line too long (1024 bytes max)
makemap: /etc/mail/mailertable: line 9: line too long (1024 bytes max)
makemap: /etc/mail/mailertable: line 10: line too long (1024 bytes max)
makemap: /etc/mail/mailertable: line 11: line too long (1024 bytes max)
makemap: /etc/mail/mailertable: line 12: line too long (1024 bytes max)
[root@sn mail]#

abelyang 學長能否幫我分析下是什麼問題?

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #18 於: 2004-07-08 16:23 »
你....你...
 :cry: 請你回頭..從第一篇開始看,自己犯什麼錯...

wilson

  • 俺是博士!
  • *****
  • 文章數: 1821
  • 帥氣柴老大
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #19 於: 2004-07-08 16:46 »
引述: "chenrui"

[root@sn mail]#
makemap hash /etc/mail/mailertable < /etc/mail/mailertable.db


這行有沒有錯阿?!

chenrui

  • 懷疑的國中生
  • **
  • 文章數: 78
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #20 於: 2004-07-08 16:57 »
abelyang 學長,你說的第一篇是指百年問題之一嗎?還是別的.謝謝

chenrui

  • 懷疑的國中生
  • **
  • 文章數: 78
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #21 於: 2004-07-08 18:52 »
不好意思,問題也解決.謝謝.

chenrui

  • 懷疑的國中生
  • **
  • 文章數: 78
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #22 於: 2004-07-08 19:59 »
abelyang兄,能否解釋下你說的代碼的意思?

是否將這兩句代碼直接加入到 /etc/procmailrc_out_filter 這個文件嗎?

FROM=`formail -zxFrom: | sed -e 's/.*<\(.*\)@.*/\1/g'`

:0 h
| sendmail -C /etc/mail/sendmail.cf.1 -oi -t ${FROM}_other_backup_account)


其中 {FROM}_other_backup_account 就如何使用呢

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #23 於: 2004-07-12 10:39 »
chenrui 兄..
給您一個建議,自己先研究一下
procmail / formail / shell script 等..
以你的方式,是做不出來的,因為你連
FROM=`formail -zxFrom: | sed -e 's/.*<\(.*\)@.*/\1/g'`
請先搞懂收信時的 procmail 處理的方法,
再來想寄信時的問題
formail 何用 ?
sed 在做什麼 ?
` ` 何解 ?

從您過去的文章可知..你求知的方法有問題
您過去貼的問題,若有用心看 sendmail.cf 中的註解,自己就可以解決了

chenrui

  • 懷疑的國中生
  • **
  • 文章數: 78
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #24 於: 2004-07-12 16:53 »
好的.謝謝 abelyang 學長.

chenrui

  • 懷疑的國中生
  • **
  • 文章數: 78
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #25 於: 2004-07-18 13:47 »
abelyang 學長 ,有個問題請教,我在兩臺 linux server 上試過你的用 procmail 作寄出備份的方案是可行的,但有個問題,就是我按照你的方案實施了之後,我想用別名時就出錯了.

情況如下:
[root@cnwm etc]# vi aliases
jefly:  jefly,testmail

[root@cnwm etc]# newaliases
/etc/aliases: line 85: jefly... cannot alias non-local names

請問這是什麼原因呢?應如何解決.

還有,我在 $ home 下設置 .procmailrc 也不成功,
[root@cnwm testmail]# vi .procmailrc

:0 c
* ^From:.*chan@mau.com.hk
! jefly@wm.vicp.net arui@wm.vicp.net

我在 testmail 下設置如上,想法是將 chan@mau.com.hk 發給 testmail@wm.vicp.net 的郵件轉發給 jefly and arui 這兩個用戶,原來在沒有實施 用 procmail 作寄出備份時是可以實現的,但實施了 procmail 寄出備份後就不行了,變成 testmail 一直在收同一封的郵件,而 jefly and arui 用戶就收不到郵件了,這是為何呢?哪里出錯了,謝謝.有請指教.

等待回復,如有需要,我可以開 sshd 讓你連進我的電腦,你幫我看下是什麼問題,好嗎?

謝謝.

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #26 於: 2004-07-19 13:43 »
我不想連進你的 Server 幫你解決問題,而是希望你自己能解決問題,不然你永遠不會 ...(我也不想沒事找事做 :x )
我不知道這幾星期來你 survey 了那些資料,或做了什麼功課,
但好像沒有什麼進展...,你缺一個帶領你的人.
如果你生長在台灣,我們建議您,專程去上 netman 兄的講課,
尤其是 Mail Server 的部份.當然,其他許多老師也不錯的
若您不在台灣,那看看這篇,
http://www.study-area.org/linux/servers/linux_mail.htm
(把這篇的 mc 檔多看看)
我的啟蒙就是這個網站來的,從這裏出發,而後再加上自己的用功
而來.你若不用心好好讀些資料,我今天跟你講這些做法,你也不會
懂為什麼,明天老板再給你一個題目,你也是愣在那而以,不是嗎!?
---------------------------------------------------------
好吧,以上訓話你聽則聽之,不聽則不聽.

以下問題,先不考慮 procmail 寄出備份問題,純以一般的 sendmail
來解讀就好

引用

[root@cnwm etc]# newaliases
/etc/aliases: line 85: jefly... cannot alias non-local names

這個錯誤原因你有沒有查過 ? 還是不知道怎麼查呢 ?
http://www.google.com/search?q=/etc/aliases+cannot+alias+non-local+names&hl=zh-TW&lr=&ie=UTF-8&start=0&sa=N
用 google 不是可以查出一堆 ? 不過可能像大海撈針一樣
(我有時找東西,看上千個也再所不惜,你做了嗎!?)

好,那我們再到 www.sendmail.org 上看看他怎說 :
http://www.sendmail.org/faq/section4.html#4.10
代碼: [選擇]
Subject: Q4.10 -- How can I solve "cannot alias non-local names" errors?
Date: March 24, 1997
I upgraded from my vendor's sendmail to the latest version and now I'm getting these error messages when I run "newaliases":

/etc/aliases: line 13: MAILER-DAEMON... cannot alias non-local names
/etc/aliases: line 14: postmaster... cannot alias non-local names

How can I solve this problem?
Your local mailer doesn't have the "A" flag specified. Edit the Mlocal line in sendmail.cf and add "A" to the flags listed after "F=".

Better yet, if you're running a recent version of sendmail that uses m4 to generate .cf files from .mc files, regenerate your sendmail.cf and see if that fixes the problem. Remember to install the new sendmail.cf and restart the sendmail daemon.


看出來了嗎 ? sendmail 的官網就說了是什麼問題所致了..
不過我猜你可能會有看沒有懂,因為你本來就對 sendmail 架構
不是很了解(有些東西我也不是很了解的).
你去看你的 sendmail.cf 中的 Mlocal 設定,是不是長這樣:

代碼: [選擇]
Mlocal,         P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
                T=DNS/RFC822/X-Unix,
                A=procmail -Y -a $h -d $u

你拿這樣的 .cf 看上面的描述,不知有沒有看懂呢 ? 我猜您是沒有
A= 這一行,所以才會出現 newaliases 出錯,不過 sendmail.cf 中還
有其他地方會有 procmail 的設定,我只列出來在 sendmail.mc 中
要加的句子,至於要加在 mc 檔中的適切位置你自己去調調囉
代碼: [選擇]

...
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
...
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
...


我想,你只要能解的了上面的部份,你的 newaliases /procmail
運作就不會有問題.

至於寄出備份~,那你要更努力一點才行.

chenrui

  • 懷疑的國中生
  • **
  • 文章數: 78
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #27 於: 2004-07-19 17:15 »
abelyang學長你好,我是有找到 sendmail.org 上面說的,我看了,但不太明白
Your local mailer doesn't have the "A" flag specified. Edit the Mlocal line in sendmail.cf and add "A" to the flags listed after "F=".

我的 sendmail.cf 中的內容如下,我就不知那里有錯,所以請教你,你看我的內容是不是有錯.
Mlocal,         P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
                T=DNS/RFC822/X-Unix,
                A=procmail -t -Y -a $h -d $u

而在 sendmail.mc 文件中,我的文件也有你上面列的兩行代碼

define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
:/FEATURE(local_procmail,
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
dnl #
dnl # The -t option will retry delivery if e.g. the user runs over his quota.
dnl #
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db',`hash -T<TMPF> -o /etc/mail/access.db')dnl


但我就不知.這是為何不行了,謝謝你的幫助,近段時間我一直在看 procmailrc 資料,就是想把這個問題解決,但還是不知如何下手,我無法去上 netman 兄的課,所以好希望有人能幫幫我,我會努力的.

abelyang 學長能否再幫我解疑,謝謝

abelyang

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 1097
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #28 於: 2004-07-19 17:33 »
define(`SMTP_MAILER_FLAGS', `A') dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
再加這個試試.不確定你有沒有
用 m4 再做一次 .cf 檔出來

chenrui

  • 懷疑的國中生
  • **
  • 文章數: 78
    • 檢視個人資料
[教學]百年問題之三-- 使用 procmail 做寄出備份
« 回覆 #29 於: 2004-07-19 18:00 »
我加入了這行,define(`SMTP_MAILER_FLAGS', `A') dnl


[root@cnwm etc]# /etc/rc.d/init.d/sendmail restart
Shutting down sendmail: [  OK  ]
Shutting down sm-client: [FAILED]
Starting sendmail: 554 5.0.0 /etc/mail/sendmail.cf: line 39: unknown configuration line "
"
[FAILED]
Starting sm-client: [  OK  ]

就出現這個錯誤,newaliases 時就出現了如下提示:

[root@cnwm etc]# newaliases
/etc/mail/sendmail.cf: line 39: unknown configuration line "
"

但我在 /etc/mail/sendmail.cf 里看了,第 39 行是沒有內容的.
這是什麼錯誤呢?

謝謝.