microroad 回復于:2003-08-13 20:10:44 |
2和3可以實現的。用rcpthosts和/var/qmail/control/badmailfrom |
vincentzpf 回復于:2003-08-13 20:25:17 |
那第一和第二可以實現嗎! |
xuezs 回復于:2003-08-14 09:22:22 |
第二、三條一般的MTA應該都可以做到,象QMAIL、SENDMAIL,但第一條就不行了。
我也有類似你的需求,后來,我用另一個MTA:Exim搞定了。Exim的配置非常靈活,可以實現無限的效果。 |
vincentzpf 回復于:2003-08-15 14:43:52 |
我是新手?。?!
那我應該怎樣做呀??! 只要有這樣的功能也可以,就是把發出去和收下來的郵件全部備份。 |
lightwiter 回復于:2003-08-15 18:59:40 |
第一條也可以呀,用戶不多的話,在別名里添加用戶試試 |
vincentzpf 回復于:2003-08-18 08:07:07 |
請教各位,如何做。 |
melonm 回復于:2003-08-18 11:28:19 |
:P
實現復制每刲收到的郵件,可以用PROCMAILF來做。要復制發出的郵件,用sendmail比較困難??梢栽囍胠ibmilter來做. 看看 ~/libmilter/Readme. 另外,用別名的方法是不行的,只能對本地用戶在收件時有效(大概就是在/etc/aliases里對用戶定義幾個收件人吧) |
vincentzpf 回復于:2003-08-18 15:46:22 |
能不能說的詳細一點。 |
melonm 回復于:2003-08-19 11:21:23 |
melonm 回復于:2003-08-19 11:23:26 |
要建立自動復制郵件服務器收到的全部郵件,可以照如下配置:
前提:服務器必須安裝procmail并設之為本地傳遞方式,這在redhat里是缺省設置。安裝procmail一般不是問題。 1. 設置/etc/procmailrc,如下: PMDIR=/etc/procmail LOGFILE=/var/log/pmlog VERBOSE=yes # Set to yes when debugging; default is no INCLUDERC=$PMDIR/rc.localcopy 2. 建立必要的目錄和權限,如下: chmod 400 /etc/procmailrc mkdir /etc/procmail chmod 700 /etc/procmail chmod 600 /etc/procmail/* touch /var/log/pmlog chmod 600 /var/log/pmlog 3. 建立$PMDIR/rc.localcopy文件如下: :0c ! postmaster@mydomain.com # That's exclamation mark, address to forward to. 之后每一發到本服務囂的郵件都會轉發一備份到postmaster。postmaster也可以是非本域的郵件地址。 詳細的日志信息可以/var/log/pmlog里查到,也可以在/etc/procmailrc里將VERBOSE設為no以減少日志大小。 |
vincentzpf 回復于:2003-08-22 11:05:14 |
請教那這樣可否對發出的郵件也可以這樣做嗎! |
vincentzpf 回復于:2003-08-22 19:13:11 |
各位幫忙呀??!我頂?。?! |
melonm 回復于:2003-08-23 01:24:44 |
發出的郵件不行,因為郵件發出時并不使用procmail,可以修改sendmail配置文件使sendmail先發給procmail,處理后再傳給sendmail發出去。具體的方法可以看昨天的精華區。 |
vincentzpf 回復于:2003-08-23 08:09:30 |
謝謝??!
不過我主要是對外面郵件。 |
vincentzpf 回復于:2003-08-25 11:36:12 |
頂 |
sunshine217 回復于:2004-05-22 22:34:52 |
經我這么多天來的研究,發現在sendmail下對outbound的信件作監控是不可能的, 真可惜啊,
inbound 的信件是可以用procmail轉發給一個特定帳戶作監控, outbound的信件則不可能作監控, 最可能的一種方案是修改sendmail 的源代碼, 但是很可惜,有 一個B,寫了這樣的一份東西,說是可以從此將信件轉發給XXX@XXX.XXX, 可惜,它那份修改源代碼的方案里(具體是修改srvrsmpt.c這個文件,)跟本就沒有寫到這個監控帳戶XXX@XXX.XXX, 教人以錯誤的方法以致不能解決問題,反而繞亂視聽,浪費大家的時間,我認為這種B是最可惡的,應該槍斃!!!! 另幾種方案是所謂的修改sendmail.cf這個文件,可惜,這些B也全是瞎扯蛋,沒有一個能夠成功,這些爛B,難道就不能在正式發文之前先作一下測試,以免浪費大家的時間嗎?不成熟的方案比沒有方案更糟.后者不能怎樣,前者卻會害人啊!!!!!! 若真想監控,那么推薦是用postfix ,它只要修改一個參數就可以對inbound及outbound的郵件作監控了,即使這些郵件都轉發到一個監控帳號上去,具體來說,是 在main.cf里加上: always_bclearcase/" target="_blank" >cc = spy@localhost 即可(email地址填寫你的監視郵箱) 即可.很方便啊. 我寫下這些話,希望大家可以少走彎路.!!!!!!!! |
lovesong 回復于:2004-09-03 21:15:25 |
環境
FreeBSD 4.3 Release + sendmail 8.11.5,從www.sendmail.org下載源代碼包sendmail-8.11.5.tar.gz,運行: # tar zxvf sendmail-8.11.5.tar.gz 在當前目錄下生成sendmail-8.11.5目錄 三、步驟 先讓我們來看一個SMTP通信的例子:(參考:rfc821.txt) This SMTP example shows mail sent by Smith at host Alpha.ARPA, to Jones, Green, and Brown at host Beta.ARPA. Here we assume that host Alpha contacts host Beta directly. S: MAIL FROM: R: 250 OK S: RCPT TO: R: 250 OK S: RCPT TO: R: 550 No such user here S: RCPT TO: R: 250 OK S: DATA R: 354 Start mail input; end with . S: Blah blah blah... S: ...etc. etc. etc. S: . R: 250 OK 雖然在一個SMTP過程中可能還有很多其他命令的交互,但核心的就這么三步:MAIL FROM、RCPT TO、DATA。在./sendmail-8.11.5/sendmail下有一個文件srvrsmtp.c,有一個大函數smtp(),它里面的switch循環就是專門處理SMTP通信,即上面例子中R響應。任何一個SMTP 過來的郵件 —— 不論是來自outlook express這樣的郵件客戶端軟件,還是Inte.net上的一臺MAIL HOST,smtp()依次處理對方發送過來的MAIL FROM、RCPT TO、DATA命令,從中獲得send、recipient list、message,統統存入一個struct ENVELOPE變量中,最后調用sendall()再將郵件轉給recipient list。因此,我們只需要在smtp()處理RCPT TO時將我們的監控E-mail Address加進去就可以了。 1、首先在smtp()變量聲明處加入一個變量: int spydone = 0; 2、打開srvrsmtp.c,搜索關鍵字:case CMDRCPT,從這行開始往下的201行是處理recipient list代碼。在該case段的最后一行 ,即break;前,我們插入如下代碼: if(!spydone) { a = parseaddr("", NULLADDR, RF_COPYALL, ' ', &delimptr, e); /* 將xxx@xxx.xxx換成監控e-mail */ a = recipient(a, &e->e_sendqueue, 0, e); e->e_to = a->q_paddr; nrcpts++; spydone = 1; } 保存退出,在./sendmail-8.11.5下運行:make; make install 編譯、安裝。經過修改的sendmail,對于用戶接收發送的郵件,都會發送一份到xxx@xxx.xxx里。 |
lovesong 回復于:2004-09-03 21:16:42 |
環境
FreeBSD 4.3 Release + sendmail 8.11.5,從www.sendmail.org下載源代碼包sendmail-8.11.5.tar.gz,運行: # tar zxvf sendmail-8.11.5.tar.gz 在當前目錄下生成sendmail-8.11.5目錄 三、步驟 先讓我們來看一個SMTP通信的例子:(參考:rfc821.txt) This SMTP example shows mail sent by Smith at host Alpha.ARPA, to Jones, Green, and Brown at host Beta.ARPA. Here we assume that host Alpha contacts host Beta directly. S: MAIL FROM: R: 250 OK S: RCPT TO: R: 250 OK S: RCPT TO: R: 550 No such user here S: RCPT TO: R: 250 OK S: DATA R: 354 Start mail input; end with . S: Blah blah blah... S: ...etc. etc. etc. S: . R: 250 OK 雖然在一個SMTP過程中可能還有很多其他命令的交互,但核心的就這么三步:MAIL FROM、RCPT TO、DATA。在./sendmail-8.11.5/sendmail下有一個文件srvrsmtp.c,有一個大函數smtp(),它里面的switch循環就是專門處理SMTP通信,即上面例子中R響應。任何一個SMTP 過來的郵件 —— 不論是來自outlook express這樣的郵件客戶端軟件,還是Internet上的一臺MAIL HOST,smtp()依次處理對方發送過來的MAIL FROM、RCPT TO、DATA命令,從中獲得send、recipient list、message,統統存入一個struct ENVELOPE變量中,最后調用sendall()再將郵件轉給recipient list。因此,我們只需要在smtp()處理RCPT TO時將我們的監控E-mail Address加進去就可以了。 1、首先在smtp()變量聲明處加入一個變量: int spydone = 0; 2、打開srvrsmtp.c,搜索關鍵字:case CMDRCPT,從這行開始往下的201行是處理recipient list代碼。在該case段的最后一行 ,即break;前,我們插入如下代碼: if(!spydone) { a = parseaddr("", NULLADDR, RF_COPYALL, ' ', &delimptr, e); /* 將xxx@xxx.xxx換成監控e-mail */ a = recipient(a, &e->e_sendqueue, 0, e); e->e_to = a->q_paddr; nrcpts++; spydone = 1; } 保存退出,在./sendmail-8.11.5下運行:make; make install 編譯、安裝。經過修改的sendmail,對于用戶接收發送的郵件,都會發送一份到xxx@xxx.xxx里。 |
lovesong 回復于:2004-09-03 21:35:52 |
想讓所有的mail都監控起來,但又不是把所有用戶發送和接收的mail都復制一份發給管理者!而是按一定的規則,比方只有在USER發特定內容或者附件的情況下才把MAIL送給管理者審查!比如有檢查文件頭的功能,這樣修改擴展名和壓縮文件也逃不過檢查!不知那位大俠有過類似的經歷!指點一下方向!在下感激不盡?。?!我用的是linux9.0+sendmail8.12.2+imap+sasl認證 |
lovegqin 回復于:2005-01-19 10:06:48 |
不是sendmail的FAQ嗎?怎么議論起qmail了,你們有沒有素質??? |