# .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"

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

### 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@/ || /^From:.*tpeweb@paybox\.com/ || /^From:.*noreply@ogone\.com/)
{
    to $MAILDIR/.rmll.resa
}

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

### RMLL lists - 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
    }
}

if (/^To:.*benevoles@rmll\.info/)
{
    to $MAILDIR/.rmll.10
}

### RMLL 2011
if (/^List-Id:.*org2011.2011.rmll.info/)
{
    to $MAILDIR/.rmll.11.org
}

### 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:.*<(.*)\.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/ || /^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
}

### LabX lists
if (/^List-Id:.*<mailing\.labx\.fr>/)
{
    to $MAILDIR/.labx
}

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

### Linux-Nantes Lists
if (/^List-Id:.*<(.*)\.linux-nantes\.org>/)
{
    exception {
        `test -d $MAILDIR/.linux-nantes.$MATCH1`
        if( $RETURNCODE == 1 )
            `$MAILDIRMAKE $MAILDIR/.linux-nantes.$MATCH1`
        to $MAILDIR/.linux-nantes.$MATCH1
    }
}
if (/^List-Id:.*<linux-nantes\.univ-nantes.fr>/)
{
    to $MAILDIR/.linux-nantes.linux-nantes
}

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

### SYMPA Lists
if (/^List-Id:.*<sympa-(.*)\.listes\.renater\.fr>/)
{
    exception {
        `test -d $MAILDIR/.sympa.$MATCH1`
        if( $RETURNCODE == 1 )
            `$MAILDIRMAKE $MAILDIR/.sympa.$MATCH1`
        to $MAILDIR/.sympa.$MATCH1
    }
}

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

### FDN Lists
if (/^List-Id:.*<(.*)\.fdn\.fr>/)
{
    exception {
        `test -d $MAILDIR/.fdn.$MATCH1`
        if( $RETURNCODE == 1 )
            `$MAILDIRMAKE $MAILDIR/.fdn.$MATCH1`
        to $MAILDIR/.fdn.$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
}

### KDE projects lists
if (/^List-Id:.*<(.*)\.kde\.org>/)
{
    exception {
        `test -d $MAILDIR/.kde.$MATCH1`
        if( $RETURNCODE == 1 )
            `$MAILDIRMAKE $MAILDIR/.kde.$MATCH1`
        to $MAILDIR/.kde.$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
}

### AntiSpam
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
}
if (/^X-Bounce-Tracking-Info:.*/)
{
    to $MAILDIR/.Trash
}

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