tomgod 回復于:2003-11-05 17:07:12 |
如果郵件是給你那里tom用戶的,將會直接放在 /var/spool/mail/vpopmail
下,但是| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox 又將信箋完整投遞到了原來的郵箱里(這里好壞且不說),問題在于,即使是那些主題是test的信箋,它依然投遞到了原來的用戶那里去了,我暈呀 |
seacaptain 回復于:2003-11-05 17:13:48 |
1、| preline /usr/local/bin/procmail -t ./.procmailrc 應該改成
| preline /usr/local/bin/procmail -t -m -p ./.procmailrc 否則郵件會發到/var/spool目錄里了 2、過濾后郵件仞然會收到被過濾的郵件。過濾不過濾有什么用? |
artxing 回復于:2003-11-05 17:15:56 |
我測試過的.是不會的.
你們都提到了/var/spool目錄,可我根本沒有設置這個目錄,過濾和這個目錄有什么關系呢? |
artxing 回復于:2003-11-05 17:22:14 |
我講一下原理吧
郵件先在域目錄下找有沒有.qmail-user文件,如果不存在,就去找.qmail-default執行它的內容 我的.qmail-default的內容: [code:1:8fec73f8db]| preline /usr/local/bin/procmail -t ./.procmailrc | /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox[/code:1:8fec73f8db] 則先執行| preline /usr/local/bin/procmail -t ./.procmailrc ,去當前目錄下找.procmail過濾規則文件. .procmail的文件內容: [code:1:8fec73f8db]MAILDIR=./ VERBOSE=off PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin LOGFILE=/var/log/procmail.log :0: * ^Subject:.*test ./spammail/ [/code:1:8fec73f8db] 郵件主題中包含test字符的就被發到./spammail,也就是當前路徑下的spammail目錄中,而不符合這一過濾規則,即主題中不包含test字符的就不會執行這條過濾規則.轉而繼續執行.qmail-default文件中的第二條語句. | /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox 有vdelivermail來決定郵件分發到哪個用戶目錄或者直接bounce 還有一點,我的procmail是在freebsd中ports編譯裝的. |
tomgod 回復于:2003-11-05 17:39:36 |
artxing ,請教一下,你安裝procmail時候有沒有修改什么參數?
還是直接的用./configure就開始編譯安裝了??? 因為默認的安裝狀態下,procmail是將郵件投遞到/var/spool 下的,好象需要修改某個文件里的什么參數,才能支持./Maildir的,可是我一直沒有修改成功(菜鳥一只,莫怪莫怪)。 還有,在.qmail-default里的程序, | preline /usr/local/bin/procmail -t ./.procmailrc | /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox 好象前后二者都將執行,我暈呀,在我這里,過濾也起作用了,可是后一句也起作用了,依然將文件扔進了我的目錄 實在有些不明白,真的希望能有人指點一、二 多謝多謝 |
seacaptain 回復于:2003-11-05 17:39:38 |
我的理解是。所有的郵件都會先被| preline /usr/local/bin/procmail -t ./.procmailrc 處理,
然后在被| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox處理。 2、rpm包安裝的版本默認都是處理非maildir格式的郵箱所以會找/var/spool/目錄了 procmail[5356]: Couldn't renamebogus "/var/spool/mail/vpopmail" into "/var/spool/mail/BOGUS.vpopmail.h1H" 這是/var/log/procmail.log里的原文 |
artxing 回復于:2003-11-05 17:48:01 |
seacaptain的理解沒錯的
郵件就是先被| preline /usr/local/bin/procmail -t ./.procmailrc 處理 處理后剩下的就是不符合過濾規則,再去被| /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox處理 所以不會出現tomgod說的過濾后的郵件也會到用戶目錄里的情況 還有就是,我的procmail是在freebsd下的ports裝的,所以可能它是自動帶了參數編譯的.所以不會出現將郵件投遞到/var/spool/目錄的情況 |
liuwping 回復于:2003-11-06 09:41:39 |
郵件就是先被| preline /usr/local/bin/procmail -t ./.procmailrc 處理
此時如我在 上面的.procmailrc 中有用 SAFECAT (作用是直接將正在過濾的 暫時電郵 MOVE 到指定的目錄可以是MAILDIR 目錄) ,有個問題是 正在運行上面那句時 QMAIL的暫存電郵放在哪里呢? 因為電郵在處理前一定有個 TMP 的暫存電郵的! |
peijun.jiang 回復于:2003-11-06 10:08:50 |
大家有沒有看lifewithqmqail的關于procmail的這一段話:
5.1. 關于 procmail procmail 是一個流行的郵件傳送代理( Message Delivery Agent , MDA). MDA的功能是從MTA為特定用戶或者郵箱接收郵件, 然后按照用戶的要求傳送郵件的程序. procmail 可以用來針對郵件主體或者不同的郵件頭內容過濾郵件. 舉一個例子, 從某個特定的人發來的郵件可以被定向傳送到某個專門為這個人準備的郵箱. 在qmail上應用procmail有兩個技巧. 第一個, procmail 通常被配置成傳送郵件到/var/spool/mail 下的郵箱. 你可以重新設置安裝procmail到缺省的$HOME路徑下, 或者指導用戶不要依賴procmail 投遞郵件到默認的mbox位置. 除非你為$HOME郵件投遞打補丁, 否則, procmail依然會使用/var/spool/mail 作為臨時文件. 另外一個問題是qmail-command和procmail使用的退出碼是不同的. procmail使用的是標準UNIX退出碼: 零代表成功, 非零代表失敗, 失敗的原因由/usr/include/sys/errno.h 定義. qmail-command 使用某個非零碼指示永久錯誤, 其余作為臨時碼. 解決方式可以應用一個小的shell腳本為 qmail-command 翻譯退出碼. 這樣的一個shell腳本曾經在qmail 郵件列表刊登, 現在被存檔在這個位置http://www.ornl.gov/its/archives/mailing-lists/qmail/1998/04/msg00487.html. 同樣的情況, 舊版本的procmail(3.14之前)不能直接傳送郵件給maildir格式的郵箱. 最好的辦法是升級你的procmail到最新版本. 另外一個解決辦法是使用safecat, 這個程序將標準輸入的郵件寫入指定的maildir格式的郵箱. 用戶可以使用 procmail 處方(傳送指令)來使用safecat 保存郵件. 也可以完全跳過procmail, 使用maildrop. 最后, procmail 認為郵件將被接收到mbox格式的郵箱, 常規的qmail傳送程序僅僅包括實際的郵件, 而不包括"From"行. 這里可以使用preline 命令來格式化郵件, 以保證procmail的要求. 上面鏈接的腳本就包括了 preline. 舉一個例子, 假設用戶"dave"希望用procmail來處理他的郵件. 他的系統管理員設置procmail來傳送郵件到默認的$HOME, 并且已經配置好了上面的退出碼翻譯腳本程序, 位置在 /usr/local/bin/qmail-procmail, 那么他的.qmail文件應該是這個樣子的: |/usr/local/bin/qmail-procmail |
liuwping 回復于:2003-11-06 10:20:23 |
這個我看過, 但|/usr/local/bin/qmail-procmail 后如跟 PROCMAIL 文件就運行不了 即 |/usr/local/bin/qmail-procmail -P —M 。/。PROCMAILRC 如這樣就不起作用了! |
liuwping 回復于:2003-11-06 10:23:05 |
在qmail上應用procmail有兩個技巧. 第一個, procmail 通常被配置成傳送郵件到/var/spool/mail 下的郵箱. 你可以重新設置安裝procmail到缺省的$HOME路徑下, 或者指導用戶不要依賴procmail 投遞郵件到默認的mbox位置. 除非你為$HOME郵件投遞打補丁, 否則, procmail依然會使用/var/spool/mail 作為臨時文件.
PROCMAIL 怎樣才可以設定 臨時文件在哪里啊 我目前只知 當運行 | /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox 后, 暫時的電郵在 對應的 MAILDIR 下的 \TMP 下,如果沒有運行這句之前暫時電郵到底在哪里??! |
reidstone 回復于:2003-11-06 14:08:50 |
應該是系統根目錄下的/tmp目錄下吧 |
liuwping 回復于:2003-11-10 18:41:24 |
在qmail上應用procmail有兩個技巧. 第一個, procmail 通常被配置成傳送郵件到/var/spool/mail 下的郵箱. 你可以重新設置安裝procmail到缺省的$HOME路徑下, 或者指導用戶不要依賴procmail 投遞郵件到默認的mbox位置. 除非你為$HOME郵件投遞打補丁, 否則, procmail依然會使用/var/spool/mail 作為臨時文件.
請問這里有講 為$HOME郵件投遞打補丁 怎么打呢,因為我現在也有這個問題存在, 就是總有一封電郵又會返回給我! |
a791223 回復于:2004-02-07 14:14:20 |
我的情況和tomgod一樣,就是產生了過濾但是郵件還是發到用戶名的郵箱里。
加上-m -p參數是什么意思呢,請大家幫助。 |
a791223 回復于:2004-02-07 15:33:52 |
我用的是rpm安裝包,因如何設置才可以用真的過濾掉。 |
chengzhigang 回復于:2004-02-20 11:16:45 |
我也是啊我的情況和tomgod一樣,就是產生了過濾但是郵件還是發到用戶名的郵箱里 |
十二少 回復于:2004-03-03 12:12:26 |
過濾是沒問題,但是郵件都沒有發送到用戶的Maildir/new里面,而是都發送到/home/vpopmail/domains/xxx.com/Maildir里面了,怎么解決?????急?。?! |
jackieyuan 回復于:2004-04-24 17:11:23 |
To install procmail, lockfile and formail: edit Makefile & config.h aclearcase/" target="_blank" >ccordingly and type 'make install'.
Intended configurable options in Makefile are: the install-destinations (primarily BASENAME) and the LOCKINGTEST directories (you can optionally use something like 'make BASENAME=$HOME install' instead). 在Makefile文件里面有以下段落 # BASENAME should point to where the whole lot will be installed # change BASENAME to your home directory if need be BASENAME = /usr # For display in the man pages VISIBLE_BASENAME= $(BASENAME) 希望對大家有幫助。 |
Yicho 回復于:2004-05-24 11:32:10 |
Q: How do I implement a virtual domain in Procmail?
Or, is Procmail even the right tool for this? A: The short answer is no; don't. See the section Why Headers Don't Matter, above. If you stubbornly refuse to take no for an answer, you might want to look at Chris Lindsey's "solution" It is an unfortunate fact that many sites offer "virtual hosting" without providing a robust way to forward mail to the client with all the information intact. A working vitual host setup needs to forward the envelope information of every message to the downstream, so that the recipient information can reliably be recovered, or maintain separate mailboxes for each user at the upstream (not normally a viable or desirable solution). Unfortunately, providers are only slowly realizing why this is necessary, and good information on how to do this right is apparently not easy to come by. If you are having problems with your upstream, persuade them to give you your money back if they can't solve this problem to your satisfaction. |
Yicho 回復于:2004-05-24 11:36:31 |
http://www.xray.mpe.mpg.de/mailing-lists/procmail/1998-04/msg00289.html
這個是sendmail處理域的一個方法,我用的是qmail,暈死。。。 |
kreny 回復于:2004-05-24 13:11:10 |
[quote:17e8b5e5a7="十二少"]過濾是沒問題,但是郵件都沒有發送到用戶的Maildir/new里面,而是都發送到/home/vpopmail/domains/xxx.com/Maildir里面了,怎么解決?????急?。?![/quote:17e8b5e5a7]
當然應該是送到 這個目錄阿~~ 既然用了vpopmail就不再用系統用戶了阿~~ |