Pine and Outgoing Filters
Article replaced 9/5/05
One mailing list I'm on requires that all posts have a signature block; it even requires additional information not found in my normal signature. The problem is, I rarely remember to bother playing that game, especially after a big bulk delete of quoted material. So, my options were either one hell of a neurosurgeon to fix my memory issues, or to find a way to force outgoing mail, but only for that list, to forcefully have a specific signature block.
I use "pine" on unix, which I'm sure will elicit a crowd of laughter. Okay, done? So, pine does have the ability to send outbound messages through a filter. Normally, this is an optional step, and allows people to do things like set up GPG signatures on outbound mail. I'm using that hook to handle signatures.
#! /usr/local/bin/perl5
# PINE .pinerc:
#sending-filters=/home/jfesler/bin/sending-filter _TMPFILE_ _RECIPIENTS_
my $tmpfile = shift @ARGV;
die "Missing tmpfile" unless (-f $tmpfile);
open(MESSAGE,">>$tmpfile");
if (scalar grep(/\@st1100.com/,@ARGV)) {
addsig("/home/jfesler/.signature.stoc");
}
sub addsig {
my($sig) = @_;
unless(open(SIG,"<$sig")) {
print STDERR "Missing $sig : $!";
sleep 3;
return;
}
print MESSAGE "-- \n";
while(<SIG>) {
print MESSAGE;
}
close SIG;
}
These do a few things; 1: they set up logging. 2: they match one specific destination, and if found, append a signature file (in this case, .signature.stoc) at the end. And, lastly, it outputs *only* the message body (not the header) to "stdout". Pine will do unhappy things if you output a header, so don't do that.
Originally published: 2005-09-03 19:14:00 -0700, by jfesler