Search:  
Gentoo Wiki

Maildrop_configuration

This article is part of the HOWTO series.
Installation Kernel & Hardware Networks Portage Software System X Server Gaming Non-x86 Emulators Misc

Contents

Introduction

Maildrop is the mail filter/mail delivery agent that's used by the Courier Mail Server.  You do not need to install Maildrop if you already have Courier installed.  This is a standalone build of the Maildrop mail utility for use with other mail servers (MTA's) such as Sendmail or Postfix.

Maildrop is a replacement for your local mail delivery agent.  Maildrop reads a mail message from standard input, then delivers the message to your mailbox.  Maildrop knows how to deliver mail to mbox-style mailboxes, and maildirsMaildir is a mailbox format used by Courier and Qmail.

Maildrop optionally reads instructions from a file describing how to filter incoming mail.  These instructions can direct Maildrop to deliver the message to an alternate mailbox, or forward it somewhere else.  Unlike Procmail, Maildrop uses a structured filtering language.

Maildrop is written in C++ and is significantly larger than Procmail.  However, it uses resources much more efficiently.  Unlike Procmail, Maildrop will not read a 10 megabyte mail message into memory.  Large messages are saved in a temporary file and are filtered from the temporary file.  If the standard input to Maildrop is a file and not a pipe, a temporary file will not be necessary. 

Maildrop checks the mail delivery instruction syntax from the filter file before attempting delivery of a message.  Unlike Procmail, if the filter file contains syntax errors, Maildrop terminates without delivering the message.  The user can fix the typo without any email lost!

Installation

emerge maildrop

Configuration

Global

Edit /etc/maildroprc:

File: /etc/maildroprc
# Global maildrop filter file
#DEFAULT="$HOME/.maildir/"

#
# Define variables
#
SHELL="/bin/bash"
DEFAULT = "$HOME/.maildir"
MAILDIR = "$HOME/.maildir"

#
#  Logfile destination
#  After your satisifed that this is working properly, comment out all
#  the lines that start with "log"
#
logfile "$HOME/.getmail/.maildrop.log"
#
# Markers for the log file
#
log "Markers:   ---------------------------------------------"
log " (**) from config file, (II) informational, (WW) warning"
log "--------------------------------------------------------"
log ""


######################################################################
#
# Adding missing headers for PGP/MIME
#

BPM="-----BEGIN PGP MESSAGE-----"
EPM="-----END PGP MESSAGE-----"
BPS="-----BEGIN PGP SIGNATURE-----"
EPS="-----END PGP SIGNATURE-----"

if (!/^Content-Type: message/ && !/^Content-Type: multipart/ \
        && !/^Content-Type: application\/pgp/)
                {
                if (/^$BPM/:b && /^$EPM/:b)
                xfilter "reformail -A 'Content-Type: application/pgp; format=text; \
                        x-action=encrypt'"

                if (/^$BPS/:b && /^$EPS/:b)
                xfilter "reformail -A 'Content-Type: application/pgp; format=text; \
                        x-action=sign'"
                }


#####################################################################
#
#  Correcting wrong signature dashes
#  

if (/^--($|[ ]{2,}^)/:b)
        {
        xfilter "sed -r 's/^--($|[ ]{2,}^)/-- /'"
        log "(II) Sig Dashes corrected"
        }


# Include any rules set up for the user - this gives the
#   administrator a way to override the domain's mailfilter file
#
#   this is also the "suggested" way to set individual values
#   for maildrop such as quota. (why do you need quota on your own PC?)
#

`test -r $HOME/.mailfilter`
if( $RETURNCODE == 0 )
        {
        log "(==)  Including $HOME/.mailfilter"
                exception {
                        include $HOME/.mailfilter
                }
        }

Per User Filter

touch ~/.mailfilter
chmod 600 ~/.mailfilter

Standard Comments within .mailfilter

File: ~/.mailfilter
# - maildrop mailinglist.
#   http://lists.sourceforge.net/lists/listinfo/courier-maildrop

# - Please browse the mailinglist archives for more examples.
#   http://sourceforge.net/mailarchive/forum.php?forum=courier-maildrop

