Installation:FreeBSD:Maildrop
From PMWH2 - PHPMyWebHosting's official wiki
see also Installation:Debian
I'm assuming that you already have succesfully installed maildrop with mysql and quota support.
When you want to use per user anti-spam settings, read from a mysql database, there are 2 options:
- Let amavisd-new read the preferences from a mysql table.
- Let spamassassin read the preferences from a mysql table.
Using the second option: To do this you should disable the spam checks by amavisd-new by putting the following line in your amavisd.conf:
@bypass_spam_checks_maps = (1);
The next step is to configure Maildrop to check the spam before it delivers the mail to the mailbox.
This maildroprc does the following things:
- Check if the Maildir already exists
- If the Maildir doesn't exist, make sure the homedir exists, then create the maildir and create the quota with it.
- Put it through spamc which connects to spamd, which checks if the message is spam
- If the message is spam, then put it in a seperate Spam folder, when that folder doesn't exist create it first.
- If the message is not spam deliver it to the maildir.
SHELL="/usr/local/bin/bash"
USER=`echo $DEFAULT | awk '{split($0,a,"/"); print a[2]}'`
DOMAIN=`echo $DEFAULT | awk '{split($0,a,"/"); print a[1]}'`
import $MAILDIRQUOTA
`/bin/test -d $HOME/$DOMAIN/$USER`
if ($RETURNCODE != 0)
{
`/bin/mkdir -p $HOME/$DOMAIN`
if ($RETURNCODE==0)
{
logfile maildrop.log
log "$DATE Creating directory: $HOME/$DOMAIN/$USER"
}
else
{
logfile maildrop.log
log "$DATE Failed creating directory: $HOME/$DOMAIN/$USER"
}
`/usr/local/bin/maildirmake $HOME/$DOMAIN/$USER`
if ($RETURNCODE==0)
{
logfile maildrop.log
log "$DATE Creating maildir: $HOME/$DOMAIN/$USER"
}
else
{
logfile maildrop.log
log "$DATE Failed creating maildir: $HOME/$DOMAIN/$USER"
}
if ($MAILDIRQUOTA==0)
{
logfile maildrop.log
log "$DATE Quota is null: $MAILDIRQUOTA"
}
else
{
QUOTA="$MAILDIRQUOTA"'S'
`/usr/local/bin/maildirmake -q $QUOTA $HOME/$DOMAIN/$USER`
if ($RETURNCODE==0)
{
logfile maildrop.log
log "$DATE Adding quota $MAILDIRQUOTA to maildir: $HOME/$DOMAIN/$USER"
}
else
{
logfile maildrop.log
log "$DATE Failed adding quota $MAILDIRQUOTA to maildir: $HOME/$DOMAIN/$USER"
}
}
}
if ( $SIZE < 26144 )
{
exception {
xfilter "/usr/local/bin/spamc -x -u $USER"
}
}
if ( /^X-Spam-Flag: *YES/ )
{
`/bin/test -d $HOME/$DOMAIN/$USER/.Spam/`
if ($RETURNCODE != 0)
{
`/usr/local/bin/maildirmake $HOME/$DOMAIN/$USER/.Spam/`
if ($RETURNCODE==0)
{
logfile maildrop.log
log "$DATE Creating $HOME/$DEFAULT/.Spam/"
}
else
{
logfile maildrop.log
log "$DATE Failed creating $HOME/$DEFAULT/.Spam/"
}
}
logfile maildrop.log
to $HOME/$DOMAIN/$USER/.Spam/
}
Make sure the maildroprc and maildropmysql.config are only readable by the user under which maildrop is suid installed, probably vmail.

