โดยทั่วไปคุณจำเป็นต้องเข้าถึงเชลล์บนเซิร์ฟเวอร์อีเมลเพื่อเรียกใช้ Procmail ที่นั่น หากคุณมีสิทธิ์ที่จำเป็นการทำสิ่งที่คุณถามนั้นเป็นเรื่องง่ายแม้ว่าข้อกำหนดของคุณจะไม่ชัดเจน
ฉันจะสมมติว่าคุณต้องการเพิ่ม [groupname]
ถึงข้อความจาก groupname-list@example.net
หากยังไม่ได้มีอยู่
:0fhw
* ^From: groupname-list@example\.net\>
* ! ^Subject:( Re:)? *\[groupname]
* ^Subject:\/.+
| formail -I "Subject: [groupname]$MATCH"
f
ธงบอกว่าจะแก้ไขส่วนหัวโดยการกรองผ่านไปป์ไลน์ในการดำเนินการ; h
หมายถึงการกระทำที่นำไปใช้กับส่วนหัวเท่านั้น (เพื่อลดปริมาณข้อมูลที่จะคัดลอกไม่ได้แก้ไขไปมา) และ w
บอกว่าจะตรวจสอบว่าการกระทำที่ประสบความสำเร็จ
\/
โทเค็น regex พิเศษทำให้การจับคู่หลังจากที่จับภาพไปยังตัวแปรพิเศษ MATCH
.
เนื่องจากเครื่องหมายจุดแบบสี่เหลี่ยมจัตุรัสและด้านซ้ายเป็นตัวบ่งชี้ regex เราจึงต้องใช้เครื่องหมายทับขวาเพื่อจับคู่ตัวอักษรเหล่านั้นอย่างแท้จริง \>
ขอบเขตของคำรับประกันได้ว่า net
ไม่ใช่การจับคู่บางส่วนในที่อยู่อีกต่อไป (พูด ...@example.netcom.whatever
) ถึงแม้ว่ามันจะไม่สามารถป้องกันได้ทั้งหมด ...@example.net.uk
ตัวอย่างเช่น).
อย่างไรก็ตามคุณจะต้องแทนที่เงื่อนไขแรกด้วยสิ่งที่ตรงกับส่วนหัวในข้อความที่คุณกำหนดเป้าหมาย ตัวอย่างเช่นที่นี่ไม่ตรงกัน From: List Name <groupname-list@example.net>
(เนื่องจาก regex ไม่ได้มีการแสดงออกที่จะข้ามข้อความขึ้นผ่าน <
ตัวอักษร)
ส่วนที่เหลือควรจะเข้าใจเล็กน้อยฉันหวังว่า