# - Save this file as .mailfilter in your home directory and do
#   chmod 600 .mailfilter

# - Do not edit your .mailfilter file with a DOS or WINDOWS
#   texteditor!!


# - Linebreaking doesn't work inside a pattern. So the following
#   rule cannot work:
#
#if (/^Subject:.*(exim|sendmail| \
#    gdm|xdm|imap|cgi)/)
#
#   and must be in one line:
#
# if (/^Subject:.*(exim|sendmail|gdm|xdm|imap|cgi)/)
#
#
# - Linebreaking only works for quotet text and between patterns:
#
#  "Imagine this is as a \
#                   long text string"
#
#
#if (/^To:.*mutt/ \
#  || /^[Cc][Cc]:.*mutt/)
#

Optional Filters for .mailfilter

Filter out messages for trash
File: ~/.mailfilter
#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
#  Spam messages with numbered subjects
#
if (/^Subject:.*[:wbreak:][:digit:][:digit:][:digit:][:digit:][:wbreak:]/ \
    && !/^Precedence: bulk/:h)
{
    exception {
        to $DEFAULT/.Trash/
    }
}


#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# What we can find in the header
if	(  /^X-Advertisement:.*/ 		\
	|| /^X-Mailer:.*(Advanced Mass)/ 	\
	|| /^X-Spam-Status: YES / 		\
	|| /^Message-ID:*<>/:h 			)
{
    exception {
        to $DEFAULT/.Trash/
    }
}

#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# Spam addresses From:
if (/^From:.*(galamail\.com|agentoflove|absoluteagency\.com|delphi\.com|238525)/:h)
{
    exception {
        to $DEFAULT/.Trash/
    }
}


#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# Spam addresses To:
if (/^To:.*(spambot|undisclosed recipient)/:h )
{
    exception {
        to $DEFAULT/.Trash/
    }
}


#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# Long Subject spam words

# IT SHOULD BE JUST ONE LONG LINE (breaks are for wiki purpuses)
if (/^Subject:.*(SPAM|\[Vv\]iagra|offer|free|wanted|penis|chip|inch|please|pill|ydrocodone|remember|
prescription|1-800|inch|remove|XXX|sex|adults|business opportunity|unsuscribe|LANGUAGE CENTER|visit today|
penis|longer|size|GUARANTEE|\[Ll\] \[Aa\] \[Nn\] \[Gg\] \[Uu\] \[Aa\] \[Gg\] \[Ee\] )/:h )
{
    exception {
        to $DEFAULT/.Trash/
    }
}


#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# Trashing offtopic messages
if (/^Subject:.*(\[ot\]|\<ot\>|\[off\]|\[.*[ ]ot\])|off.*topic/:h)
{
    exception {
        to $DEFAULT/.Trash/
    }
}

#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# Trashing test messages
if (/^Subject:test$/:h)
{
    exception {
        to $DEFAULT/.Trash/
    }
}


if (/^Subject:.*[ ]test$/:h)
{
    exception {
        to $DEFAULT/.Trash/
    }
}

#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# Trashing empty subjects:
if (/^subject:[ ]+$/:h)
{
    exception {
        to $DEFAULT/.Trash/
    }
}

#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# Trashing mails without subject lines:
if (!/^subject:/:h)
{
    exception {
        to $DEFAULT/.Trash/
    }
}
Messages we would like to keep separate
File: ~/.mailfilter
#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# .Personal
#
if ( /^From:.*(friend_1|friend_2|friend_3)/ )
{
    exception {
        to $DEFAULT/.Personal/
    }
}


#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# .2root
#
if (/^Subject:.*Cron/ || /^To:.*root/ )
{
    exception {
        to $DEFAULT/.2root/
    }
}

#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# .yourmailbox
#
if (/^To:.*yourmailbox/)
{
    exception {
        to $DEFAULT/.youmailbox/
    }
}
Autoreply

Here is Rolan Yang <rolan at omnistep.com> little autoreply recipe which uses mailbot (included with the courier-imap package) with a few lines which prevent autoreplying to spam marked by spamassassin and also an extra line to prevent mailing lists autoreplies. The -D parameter prevents duplicate autoresponses from being sent to the same individual for a period of x days (here it is set to 1 day)

