=item B<--delay>
-Length of delay (man at for details of specification)
+Length of delay (man at for details of specification; Debian systems
+see /usr/share/doc/at/timespec)
=item B<--email>
=head1 EXAMPLES
+The following entry in your procmailrc (or similar) will do the dirty
+work:
+
+ :0 Hhbw
+ * !Message-Id: .*delay[0-9]+@
+ * ^TO \/you\+de[^@]+
+ |delay_mail --mailto you@foo.com --enqueue --email --delay $MATCH
+
+ delay_mail --list;
+
+and
+
+ atq;
+
+will tell you that things are queued up and ready to go.
+
+You can then bounce messages that you want to deal with later to
+you+delay+10=30am_tomorrow@foo.com or similar, and you'll receive the
+message again at 10:30 AM tomorrow to deal with.
=cut
GetOptions(\%options,'debug|d+','help|h|?','man|m',
'list|l','dequeue=s','process|p=s','enqueue|e',
+ 'queue=s',
'delay|D=s','email|E',
'mailto|mail-to|M=s',
);
die "Unable to parse $options{process}";
}
# munge the message id
- my ($message_id) = $q_e->{email} =~ m/^Message-Id:\s*(.+)/;
+ my ($message_id) = $q_e->{email} =~ m/^Message-Id:\s*(.+)/mi;
if (not $message_id =~ s/\@/delay$q_e->{entry}@/){
$message_id =~ s/(\w)/delay$q_e->{entry}$1/;
}
- $q_e->{email} =~ s/^(Message-Id:\s*)(.+)/$1$message_id/;
+ $q_e->{email} =~ s/^(Message-Id:\s*)(.+)/$1$message_id/mi;
# send the message
my $sendmail_fh;
open($sendmail_fh,'|-','/usr/sbin/sendmail',$q_e->{mailto}) or
die "Unable to open sendmail to send message";
print {$sendmail_fh} $q_e->{email};
- close($sendmail_fh);
- waitpid(-1,0);
- if ($?) {
- print STDERR "Sendmail failed with $?\n";
- exit $?;
- }
+ close($sendmail_fh) or
+ print STDERR "Sendmail failed with $?\n" and
+ exit $?;
unlink("$options{queue}/$options{process}");
}
else {