Provided by: yample_0.30-3_all bug

NAME

       Yample - Yet Another Mail Processing Language.

DESCRIPTION

       Yample is an MDA - a mail delivery agent. It accepts a message via standard input and
       stores this message in a maildir or in a mbox.

       Yample tries to incorporate the power of Perl and Mail::Internet, Mail::Spamassassin and
       the other Mail modules whilst maintaining an friendly syntax. Yample was written due to a
       personal conflict with Procmails syntax.

       Look at the following lines, taken from "man procmailex";

       :0 c * ^From.*peter * ^Subject:.*compilers ! william@somewhere.edu

         :0 A
         petcompil

       This can be implemented like this in Yample;

       sender(peter) and subject(compilers) unseen resend(william@somewhere.edu) sender(peter)
       and subject(compilers) mbox(petcompil)

OPTIONS

       --help
            Help!

       --mailbase <maildir>
            This option is prepended to any destinations you have. Default is ~/Maildir/.

       --logfile
            Yamples logfile. Default is ~/.yample/log.

       --loglevel <0-4>
            Loglevel. 4 - Debug, 3 - info, 2 - warnings, 1 - errors, 0 - nothing.

       --spamassassin
            Load Mail::Spamassassin and run the mail through it.

       --spamc
            Run the message through spamc. Yample will look for spamc in the $PATH unless you set
            --spamc-path.

       --spamc-path /path/to/spamc
            Where spamc resides.

       --dubdb <file>
            The message id database - used for duplicate suppression.

       --rules <file>
            The rule file.

FILES

       ~/.yample/rules

       This file contains the rules which Yample uses to sort mail. Yample reads the mail from
       STDIN and then processes the rules, one by one.

       The rules consists of two parts; condition(s) and target. There is an implicit if .. then
       .. else between every rule. Please see the examples futher down.

       In the conditions which take a regular expression as a parameter you can use grouping to
       extract parts of the text and utilize this in the sorting. Like this: "subject((.*)) and
       rcpt(user@foo.org): reject(Your message with subject $1 was rejected)". Cool, eh?

       NOTE: We replace "/" and "." with "_" in grouped strings to make sure there won't be any
       funny business.

       Yample::Rules
            This package contains subroutines which handle the individual rules. The rules are
            transformed into perl code which will call these methods to decide what to do with
            the message.

       dup()
            Detects duplicates.

       rcpt()
            The rcpt rule matches against the To- and Cc-headers.

       sender()
            The sender rule matches against the From-header.

       subject()
            Matches on the subject of the message.

       list()
            If Yample can load Mail::Listdetect then list() can be used to match against the name
            of the mailing list (unless the mailing list server is completely lame).

            You can use this rule like this:

            list((.*)):      maildir(.lists.$1)

       head()
            Match against a arbitrary header. Note the caret (^)

            head(^X-Spam-Flag: YES):               maildir(.junk.spam) head(^X-Infected:):
            maildir(.junk.virii)

       spam()
            If Yample loads Spamassassin (and runs the message through it) you can use spam() to
            determine the status of the message.

       perl()
            Run arbitrary perl code. Unless you are some sort of pervert you would not use this
            for anything but testing and debugging Yample.

       Yample::Actions
            Action dispatcher class. All the targets are defined here.

       maildir()
            Stores the message in a UW-style maildir more or less as defined per RFCXXXX.

       mbox()
            Delivers mail to a standard Unix mailbox.

            Parameters: The mailbox where the message is to be delivered.

       resend()
            Parameters: Where the message is to be forwarded.

       reject()
            Reject the message. This normally forces your mail server to create a bounce and mail
            this to the original sender.

            Parameters: Error message. This message will probably be included in the bounce
            generated.

       ignore()
            Ignore the message silently.

            Parameters: none

       reply()
            Reply to the message.

            Parameters: The body of the reply.

       pipe()
            Parameters: The command which is message is to be piped into. Executed through
            "/bin/sh -c".

       ~/.yample/dupdb

       Yamples database of message IDs. Yample uses this to supress dupicate messages (see dup()
       rules).

       ~/.yample/log

       Your own personal logfile. You might want to use logrotate or similar programs to make
       sure it does not grow to big.

       ~/.forward

       Usually, your mail server looks for a file in your home directory called ".forward". This
       file contains information how your mail server should deliver your mail. If you want
       Yample as your MDA your .forward should look like this: ⎪/full/path/to/yample

EXAMPLES

       # throw away virii head(^X-Infected:):                    ignore()

       # throw away spam with a score higher than 8 head(^X-Spam-Score: \d+\.\d+ \(\+{8,}\)

       # The rest of the spam, tagged by spamassassin head(^X-Spam-Flag: YES):
       maildir(.junk.spam)

       dup():                                 maildir(.junk.duplicates)

       # auto-sort lists - requires Mail::Listdetect list((.*)):
       maildir(.lists.$1)

       sender(@fjase.net) and subject(Backup report): maildir(.backup_reports)

       # catch-all

       perl(1):                               maildir()

VERSION

       Yample 0.30

AUTHOR

       Per Andreas Buer <perbu (at) linpro.no>

PREREQUSITES

       Yamples needs the following perl modules. Please download from CPAN, Yamples home page or
       other sources.

       Mail::Internet Mail::Send Text::Balanced

       Yample also uses these modules - but they are in the Perl distribution so they should
       always be there.

       Pod::Usage POSIX Sys::Hostname IO::File IPC::Open2

BUGS

       Yample with Spamassassin, Mail::ListDetector and the other bells and whistles is quite
       heavy.

       Please report bugs and functionality requests to the author.

       Yample lacks (as of now) LMTP and IMAP support. Both should be fairly easy to implement.

COPYRIGHT

       Copyright (C) 2003 Per Andreas Buer

       This is free software; see the source for copying conditions. There is NO warranty; not
       even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

SEE ALSO

       Mail::Internet (3),  Mail::SpamAssassin (3), Mail::ListDetector (3).