This is used in a completely virtual user hosted environment. A squirrelmail module add or removes this to ".mailfilter" located in the users home directory. If anyone has suggestions on improving this feel free to email me - Rolan Yang <rolan at omnistep.com>.

Autoreplying adds to spam. Make sure you configure your spam filtering agent to learn and, if possible, allow users to report spam.

File: ~/.mailfilter
`test -f vacation.msg && exit 1 || exit 0`
if ($RETURNCODE==1)
{
       {
       if (!/^List-Unsubscribe:.*/:h )
       {
               if (!/^X-Spam-Flag: YES/:h )
               {
                      RESPOND="$MAILDIR/$USER.autorespond.msg"
                      RESPONDDB="$MAILDIR/$USER.autorespond.db"

                      # The following must be one contiguous line
                      cc "| mailbot -t $RESPOND -d $RESPONDDB -D 1 \
                      -A 'From: $RECIPIENT' -s 'Auto Response: from $RECIPIENT' \
                      /usr/sbin/sendmail -t -f ''"
               }
       }
       }
}

Additionally, Stefan Hornburg <racke at linuxia.de> excluded the following headers from autoreplies, because they are used by mailing lists as well:

File: ~/.mailfilter
/^List-Id:/ || /^Precedence: list/

Random Visitor suggests the following, which assumes mail has already been passed through ClamAV and SpamAssassin, then avoids replying to mailing lists, bounces, and status messages, and only replies once every 7 days per unique sender address (appropriate for vacation and Out Of The Office messages):

File: ~/.mailfilter
if ( ! /^Precedence: (bulk|list|junk)/ && \ 
     ! /^Return-Path:.*<#@\[\]>/ && \
     ! /^Return-Path:.*<>/ && \
     ! /^From:.*MAILER-DAEMON/ && \
     ! /^X-ClamAV-Notice-Flag: *YES/ && \
     ! /^Content-Type:.*message\/delivery-status/ && \
     ! /^Subject:.*Delivery Status Notification/ && \
     ! /^Subject:.*Undelivered Mail Returned to Sender/ && \
     ! /^Subject:.*Delivery failure/ && \
     ! /^Subject:.*Message delay/ && \
     ! /^Subject:.*Mail Delivery Subsystem/ && \
     ! /^Subject:.*Mail System Error.*Returned Mail/ && \
     ! /^X-Spam-Flag: YES/ )
{
     cc "| mailbot -D 7 -t $MAILDIR/../vacation/vacation.txt ... "
}
Mail Headers Manipulation

Chris Holleman <chris at isd-holland.nl> gave an idea of how change mail header

Adjust the rule for your needs.

File: ~/.mailfilter
xfilter "/usr/local/maildrop/bin/reformail -a \"X-Myheader: myheader\""
Mailing Lists and Forums
File: ~/.mailfilter
####################################################################
# .mailing lists and forums

#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# .gentoo-wiki
if 	(  /^Reply-To:.*devel@gentoo-wiki\.com/	\
	|| /^Reply-To:.*users@gentoo-wiki\.com/	)
{
    exception {
        to $DEFAULT/.gentoo-wiki/
    }
}

#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# .forums.gentoo-org
if (/^From:.*blackhole@forums\.gentoo\.org/ )
{
    exception {
        to $DEFAULT/.forums-gentoo/
    }
}

#''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
# .courier-maildrop
if (/^List-Post:.*courier-maildrop*/ )
{
    exception {
        to $DEFAULT/.list.courier-maildrop/
    }
}

Stripping Attachments to User Folder

Created the following filter for stripping email video attachments and moving to my specified user folder instead of having the attachments processed by either "mail" or my email client. The additional attachment size would create an additional burden for the the email clients. (You're welcome to cleanup or customize this script if you want as I'm not an expert with mail filters.)

To implement this filter, you'll need to find a piece of email within your dot maildir with the attachment. Then, find and modify this filter with your unique Content-Type or Content-Disposition field and/or also unique file name. Don't forget to modify the folder destination you want attachments written to. Once this filter processes the email, the email text will be trashed.

