GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  EMAIL::FILTER (3)

.ds Aq ’

NAME

Email::Filter - Library for creating easy email filters

CONTENTS

VERSION

version 1.033

SYNOPSIS



    use Email::Filter;
    my $mail = Email::Filter->new(emergency => "~/emergency_mbox");
    $mail->pipe("listgate", "p5p")         if $mail->from =~ /perl5-porters/;
    $mail->accept("perl")                  if $mail->from =~ /perl/;
    $mail->reject("We do not accept spam") if $mail->subject =~ /enlarge/;
    $mail->ignore                          if $mail->subject =~ /boring/i;
    ...
    $mail->exit(0);
    $mail->accept("~/Mail/Archive/backup");
    $mail->exit(1);
    $mail->accept()



DESCRIPTION

This module replaces procmail or Mail::Audit, and allows you to write programs describing how your mail should be filtered.

METHODS

    new



    Email::Filter->new();                # Read from STDIN
    Email::Filter->new(data => $string); # Read from string

    Email::Filter->new(emergency => "~simon/urgh");
    # Deliver here in case of error



This takes an email either from standard input, the usual case when called as a mail filter, or from a string.

You may also provide an emergency option, which is a filename to deliver the mail to if it couldn’t, for some reason, be handled properly.
Hint If you put your constructor in a BEGIN block, like so:



    use Email::Filter;
    BEGIN { $item = Email::Filter->new(emergency => "~simon/urgh"); }



right at the top of your mail filter script, you’ll even be protected from losing mail even in the case of syntax errors in your script. How neat is that?

This method provides the new trigger, called once an object is instantiated.

    exit



    $mail->exit(1|0);



Sets or clears the ’exit’ flag which determines whether or not the following methods exit after successful completion.

The sense-inverted ’noexit’ method is also provided for backwards compatibility with Mail::Audit, but setting noexit to yes got a bit mind-bending after a while.

    simple



    $mail->simple();



Gets and sets the underlying Email::Simple object for this filter; see Email::Simple for more details.

    header



    $mail->header("X-Something")



Returns the specified mail headers. In scalar context, returns the first such header; in list context, returns them all.

    body



    $mail->body()



Returns the body text of the email

    from

    to

    cc

    bcc

    subject

    received



    $mail-><header>()



Convenience accessors for header($header)

    ignore

Ignores this mail, exiting unconditionally unless exit has been set to false.

This method provides the ignore trigger.

    accept



    $mail->accept();
    $mail->accept(@where);



Accepts the mail into a given mailbox or mailboxes. Unix ~/ and ~user/ prefices are resolved. If no mailbox is given, the default is determined according to Email::LocalDelivery: $ENV{MAIL}, /var/spool/mail/you, /var/mail/you, or ~you/Maildir/.

This provides the before_accept and after_accept triggers, and exits unless exit has been set to false. They are passed a reference to the @where array.

    reject



    $mail->reject("Go away!");



This rejects the email; if called in a pipe from a mail transport agent, (such as in a ~/.forward file) the mail will be bounced back to the sender as undeliverable. If a reason is given, this will be included in the bounce.

This calls the reject trigger. exit has no effect here.

    pipe



    $mail->pipe(qw[sendmail foo\@bar.com]);



Pipes the mail to an external program, returning the standard output from that program if exit has been set to false. The program and each of its arguments must be supplied in a list. This allows you to do things like:



    $mail->exit(0);
    $mail->simple(Email::Simple->new($mail->pipe("spamassassin")));
    $mail->exit(1);



in the absence of decent Mail::SpamAssassin support.

If the program returns a non-zero exit code, the behaviour is dependent on the status of the exit flag. If this flag is set to true (the default), then Email::Filter tries to recover. (See ERROR RECOVERY) If not, nothing is returned.

If the last argument to pipe is a reference to a hash, it is taken to contain parameters to modify how pipe itself behaves. The only useful parameter at this time is:



  header_only - only pipe the header, not the body



TRIGGERS

Users of Mail::Audit will note that this class is much leaner than the one it replaces. For instance, it has no logging; the concept of local options has gone away, and so on. This is a deliberate design decision to make the class as simple and maintainable as possible.

To make up for this, however, Email::Filter contains a trigger mechanism provided by Class::Trigger, to allow you to add your own functionality. You do this by calling the add_trigger method:



    Email::Filter->add_trigger( after_accept => \&log_accept );



Hopefully this will also help subclassers.

The methods below will list which triggers they provide.

ERROR RECOVERY

If something bad happens during the accept or pipe method, or the Email::Filter object gets destroyed without being properly handled, then a fail-safe error recovery process is called. This first checks for the existence of the emergency setting, and tries to deliver to that mailbox. If there is no emergency mailbox or that delivery failed, then the program will either exit with a temporary failure error code, queuing the mail for redelivery later, or produce a warning to standard error, depending on the status of the exit setting.

AUTHORS

o Simon Cozens
o Casey West
o Ricardo SIGNES <rjbs@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2003 by Simon Cozens.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 EMAIL::FILTER (3) 2013-08-02

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.