分享

Procmail - 功能強大的 server 端郵件過濾器 -- Jamyy‘s Weblog

 农夫子oice 2007-04-28

Procmail - 功能強大的 server 端郵件過濾器

  • procmailrc 環境變數備忘
  • procmailrc 常用規則備忘 (by samples)
  • 加入別人寫好的條件
  • 利用 procmail 自動回覆信件

環境: Fedora Core 1 + Sendmail 8.12.10 + procmail 3.22

procmailrc 環境變數備忘

LOGFILE 指定 error message 和 diagnostic message 寫入的檔案
LOGABSTRACT all=所有處理過程寫入 LOGFILE; no=不記錄
VERBOSE yes/on=啟用詳細訊息; no/off=關閉詳細訊息
INCLUDERC 引用其他 procmailrc 設定檔

全域設定:

/etc/procmailrc

LOGFILE=/var/log/procmail.log

個人設定:

~/.procmailrc

LOGFILE=$HOME/.procmail_log

procmailrc 常用規則備忘

基本精神: 以正規表示法 (Regular Expression) 透過 egrep 分析郵件內容 (預設不區分大小寫)

#拒收某人的來信
:0
* ^.*From.*someone@somewhere.com
/dev/null

#將某人的來信移到 $MAILDIR/trash 檔案中
:0
* ^.*From.*someone@somewhere.com
trash

# 拒收 undisclosed-recipients
:0
* ^To:.*undisclosed-recipients
/dev/null

#主旨含有 meeting 字串的信另存一份到 $MAILDIR/meeting 檔案中
:0 c
* ^Subject:.*meeting
meeting

#將來自 yahoo.com.tw 的郵件轉寄副本給 someone
:0 c
* ^From.*@yahoo.com.tw
! someone@somewhere.com

#備份所有郵件到 $MAILDIR/backup 檔案
:0 c
backup

#刪除長度大於 1024768 bytes 的信件
:0
* > 1024768
/dev/null

# 拒絕由各ISP 動態 IP relay 過來的信件
:0 BH
* ^Received:.*from.*\(.*(\-|\.).*(\-|\.).*(\-|\.).*\.dynamic\..*
/dev/null

#被 SpamAssassin 判為四星的郵件, 在主旨加上 [SPAM] 字樣
:0
* ^X-SPAM-LEVEL: \*\*\*\*
{

SUBJECT=`formail -x "Subject"`
SUBJECT="[SPAM] $SUBJECT"
:0 Afhw
|formail -I "Subject: $SUBJECT"

}

    ps. man procmailex 可查詢更多範例

加入別人寫好的條件

wget -O /etc/procmailrc.tnc ftp://ftp./Sysop/MAIL/procmailrc
wget -O /etc/procmailrc.alcor http://alcor./topics/email/auto/procmail/spam/tag-contents.html
vi /etc/procmailrc

INCLUDERC=/etc/procmailrc.tnc
INCLUDERC=/etc/procmailrc.alcor

利用 procmail 自動回覆信件

cd /etc/smrsh
ln -s /usr/bin/procmail procmail

cd ~
vi reply.msg

我收到了, 謝謝!

vi .forward

"|exec /usr/bin/procmail"

vi .procmailrc

:0
* !^FROM_DAEMON
* !^X-Loop: service@your.com
| (formail -r -I "Precedence: junk" \
-A "X-Loop: service@your.com" \
-I "From: service@your.com"; \
cat $HOME/reply.msg) | $SENDMAIL -t

.forward 備忘

直接轉到指定信箱, 原信箱不留信件
someone@somewhere.com

轉信, 並留一份在原信箱
\someone@somewhere.com

轉到多個信箱
someone@somewhere.com,somebody@somewhere.com

fetchmail 備忘

fetchmail --smtpname myaccount@local.host -u someone remote.host

在 local.host 擷取 someone@remote.host 的 e-mail 到 myaccount@local.host 郵箱中

Manual Reference Pages - fetchmail (1)


參考資料:

正規表示法:

延伸閱讀:

Posted by Jamyy at 2006年02月16日 11:26

from:  http://cha./blog/archives/2006/02/procmail_server.html#more

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多