Yêu cầu của bạn là khá không rõ ràng. Procmail có thể khớp với bất kỳ chuỗi nào, nhưng bạn có thực sự muốn tìm chuỗi ở bất kỳ đâu trong thư không? Và bạn có thực sự muốn bỏ qua các tin nhắn mà không tên miền.com
trong họ cho mục đích của quy tắc này?
:0 HB
* ! ()\<bob@domain\.com\>
* @tên miền\.com\>
{
:0fhw
* ^Chủ đề:\/.+
| formail -I"Chủ đề: [thư rác]$MATCH"
}
Các \<
và \>
ranh giới từ ngăn khớp trên các chuỗi con như tomboy
hoặc tên miền phụ.complete.org
và các dấu ngoặc đơn trống là một thủ thuật vì Procmail rất lạ về các biểu thức chính quy bắt đầu bằng dấu gạch chéo ngược.
Nếu ý bạn là bạn chỉ muốn xem trong các tiêu đề, hãy bỏ HB
từ dòng dấu hai chấm đầu tiên (bạn có thể bỏ dấu h
nhưng đó là mặc định nếu bạn không đặt bất kỳ cờ nào). Nếu bạn muốn khớp một tiêu đề cụ thể, hãy đánh vần nó. Nếu bạn muốn kiểm tra cụ thể người nhận, ^TO_
macro cho phép bạn làm điều đó trong một số tiêu đề khác nhau (Đến:
, Cc:
, v.v.) một cách dễ dàng.
:0fhw
* ! ^TO_bob@domain\.com\>
* ^TO_[^<>@ ]+@domain\.com\>
* ^Chủ đề:\/.+
| formail -I"Chủ đề: [thư rác]$MATCH"
Bởi vì chúng tôi đã bỏ HB
cờ, chúng ta có thể kết hợp hai công thức trước đây với các cờ khác nhau. Thư hai ^TO_
kiểm tra bất kỳ địa chỉ bao gồm bồng bềnh
, tuy nhiên, điều này đã bị loại trừ bởi điều kiện phủ định trước đó.
Điều này vẫn còn một số trường hợp góc có thể cần được khám phá thêm; nếu bạn có thể chỉnh sửa câu hỏi của mình để làm rõ câu hỏi, có lẽ tôi có thể cập nhật câu hỏi này để bao quát nhiều hơn những điều cơ bản.
Mặc dù vậy, SMTP không yêu cầu người nhận phải được đánh vần trong tiêu đề. Trường hợp cổ điển là Bcc:
về cơ bản cũng là cơ chế được sử dụng bởi nhiều danh sách gửi thư. Có lẽ MTA của bạn sẽ đánh vần người nhận trong Đã giao đến:
nhưng nói một cách chính xác, thay vào đó, loại bộ lọc này được triển khai tốt hơn trong MTA.