• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • sendmail的FAQ

    發表于:2007-05-25來源:作者:點擊數: 標簽:
    請問各大俠我要實現以下功能因該如何做。 1.當有用戶從 服務器 發郵件出去時,讓這封郵件也發給管理員一份。監控所有發出的郵件。 2.不接受一些地址來的郵件。 3.發出的郵件址做限定。 不知以上的功能能否實現。 microroad 回復于:2003-08-13 20:10:44 2和3

    請問各大俠我要實現以下功能因該如何做。
    1.當有用戶從服務器發郵件出去時,讓這封郵件也發給管理員一份。監控所有發出的郵件。
    2.不接受一些地址來的郵件。
    3.發出的郵件址做限定。
    不知以上的功能能否實現。

     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了,你們有沒有素質???

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>