Procmail
Procmail:將票號發送到名為“ticket@domain”的地址?
我希望執行以下操作:
- 使用者發送電子郵件至
1234@domain
- Procmail 辨識
1234@domain
為發送到的電子郵件ticket+1234@domain
- Procmail 配方處理票號並將電子郵件轉發到錯誤跟踪器
大膽是我目前的障礙。
這是一個概念證明。此時,使用者仍需將票證發送至
ticket+1234@domain
電子郵件才能正確轉發:SUBJECT=`/usr/bin/formail -zx "Subject:"` :0fhw * To.*\/([0-9]+)@domain * MATCH ?? ^\/[0-9]+ |/usr/bin/formail -I "Subject: $SUBJECT (Case $MATCH)" :0 !tickets@bugtracker
一些上下文:
創建了一個地址,
ticket@domain,
用於票務處理。目前,使用者發送到ticket+####@domain
,Procmail 配方用於$MATCH
獲取與錯誤跟踪器條目相關的票號並相應地轉發。這行得通。我想做什麼:
防止自動完成錯誤(使用者將
ticket+
在收件人欄位中輸入,錯誤的票證 # 會自動完成)。為了防止這些錯誤,使用者需要發送電子郵件而####@domain
不是.ticket+####@domain
大問題:
我可以使用 Procmail 過濾來自的電子郵件
####@domain
以將其視為來自的電子郵件ticket+####@domain
嗎?.
您的問題似乎相當令人困惑,但是只需將最後一行更改為
!ticket+$MATCH@domain
.您可能還應該使用
^TO_
而不是^To:.*
.:0 * ^TO_\/[0-9]+@domain * MATCH ?? ^\/[0-9]+ { SUBJECT=`/usr/bin/formail -zx "Subject:"` :0fhw |/usr/bin/formail -I "Subject: $SUBJECT (Case $MATCH)" :0 !ticket+$MATCH@domain }
我添加了大括號以將賦值和兩個操作置於條件下,這樣您就不會做不必要的工作來提取
Subject:
或轉發任何MATCH
未設置的內容。(周圍的括號
[0-9]+
沒有做任何有用的事情,所以我把它們去掉了。也許還要確保你有一個理智PATH
而不是硬編碼路徑formail
。)解析收件人資訊的標頭並不完全可靠,因為消息可能以
Bcc:
. 類似地,這假設收件人系統正確檢查信封收件人資訊而不是標頭(儘管在轉發之前替換收件人標頭也不是很難添加)。