Sie benötigen grundsätzlich Shell-Zugriff auf den Mail-Server, um Procmail dort ausführen zu können. Wenn Sie über die erforderlichen Berechtigungen verfügen, ist es einfach, das zu tun, was Sie möchten, obwohl Ihre Anforderungen leicht unklar sind.
Ich gehe davon aus, dass Sie [groupname]
Nachrichten hinzufügen möchten, groupname-list@example.net
falls diese noch nicht vorhanden sind.
:0fhw * ^From: groupname-list@example\.net\> * ! ^Subject:( Re:)? *\[groupname] * ^Subject:\/.+ | formail -I "Subject: [groupname]$MATCH"
Das f
Flag sagt, dass der Header durch Filtern der Pipeline in der Aktion geändert werden soll. die h
Mittel, auf die sich die Aktion bezieht, gilt nur für den Header (um die Datenmenge zu verringern, die unmodifiziert vor und zurück kopiert wird); und das w
sagt, um zu überprüfen, ob die Aktion erfolgreich ist.
Das \/
spezielle Regex-Token bewirkt, dass die Übereinstimmung nach der Registrierung in der speziellen Variablen erfasst wird MATCH
.
Da Punkt und linke eckige Klammern Regex-Metazeichen sind, benötigen wir einen Backslash, um sie wörtlich abzugleichen. Die \>
Wortgrenze stellt sicher, dass net
es sich nicht um eine teilweise Übereinstimmung in einer längeren Adresse handelt (zum Beispiel ...@example.netcom.whatever
), obwohl sie nicht absolut narrensicher ist ( ...@example.net.uk
z. B. würde sie immer noch passen ).
In jedem Fall müssen Sie die erste Bedingung durch eine Bedingung ersetzen, die genau auf einen Header in den Nachrichten passt, auf die Sie abzielen. Zum Beispiel stimmt das hier nicht überein From: List Name <groupname-list@example.net>
(da der Regex keinen Ausdruck enthält, um den Text durch das <
Zeichen zu überspringen ).
Der Rest sollte trivial sein, hoffe ich.