# .mailfilter - rules for maildrop

HOME="/home/manu"
MAILDIR="$HOME/Mail/imap"
MAILDIRMAKE="/usr/bin/maildirmake"
VERBOSE=9

logfile "/home/manu/var/logs/maildrop/maildrop.log"


### Rmll Lists (2009 and previous)
if (/^X-BeenThere:\s*(.*)@rmll\.info/)
{
    exception {
        `test -d $MAILDIR/.rmll.09.$MATCH1`
        if( $RETURNCODE == 1 )
            `$MAILDIRMAKE $MAILDIR/.rmll.09.$MATCH1`
        to $MAILDIR/.rmll.09.$MATCH1
    }
}
if (/^From:.*reservation@rmll\.info/)
{
    to $MAILDIR/.rmll.09.resa
}

### Debian Lists
if (/^List-Id:\s*<debian-(.*)\.lists\.debian\.org>/)
{
    exception {
        `test -d $MAILDIR/.debian.$MATCH1`
        if( $RETURNCODE == 1 )
            `$MAILDIRMAKE $MAILDIR/.debian.$MATCH1`
        to $MAILDIR/.debian.$MATCH1
    }
}

if (/^List-Id:.*<backports-users\.lists\.backports\.org>/)
{
    to $MAILDIR/.debian.backports
}

### Debian France Lists
if (/^List-Id:\s*<(.*)\.france\.debian\.net>/)
{
    to $MAILDIR/.debian-france.$MATCH1
}

### Debian Alioth Projects
if (/^List-Id:.*<(.*)\.lists\.alioth\.debian\.org>/)
{
    exception {
        `test -d $MAILDIR/.debian.alioth.$MATCH1`
        if( $RETURNCODE == 1 )
            `$MAILDIRMAKE $MAILDIR/.debian.alioth.$MATCH1`
        to $MAILDIR/.debian.alioth.$MATCH1
    }
}

### Village associatif (Solution Linux)
if (/^List-Id:.*<(.*)\.lists\.parinux\.org>/)
{
    to $MAILDIR/.groups.$MATCH1
}

### FrNog
if (/^List-Id: .*frnog=FRnOG\.org/)
{
    to $MAILDIR/.groups.frnog
}

### Hurd France Lists
if (/^List-Id:.*<hurdfr\.hurdfr\.org>/)
{
    to $MAILDIR/.groups.hurd-fr
}

### Asyd Lists
if (/^List-Id:.*mailman\.asyd\.net>/)
{
    to $MAILDIR/.logs
}

if (/^List-Id:.*<(.*)\.asyd\.net>/)
{
    to $MAILDIR/.groups.asyd_$MATCH1
}

### Abul Lists
if (/^List-Id:.*<(.*)\.abul\.org>/)
{
    exception {
        `test -d $MAILDIR/.abul.$MATCH1`
        if( $RETURNCODE == 1 )
            `$MAILDIRMAKE $MAILDIR/.abul.$MATCH1`
        to $MAILDIR/.abul.$MATCH1
    }
}

### Liste RMLL 2010
if (/^List-Id:.*<(.*)\.listes20(.*)\.rmll\.info>/)
{
    exception {
        `test -d $MAILDIR/.rmll.$MATCH2.$MATCH1`
        if( $RETURNCODE == 1 )
            `$MAILDIRMAKE $MAILDIR/.rmll.$MATCH2.$MATCH1`
        to $MAILDIR/.rmll.$MATCH2.$MATCH1
    }
}

### Aquitaine libre lists
if (/^List-Id:.*<(.*)\.listes\.aquitaine-libre\.info>/)
{
    exception {
        `test -d $MAILDIR/.groups.aquitaine-libre_$MATCH1`
        if( $RETURNCODE == 1 )
            `$MAILDIRMAKE $MAILDIR/.groups.aquitaine-libre_$MATCH1`
        to $MAILDIR/.groups.aquitaine-libre_$MATCH1
    }
}

### WeeChat Lists
if (/^List-Id:.*weechat-(.*)\.nongnu\.org/ || /^To:.*weechat-(.*)\.nongnu\.org/)
{
    to $MAILDIR/.weechat.$MATCH1
}

### Sympa Stuff
if (/^From:.*SYMPA/ || /^To:.*sympa-request@.*$/)
{
    to $MAILDIR/.logs
}

### Logs Stuff
if (/^From:.*logcheck@/ || /^Subject:.*rkhunter/ || /^Subject:.*Logwatch for/ || /^From:.*Cron Daemon/ || /^Subject:.*shinji\..* run output/)
{
    to $MAILDIR/.logs
}

### Spam

CRMSCORE=`grep -a -v "^X-CRM114" | crm -u $HOME/.crm/ /usr/share/crm114/mailfilter.crm --stats_only`
xfilter "formail -I \"X-CRM114-Score: $CRMSCORE\""
if ($CRMSCORE < -1)
{
    xfilter "formail -I \"X-CRM114-Spam: yes\""
}

#log "Spam: $CRMSCORE"
#if (/^X-CRM114-Spam: yes/)
#{
#    to $MAILDIR/.Spam
#}


#xfilter "spamc"
if (/^X-Spam-Status: YES/)
{
    to $MAILDIR/.Spam
}

if (!/^From:.*/ || /^Subject:.*\[\*\*SPAM\*\*\].*/)
{
    to $MAILDIR/.Spam
}

########### TRASH ###############
if (/^From:.*(mailandgo\.fr|optingo\.net|refleximmo\.com).*$/)
{
    to $MAILDIR/.Trash
}

########### INBOX ###############
to $MAILDIR/