โดยทั่วไปคุณจำเป็นต้องเข้าถึงเชลล์บนเซิร์ฟเวอร์อีเมลเพื่อเรียกใช้ 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 ไม่ได้มีการแสดงออกที่จะข้ามข้อความขึ้นผ่าน < ตัวอักษร)
ส่วนที่เหลือควรจะเข้าใจเล็กน้อยฉันหวังว่า