This module implements some general header rewriting functions, including adding, dropping, and renaming headers and replacing header contents. It takes one configuration directive:
Specify an action on the header HEADER. FUNCTION can be any of the following: drop deletes a header, rename renames the original header to X-Original-HEADER retaining the same value, ifempty adds a header with content CONTENT if and only if the message doesn't already contain a header HEADER, replace replaces all existing HEADER headers with one containing CONTENT, prepend adds CONTENT to the beginning of the first header HEADER or creates a new header HEADER with content CONTENT if none already exists, and reject returns an error if HEADER is present in the incoming message.
HEADER
FUNCTION
CONTENT
CONTENT can contain various special variables: $n will be replaced with the name of the running program, $v will be replaced with the version of News::Gateway, and $i will be replaced with a unique identifier formed from the current time and the process ID. $$ will be replaced with $, so to put a literal dollar sign in a header, you should use $$.
$n
$v
$i
$$
$
For example, suppose you have a configuration file with the following directives:
header organization add SNAP header message-id rename header sender drop header comment replace $n $v header subject ifempty no subject (thread id $i)
and suppose you have an incoming message with the headers:
Organization: Restaurant Reviews Message-ID: <123142@bar.org> Sender: foo@bar.org Comment: Hello Comment: Hello again
After the headers module runs, the message will have a header of:
Organization: Restaurant Reviews Organization: SNAP X-Original-Message-ID: <123142@bar.org> Comment: PROGRAM VERSION Subject: no subject (thread id ID)
where PROGRAM is the name of the running program (ie, $0), VERSION is the version of News::Gateway, and ID is a unique identifier as described above.
PROGRAM
$0
VERSION
ID
This module may fail and call error() with the following message while reading the configuration directives:
A rewrite action was specified that isn't among those that are supported. This probably indicates a typo.
This module may fail in one way:
A header that was associated with a reject action in a configuration directive was present in the incoming message. Note that the header will be given in all lowercase.
As a side note, if you're constructing a robomoderator for a newsgroup, dropping or renaming the Path header in incoming messages is highly recommended. It turns out that some news servers will add a Path header with their hostname before remailing the message to a moderator, and if you keep that Path header when you post, the article will never propagate back to the site of the original poster.
To install News::Gateway, copy and paste the appropriate command in to your terminal.
cpanm
cpanm News::Gateway
CPAN shell
perl -MCPAN -e shell install News::Gateway
For more information on module installation, please visit the detailed CPAN module installation guide.