« Maildrop » : différence entre les versions

De NCad Wiki
Aller à la navigation Aller à la recherche
 
(11 versions intermédiaires par le même utilisateur non affichées)
Ligne 38 : Ligne 38 :


  maildrop  unix  -      n      n      -      -      pipe
  maildrop  unix  -      n      n      -      -      pipe
   flags=DRhu user=vmail:vmail argv=/usr/bin/maildrop -w 90 -d ${user}@${nexthop} ${extension} ${recipient} ${user} {nexthop}
   flags=DRhu user=vmail:vmail argv=/usr/bin/maildrop -w 90 -d ${user}@${nexthop} ${extension} ${recipient} ${user} ${nexthop} ${sender}


=== Maildrop ===
=== Maildrop ===
Ligne 47 : Ligne 47 :


  DEFAULT="/var/mail/vmail/"
  DEFAULT="/var/mail/vmail/"
{{ Box Remarque | objet=Le chemin <font color=grey>/var/mail/vmail/</font> définit le répertoire où sont stockés les boîtes mails des utilisateurs. }}


* Les règles de routage des mails sont écrites dans le fichier '''/var/mail/vmail/.mailfilter''' :
* Les règles de routage des mails sont écrites dans le fichier '''/var/mail/vmail/.mailfilter''' :
Ligne 55 : Ligne 57 :
* On applique les permissions adéquates sur les fichiers utilisés par '''maildrop''' :
* On applique les permissions adéquates sur les fichiers utilisés par '''maildrop''' :


{{ Box Console | objet=chown vmail:daemon /etc/maildroprc
{{ Box Console | objet=chown vmail:daemon /etc/maildroprc<br />
chown vmail:daemon /var/run/courier/authdaemon/ -R
chown vmail:daemon /var/run/courier/authdaemon/ -R<br />
chown vmail:vmail /var/mail/vmail/.mailfilter }}
chown vmail:vmail /var/mail/vmail/.mailfilter }}


Ligne 87 : Ligne 89 :
  HOME_DIR="/var/mail/vmail"
  HOME_DIR="/var/mail/vmail"
  EXTENSION="$1"
  EXTENSION="$1"
logfile "/var/log/maildroprc.log"
  RECIPIENT=tolower("$2")
  RECIPIENT=tolower("$2")
  USER="$3"
  USER="$3"
Ligne 137 : Ligne 140 :
         }
         }
  }
  }
* Pour que le script puisse fonctionner, vous devez au préalable créer le fichier de log '''maildroprc.log''' à la racine '''/var/log''' :
{{ Box Console | objet=cd /var/log<br />
sudo touch maildroprc.log<br />
sudo chown vmail:vmail maildroprc.log }}
== Debug ==
=== Informations sur la version courante ===
{{ Box Console | objet=/usr/bin/maildrop -v<br />
maildrop 2.5.5 Copyright 1998-2005 Double Precision, Inc.<br />
GDBM/DB extensions enabled.<br />
Dovecot Authentication extension enabled.<br />
Courier Authentication Library extension enabled.<br />
Maildir quota extension are now always enabled.<br />
This program is distributed under the terms of the GNU General Public<br />
License. See COPYING for additional information.
}}
=== Caractéristiques  d'un compte mail ===
{{ Box Console | objet=authtest cacheln@geocoucou.eu<br />
Authentication succeeded.<br /><br />
Authenticated: cacheln@geocoucou.eu  (uid 5000, gid 5000)<br />
Home Directory: /var/mail/vmail/<br />
Maildir: /var/mail/vmail/geocoucou.eu/cacheln/<br />
Quota: 1024<br />
Encrypted Password: aBmTwv3XZeUY6<br />
Cleartext Password: (none)<br />
Options: disableimap=0,disablepop3=1,disablewebmail=0,sharedgroup=0
}}
{{ Box Console | objet=/usr/bin/maildrop -V 7 -d cacheln@geocoucou.eu<br />
maildrop: authlib: groupid=5000<br />
maildrop: authlib: userid=5000<br />
maildrop: authlib: logname=cacheln@geocoucou.eu, home=/var/mail/vmail/,<br /> mail=/var/mail/vmail/geocoucou.eu/cacheln/<br />
maildrop: Changing to /var/mail/vmail/
}}
[[Category:Serveur de Messagerie]]