You can test the filter with "maildrop < .maildir/cur/{email_with_attachment}".

reformime.html provides the most documentation of it's usage. --Roger 18:26, 19 June 2008 (UTC)

File: ~/.mailfilter
# Check for Content Type and Attachment Name.  If positive, do xfilter.
# Content-Type: application/octet-stream; name="WVC54G(2008_06_14 1820).asf"
# Content-Disposition: attachment; filename="WVC54G(2008_06_14 1820).asf"
# Move to folder "/home/roger/Desktop/WVC54G\ Video/"
#
# Make sure attachment works with reformime:
# reformime < .maildir/cur/1213496821.M87942P7514V0000000000000802I0152D437_0.localhost2.localdomain,S=244921 -x
#
# Test filter with email including attachment:
# maildrop < .maildir/cur/1213890816.M86630P24827V0000000000000802I01924F23_0.localhost2.localdomain\,S\=298995
#
# Reference:
# /usr/share/doc/maildrop-2.0.4/html/reformime.html
if (/^Content-Type: application\/octet-stream; name=\"WVC54G.*\.asf\"/:h)
{
	exception {
		xfilter "reformime -x/home/roger/Desktop/WVC54G\ Video/"
	}
}

Mailbox Creation and Subscription

maildirmake -f Folder.Name $HOME/.maildir

echo INBOX.Folder.Name >> $MAILDIR/courierimapsubscribed

MTA Integration

Postfix

You have to let postfix know we have a local delivery agent:

vim /etc/postfix/main.cf

File: /etc/posfix/main.cf
# The mailbox_command parameter specifies the optional external
# command to use instead of mailbox delivery. The command is run as
# the recipient with proper HOME, SHELL and LOGNAME environment settings.
# Exception:  delivery for root is done as $default_user.
#
# Other environment variables of interest: USER (recipient username),
# EXTENSION (address extension), DOMAIN (domain part of address),
# and LOCAL (the address localpart).
#
# Unlike other Postfix configuration parameters, the mailbox_command
# parameter is not subjected to $parameter substitutions. This is to
# make it easier to specify shell syntax (see example below).
#
# Avoid shell meta characters because they will force Postfix to run
# an expensive shell process. Procmail alone is expensive enough.
#
# IF YOU USE THIS TO DELIVER MAIL SYSTEM-WIDE, YOU MUST SET UP AN
# ALIAS THAT FORWARDS MAIL FOR ROOT TO A REAL USER.
#
#mailbox_command = /some/where/procmail
#mailbox_command = /some/where/procmail -a "$EXTENSION"

#
# You ARE NOT specifying the binary here. You are specifying the maildrop service.
# This is defined in master.cf which is where the path to the maildrop binary
# is defined.
#
mailbox_command = maildrop

# For virtual mail servers
virtual_transport = maildrop

## Set to 1 because Maildrop only delivers one message at a time.
maildrop_destination_recipient_limit = 1


vim /etc/postfix/master.cf
(I have this at line # 113.)
(As of 2007.08.28, I'm seeing a maildrop entry within the master.cf file already. I don't think this "editing master.cf" section is needed for the average user. --Roger 09:32, 28 August 2007 (UTC) For those not using grep, this is around line 58 now. I just use the default entry.)

File: /etc/postfix/master.cf
maildrop unix - n n - - pipe

# next 2 lines should be joined!
flags=DRhu user=vmail:vmail argv=/usr/bin/maildrop -w 90 -d ${user}@${nexthop} \
${recipient} ${user} ${nexthop} ${sender} ## This needs to be part of the above line!

#
# Question
#
# So what does maildrop do with all of these variables that Postfix passes on to it? Well,
# first we need to understand what those variables are. While the variables look somewhat
# redundant, this provides the ultimate in filtering flexibility.
#
# -w 90 is telling maildrop to send a quota warning to users with 90% of quota used up
# -d  is telling maildrop to run as user as specified by user=x:x
# ${user} is comprised of everything before the @ symbol in the recipient's email address.
# ${nexthop} is the domain; everything after the @ symbol in the recipient's email address.
# ${recipient} is nothing more than ${user}@${nexthop}
# ${sender} is complete email address of the sender
#
# Answer
#
# When Postfix passes the message to maildrop, maildrop, by default, looks for /etc/maildroprc
# and reads it. At the top of this file, you should use the maildrop command "import" to
# import the variables Postfix is passing so that you can utilise them for your filtering needs.
# For general purposes, $recipient is sufficient.  In addition,
# I must put this, or something similar, in the maildropfilter:
#   xfilter "reformail -I 'X-Panix-Recipient: $1'"


Restart postfix after configuration change

# /etc/init.d/postfix restart

Qmail Integration

add ~/.qmail file inside user mailbox folder with following:

| /usr/bin/maildrop /mail/domains/userdomain.foo/username/.mailfilter

and

~/.mailfilter file with maildrop commands

Scanning for Viruses and Spam

Scanning for Viruses with ClamAV

if (`/usr/bin/clamdscan --no-summary --stdout - | grep -c 'FOUND'` == 1)
{
        MAILDIR="$MAILDIR/.Quarantine"
        `test -f $MAILDIR/maildirsize && exit 1 || exit 0`
        if ( $RETURNCODE == 0 )
        {
                `maildirmake $MAILDIR`
        }
        to "$MAILDIR";
}
exception {
        VIRUS_TAG=`clamscan -V`
        VIRUS_TAG="$VIRUS_TAG on $HOSTNAME"
        xfilter "reformail -A 'X-Virus-Checker-Version: $VIRUS_TAG'"
        xfilter "reformail -A 'X-Virus-Status: Clean'"
}

You may also use clamassassin, which trys to act like SpamAssassin. Clamassassin still requires that ClamAV be installed and spamd must be running as a daemon.

Scanning for Spam with SpamAssassin

(Since I use Evolution client for collecting & managing my email, I'm only concerned about one Inbox folder. As such, I commented-out the command moving spam "to $MAILDIR". Additionally, "log "$TICKS : >>> TAGGED AS *** HAM ***" should probably also be added to the non-spam section of this script as this is good info when reading the Maildrop log file. --Roger 10:34, 28 August 2007 (UTC))

if ( $SIZE < 26144 )
{
        exception {
                xfilter "spamc -u $RECIPIENT"
        }
}
if ( (/^X-Spam-Flag: YES/:h) || (/^X-Spam-Status: Yes/:h) )
{
        #
        # Run sa-learn: Learn as spam
        #
        if ( /^X-Spam-Level: *-----.*$/:h )
        {
                cc "| sa-learn --sync --spam"
        }

        MAILDIR="$MAILDIR/.Spam"
        log "$TICKS : >>> TAGGED AS *** SPAM ***"

        #
        # deliver to maildir
        #
        log "$TICKS : >>> Mail successfully delivered to $MAILDIR"
        exception {
                to "$MAILDIR";
        }
}
else
{
        if ( /^X-Spam-Level: *-.*$/:h )
        {
                #
                # Run sa-learn: Learn as ham
                #
                cc "| sa-learn --sync --ham"
        }
}

Troubleshooting

Invalid home directory permissions - world writable.

Delivery error (command maildrop 24688 error (75, /usr/bin/maildrop:
                                     Invalid home directory permissions - world writable.))
  msg 1/1 (812 bytes), delivery error (command maildrop 24688 error (75, /usr/bin/maildrop:
                                     Invalid home directory permissions - world writable.))
  1 messages retrieved, 0 skipped
the fix

chmod 600 ~/.mailfilter


For your own good

Delivery error (command maildrop 5485 error (75, /usr/bin/maildrop: Cannot have world/group permissions on the filter file - for your own good.))

 msg 1/1 (842 bytes), delivery error (command maildrop 5485 error (75, /usr/bin/maildrop:
Cannot have world/group permissions on the filter file - for your own good.))
the fix

Get rid of [arguments] line in ~/.getmail/youmailbox.rc file


Unable to create a dot-lock

msg 1/1 (3612 bytes), delivery error (command maildrop 10143 error
(75, /usr/bin/maildrop: Unable to create a dot-lock.))
1 messages retrieved, 0 skipped

When maildrop is told to route a message into a directory, it tries to create a "dot-lock" file within that directory, as a signal to tell other processes that the directory is being maintained and that they should wait for this maintenance to finish before trying to make any changes within the directory. After the message has been delivered, this dot-lock file is deleted so that other processes can work with the directory as needed.

If the directory does not exist, or if maildrop doesn't have permission to create files in the directory, you will see the Unable to create a dot-lock error message.

The fix, of course, is to create the directory and make sure it is owned by (or has permissions which make it writable by) the same userid which maildrop will be running as, which will almost always be the userid which owns the mailbox itself.

Of course, finding out which directory of which user maildrop is complaining about can be quite a challenge, since the error message fails to tell you. If you have users with extremely complex maildrop files this can be near impossible.


Another thing to ensure is that maildrop creates the virtual user's mail directory. Add this to /etc/maildroprc;

  1. If the destination maildir doesn't exist, create it.
`[ -d $DEFAULT ] || (maildirmake $DEFAULT && maildirmake -f Spam $DEFAULT)`

Hope this helps. email:dmurungi@dicts.mak.ac.ug

Postfix log shows Syntax Error while parsing $HOME/.mailfilter

This was confusing as the only verbose switch for maildrop was augmenting Postfix's main.cf with:

mailbox_command = maildrop -V3"

This didn't help with debugging much at all. But I found changing the indent style of the $HOME/.mailfilter file to be the culprit.

Pay specific attention to non-bash commands such as "exception" and "xfilter". These commands are provided by maildrop and reading the maildropfilter manual will explain their usage. Specifically, the command "exception" needed the bracket one space after it's command and indenting the bracket on the following line apparently spawned the Syntax Error.

I would imagine this might be resolved within the future if somebody files a bug report or fixes it.
--Roger 09:50, 28 August 2007 (UTC)


Getting Mailutils reading Maildir Folders

I use the command line mail utilities for simple mail checking using the command "mail".  Since Mailx doesn't support maildir folders, I needed to move to using Mailutils.

By default Mailx, is probably installed.  Uninstall this package as it conflicts with Mailutils and then install.

# emerge -C mail-client/mailx && emerge net-mail/mailutils

Add the following line within your $HOME/.bashrc file:

alias mail="/usr/bin/mail -m maildir:$HOME/.maildir"

(If somebody has a mail.rc command, please document here.  Else, using the '-m' switch is the only method I know of for allowing maildir reading.)

Restart Bash within each open terminal so the .bashrc file gets read.

# bash -$-

It's a good idea to add this to your /etc/mail.rc.  (Else, read messages with the command line utility are usually moved to another maildir folder keeping your GUI email client from seeing them.)

# Hold read or saved messages in the system mailbox
set hold

--Roger 19:49, 28 August 2007 (UTC)

Getting Nail reading Maildir Folders

I've moved to using Nail as Nail now handles maildir. Mailutils hasn't been version bumped for a while (due to issues with Guile). Not only this, but Nail source code has been officially merged back into Mailx. However, Gentoo Portage will still use the same Nail ebuild for current future releases of Mailx containing Nail code.

# emerge -C mail-client/mailutils && emerge net-mail/nail

Add the following lines within your $HOME/.bashrc file:

#alias nail="nail -f $HOME/.maildir"
alias mail="mail -f $HOME/.maildir"
alias mailx="mailx -f $HOME/.maildir"

(I do not know what ~/.mailrc or /etc/nail.rc setting would set the maildir folder.)

Issue the following command within ~/ for rereading ~/.bashrc:

$ bash -$-

--Roger 23:19, 12 January 2008 (UTC)

A better command for rereading user/global bashrc's is

$ sudo env-update && source /etc/profile

or

$ sudo env-update && . /etc/profile

Executing these commands will load all system-wide changes, so you end up with the most up-to-date environment possible in a multiuser system or a system that is going through an emerge update cycle. --Anonymous User

References

Concerns or Compliments? Please use the Discussion section.

Retrieved from "http://www.gentoo-wiki.info/Maildrop_configuration"

Last modified: Thu, 19 Jun 2008 08:28:00 +0000 Hits: 64,649