maildropex man page on Mandriva

Man page or keyword search:  
man Server   17060 pages
apropos Keyword Search (all sections)
Output format
Mandriva logo
[printable version]

MAILDROPEX(7)							 MAILDROPEX(7)

NAME
       maildropex - maildrop filtering language examples

SYNOPSIS
       $HOME/.mailfilter, $HOME/.mailfilters/*

DESCRIPTION
       If  $HOME/.mailfilter  exists, filtering instructions in this file will
       be carried out prior to delivering the message. The filtering  instruc‐
       tions may instruct maildrop to discard the message, save the message in
       a different mailbox, or forward the  message  to	 another  address.  If
       $HOME/.mailfilter does not exist, or does not provide explicit delivery
       instructions, maildrop delivers the message to the user's system	 mail‐
       box.

       The  files  in  $HOME/.mailfilters are used when maildrop is invoked in
       embedded mode.

EXAMPLES
       Take all mail that's sent to the 'auto' mailing list, and  save	it  in
       Mail/auto.  The	'auto'	mailing	 list  software	 adds a "Delivered-To:
       auto@domain.com" header to all messages:

	      if (/^Delivered-To: *auto@domain\.com$/)
		  to Mail/auto
       After the to command delivers the message, maildrop automatically stops
       filtering  and terminates without executing the subsequent instructions
       in the filter file.

       Take all mail from <boss@domain.com> about the current project  status,
       save it in Mail/project, then forward a copy to John:

	      if (/^From: *boss@domain\.com/ \
		  && /^Subject:.*[:wbreak:]project status[:wbreak:]/)
	      {
		  cc "!john"
		  to Mail/project
	      }
       Note  that  it is necessary to use a backslash in order to continue the
       if statement on the next line.

       Keep copies of the last 50 messages that you received  in  the  maildir
       directory  'backup'.  NOTE: 'backup' must be a maildir directory, not a
       mailbox. You can create a maildir using the maildirmake command.

	      cc backup
	      `cd backup/new && rm -f dummy \`ls -t | sed -e 1,50d\``
       Put this at the beginning of your filter file, before any other filter‐
       ing  instructions.  This	 is  a good idea to have when you are learning
       maildrop. If you make a mistake and accidentally delete a message,  you
       can recover it from the backup/new subdirectory.

       Save  messages  that  are  at least 100 lines long (approximately) into
       Mail/IN.Large::

		   if ( $LINES > 100 )
		      to Mail/IN.Large

       Send messages from the auto mailing  list  to  the  program  'archive',
       using  a	 lock  file to make sure that only one instance of the archive
       program will be running at the same time:

		   if (/^Delivered-To: *auto@domain\.com$/)
		      dotlock "auto.lock" {

			     to "|archive"
		      }

       Check if the Message-ID: header in the message is identical to the same
       header  that was recently seen. Discard the message if it is, otherwise
       continue to filter the message:

	      `reformail -D 8000 duplicate.cache`
	      if ( $RETURNCODE == 0 )
		  exit
       The reformail command maintains a list of recently seen Message-IDs  in
       the file duplicate.cache.

       Here's  a  more	complicated  example.  This fragment is intended to go
       right after the message has been filtered  according  to	 your  regular
       rules, and just before the message should be saved in your mailbox:

	      cc $DEFAULT
	      xfilter "reformail -r -t"
	      /^To:.*/
	      getaddr($MATCH) =~ /^.*/;

	      MATCH=tolower($MATCH)
	      flock "vacation.lock" {
		      `fgrep -iqx "$MATCH" vacation.lst 2>/dev/null || { \
				echo "$MATCH" >>vacation.lst ; \
				exit 1 ; \
			    } `
	      }
	      if ( $RETURNCODE == 0 )
		 exit
	      to "| ( cat - ; echo ''; cat vacation.msg) | $SENDMAIL"

       This  code  maintains  a list of everyone who sent you mail in the file
       called vacation.lst.  When a message is received from  anyone  that  is
       not already on the list, the address is added to the list, and the con‐
       tents of the file vacation.msg are mailed back to the sender.  This  is
       intended to reply notify people that you will not be answering mail for
       a short period of time.

       The first statement saves the original message in your regular mailbox.
       Then,  xfilter<	is used to generate an autoreply header to the sender.
       The To: header in the autoreply - which was the sender of the  original
       message	-  is extracted, and the getaddr function is used to strip the
       person's name, leaving the  address  only.  The	file  vacation.lst  is
       checked,	 using	a  lock	 file  to  guarantee  atomic access and update
       (overkill, probably).  Note that the backslashes are required.

       If the address is already in the file, maildrop	exits,	otherwise  the
       contents	 of  vacation.msg  are	appended  to the autoreply header, and
       mailed out.

       Here's a version of the vacation script that uses a GDBM database  file
       instead.	 The difference between this script and the previous script is
       that the previous script will send a vacation message to a given E-mail
       address	only  once.  The following script will store the time that the
       vacation message was sent in the GDBM file. If it's  been  at  least  a
       week  since  the	 vacation  message has been sent to the given address,
       another vacation message will be sent.

       Even though a GDBM database file is used, locking  is  still  necessary
       because	the  GDBM library does not allow more than one process to open
       the same database file for writing:

	      cc $DEFAULT
	      xfilter "reformail -r -t"
	      /^To:.*/
	      getaddr($MATCH) =~ /^.*/;
	      MATCH=tolower($MATCH)
	      flock "vacation.lock" {
		  current_time=time;
		  if (gdbmopen("vacation.dat", "C") == 0)
		  {
		     if ( (prev_time=gdbmfetch($MATCH)) ne "" && \
			   $prev_time >= $current_time - 60 * 60 * 24 * 7)
		     {
			 exit
		     }
		     gdbmstore($MATCH, $current_time)
		     gdbmclose
		  }
	      }
	      to "| ( cat - ; echo ''; cat vacation.msg) | $SENDMAIL"

       This script requires that maildrop must be compiled with	 GDBM  support
       enabled, which is done by default if GDBM libraries are present.

       After  you  return  from	 vacation, you can use a simple Perl script to
       obtain a list of everyone who sent you mail (of course, that  can  also
       be determined by examining your mailbox).

SEE ALSO
       maildrop(1),  maildropfilter(7), reformail(1), egrep(1), grep(1), send‐
       mail(8).

Double Precision, Inc.		 26 July 2004			 MAILDROPEX(7)
[top]

List of man pages available for Mandriva

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net