Dernière version du 10 mars 2015 à 13:30

.:[ Serveur de Messagerie ]:.

Installation >> Postfix avec MySQL

Filtrage anti-spam : Anti-Spam SpamAssassin | Anti-Virus Clamav


Filtrage anti-virus : Plateforme de filtrage Amavis >> Amavis avec MySQL


Plus de fonctions : Ajouter un Disclaimer | Signature DKIM | Mailman | Maildrop


Clients de messagerie : Configurer Thundirbird | Configurer Roundcube


Pour aller plus loin : Commandes messagerie | DNSBL | MX Backup

Prérequis

Disposer d'un serveur mail Postfix fonctionnant avec des utilisateurs virtuels (c.f Postfix_Mysql)

Présentation

Maildrop est un MDA (Mail Delivery Agent), programme qui permet de recevoir, filtrer et délivrer les messages dans les boîtes mails des utilisateurs.

Installation

  • On installe le service maildrop :

sudo apt-get install maildrop

Configuration

Postfix

  • On édite le fichier /etc/postfix/main.cf et on remplace :
virtual_transport = virtual
  • Par :
virtual_transport = maildrop
maildrop_destination_recipient_limit = 1
  • Dans le fichier /etc/postfix/master.cf on remplacera :
maildrop  unix  -       n       n       -       -       pipe
 flags=DRhu user=vmail:vmail argv=/usr/bin/maildrop -d ${recipient}
  • Par :
maildrop  unix  -       n       n       -       -       pipe
 flags=DRhu user=vmail:vmail argv=/usr/bin/maildrop -w 90 -d ${user}@${nexthop} ${extension} ${recipient} ${user} ${nexthop} ${sender}

Maildrop

  • Il s'agit d'indiquer à Maildrop comment traiter les messages qui lui sont soumis par Postfix. Le but est ici d'indiquer où sont stocké les mails de nos utilisateurs.
  • On crée le fichier de configuration /etc/maildroprc et on y ajoute la ligne suivante :
DEFAULT="/var/mail/vmail/"
Le chemin /var/mail/vmail/ définit le répertoire où sont stockés les boîtes mails des utilisateurs.
  • Les règles de routage des mails sont écrites dans le fichier /var/mail/vmail/.mailfilter :
USER_DIR="/var/mail/vmail/$4/$3/"
to $USER_DIR
  • On applique les permissions adéquates sur les fichiers utilisés par maildrop :

chown vmail:daemon /etc/maildroprc
chown vmail:daemon /var/run/courier/authdaemon/ -R
chown vmail:vmail /var/mail/vmail/.mailfilter

Configuration avancée

  • Voici un exemple de script utilisé qui permet - en plus de délivrer les mails dans la boîte de l'utilisateur - de créer la boîte mail si elle n'existe pas (nouvel utilisateur virtuel), rediriger les mails tagués comme spam dans le dossier correspondant (par défaut Junk).
# Global maildrop filter file (used on Debian)
# For use with Postfix/Courier IMAP/Amavisd-new virtual mailbox domains.
#
# This maildroprc automagically creates a Spam folder for the recipient
# and places spam there. It also subscibes the recipient to the folder.
#
# Example maildir: /home/vmail/example.com/user/
#
# Also in main.cf:
# virtual_transport = maildrop
# maildrop_destination_concurrency_limit = 2
# maildrop_destination_recipient_limit = 1
#
# and in master.cf:
#
# maildrop  unix  -       n       n       -       -       pipe
#  flags=DRhu user=vmail:vmail argv=/usr/bin/maildrop -w 90 -d ${user}@${nexthop}
#  ${extension} ${recipient} ${user} ${nexthop}
#
# /var/log/maildroprc.log needs to exist and owned by vmail:vmail and
# a logrotate script needs to be created.
#
HOME_DIR="/var/mail/vmail"
EXTENSION="$1"
logfile "/var/log/maildroprc.log"
RECIPIENT=tolower("$2")
USER="$3"
HOST="$4"
SENDER="$5"
DEFAULT="$HOME_DIR/$HOST/$USER"
 
