Điểm:0

procmail viết lại dòng chủ đề nếu người dùng nhận email không khớp với bài kiểm tra

lá cờ in

Tôi có một người dùng procmail cục bộ là "bob".

Nếu một email đến và khớp với [email protected] thì bạn không nên thực hiện hành động nào.

Tuy nhiên, nếu một email đến và là [anything_else]@domain.com thì tôi muốn viết lại dòng chủ đề để chèn "[spam]" ở đầu dòng chủ đề.

Vì vậy, nó là đối sánh ngược trên "bob@" (khớp với bất kỳ thứ gì khác ngoài bob@) và chúng tôi giữ nguyên dòng chủ đề ban đầu, chỉ cần thêm "[spam]" vào trước dòng chủ đề đó.

Làm thế nào tôi có thể làm điều đó với Procmail?

Điểm:1
lá cờ ar

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 \<\> 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.orgvà 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.

user227963 avatar
lá cờ in
Không, tôi không có ý tìm kiếm chuỗi ở bất kỳ đâu trong thư - chỉ trong trường TO ... vì vậy nếu TO khớp với [email protected], thì không cần thực hiện hành động nào. NHƯNG, nếu trường TO là bất kỳ thứ gì khác, thì tôi muốn viết lại dòng chủ đề bằng [SPAM] ở đầu. Có lý ?
tripleee avatar
lá cờ ar
Bất kỳ thứ gì hoặc bất kỳ người nhận nào khác trong miền cụ thể này, như câu hỏi của bạn? Ví dụ thứ hai đã chỉ cho bạn chính xác cách thực hiện việc này.
user227963 avatar
lá cờ in
Tôi đã kiểm tra ví dụ thứ hai và nó hoạt động rất tốt - mặc dù có một điều ... nếu dòng chủ đề hoàn toàn trống thì nó vẫn trống - nó không được viết lại ...
tripleee avatar
lá cờ ar
Bạn có thể thay đổi `.+` cuối cùng trong điều kiện Chủ đề: thành `.*` để chụp cả các dòng Chủ đề: trống. (Tuy nhiên, không ai nên gửi tin nhắn với các chủ đề trống.)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.