# Check if host and user directory exist

`test -e $HOME_DIR/$HOST/$USER`
#log "Testing for $HOME_DIR/$HOST subdirectory: result=$RETURNCODE"
# Only continue if directory does NOT exist
if ($RETURNCODE != 0)
{
       log "MailDir $HOME_DIR/$HOST/$USER does NOT exist"
       `test -e $HOME_DIR/$HOST`
       if ( $RETURNCODE != 0 )
       {
               log "Creating $HOME_DIR/$HOST"
               `mkdir $HOME_DIR/$HOST`
               `chmod -R 0700 $HOME_DIR/$HOST`
       }

       # Create users MailDir
       `maildirmake $HOME_DIR/$HOST/$USER`
}
 
if (/^X-Spam-Flag: YES/)
{
       EXTENSION = "Junk"

       # See if the spam directory already exists
       `test -e $HOME_DIR/$HOST/$USER/.$EXTENSION`
       #log "Testing for $EXTENSION subdirectory: result=$RETURNCODE"
       if ( $RETURNCODE != 0 ) # spam directory does not exist - so we create it
       {
               # Create the subdirectory
               `maildirmake -f $EXTENSION $HOME_DIR/$HOST/$USER`
               log "Ran \"maildirmake -f $EXTENSION $HOME_DIR/$HOST/$USER\""

               # Auto-subscribe the subdirectory
               `if ! grep -q INBOX.$EXTENSION $HOME_DIR/$HOST/$USER/courierimapsubscribed; then echo INBOX.$EXTENSION >> $HOME_DIR/$HOST/$USER/courierimapsubscribed; fi`
       }

       # Deliver the message to the mailbox
       exception {
               # for those who unsubscribed themselves - subscribe them
               `if ! grep -q INBOX.$EXTENSION $HOME_DIR/$HOST/$USER/courierimapsubscribed; then echo INBOX.$EXTENSION >> $HOME_DIR/$HOST/$USER/courierimapsubscribed; fi`
               to "$HOME_DIR/$HOST/$USER/.$EXTENSION"
       }
}
  • Pour que le script puisse fonctionner, vous devez au préalable créer le fichier de log maildroprc.log à la racine /var/log :

cd /var/log
sudo touch maildroprc.log
sudo chown vmail:vmail maildroprc.log

Debug

Informations sur la version courante

/usr/bin/maildrop -v
maildrop 2.5.5 Copyright 1998-2005 Double Precision, Inc.
GDBM/DB extensions enabled.
Dovecot Authentication extension enabled.
Courier Authentication Library extension enabled.
Maildir quota extension are now always enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.

Caractéristiques d'un compte mail

authtest cacheln@geocoucou.eu
Authentication succeeded.

Authenticated: cacheln@geocoucou.eu (uid 5000, gid 5000)
Home Directory: /var/mail/vmail/
Maildir: /var/mail/vmail/geocoucou.eu/cacheln/
Quota: 1024
Encrypted Password: aBmTwv3XZeUY6
Cleartext Password: (none)
Options: disableimap=0,disablepop3=1,disablewebmail=0,sharedgroup=0

/usr/bin/maildrop -V 7 -d cacheln@geocoucou.eu
maildrop: authlib: groupid=5000
maildrop: authlib: userid=5000
maildrop: authlib: logname=cacheln@geocoucou.eu, home=/var/mail/vmail/,
mail=/var/mail/vmail/geocoucou.eu/cacheln/
maildrop: Changing to /var/mail/vmail/