Vous êtes ici

Filtrer les spams à l'aide de son propre serveur mail. (Fetchmail, Procmail, Courier-imap, Spamassassin)

Nous allons voir dans cet article comment mettre en place une solution permettant de filtrer vos spams et également de centraliser vos différentes boites mails vers un unique compte mail.
Pour cela nous allons utiliser divers produit : courier-imap + procmail + fetchmail + spamassassin + roundcube
 

  • Installation de rouncube (roundcube va nous servir de webmail, vous n'êtes pas obligé de l'utiliser, mais c'est assez conviale)

1) Installer apache2 et mysql et les paquets nécessaires au fonctionnement de roundcube :
apt-get install apache2 php5 php5-mcrypt php5-mysql php5-intl


2) Récupèrer les sources de roundcube :
wget https://downloads.sourceforge.net/project/roundcubemail/roundcubemail/

3) Décompresser l'archive :
tar -xzvf roundcubemail-1.1.3-complete.tar.gz

4) Placer le répertoire dans la racine de votre serveur web :
mv roundcubemail-1.1.3 /var/www/
mv /var/www/roundcubemail-1.1.3 /var/www/roundcube

5) Mettre les bonnes permissions sur le répertoire roundcube et restart apache
chown -R www-data: /var/www/roundcube
/etc/init.d/apache2 restart
 
6) Sur mysql créer la base et le user pour roundcube :
create database roundcube ;
grant all privileges on roundcube.* TO [email protected] identified by "*********" ;
flush privileges ;

7) Maintenant vous pouvez vous laisser guider par l'assistant d'installation roundcube : http://server/roundcube/installer (il vaut mieux passer cette étape pour le moment et l'éffectuer aprés avoir configuré le serveur imap)

 

  • Mise en place de courier IMAP

1) Installation du paquet
apt-get install courier-imap

2) Créer un user sur le serveur pour lequel nous voulons traiter les mails :
adduser aurelien

3) Créer les répertoires mail du user, pour cela, se connecter au user et créer les répertoires imap :
su - aurelien
maildirmake Maildir
maildirmake -f Sent Maildir
maildirmake -f Queue Maildir
maildirmake -f junkmail Maildir
maildirmake -f virus Maildir
maildirmake -f Drafts Maildir
maildirmake -f Trash Maildir

4) Voila le compte imap de l'user fonctionne, vous pouvez le tester en vous y connectant depuis roundcube qui est parametrer préalablement avec le serveur imap que vous venez de configurer, localhost dans mon cas. Les identifiants sont ceux que vous avez mis lors de la création du compte linux de l'user.

 

  • Installation de procmail et fechmail.

Procmail va rediriger les mails ou il faut et fecthmail va récupérer les mails depuis les messageries que vous allez lui configurer.

1) En root, installation des paquets nécessaires :
apt-get install fetchmail procmail

2) Création des fichiers de configuration de procmail et fetchmail pour notre utilisateur :
su - aurelien

vi .fetchmailrc :

poll imap.a******.fr
protocol imap   
user aurelien.*****@*******.fr  
password ********   
nokeep

Explication :

poll = serveur sur lequel récupèrer les mails

protocol = Protocole à utiliser pour récupèrer les mails

user = identifiant du compte mail

password = password du compte mail

nokeep = option spécifiant de supprimer les mails une fois récupèrés. Pour les tests, je vous conseil de passer cette option à la valeur keep


vi .procmailrc

DEFAULT=$HOME/Maildir/
MAILDIR=$HOME/Maildir/
LOGFILE=$HOME/procmail.log

# By using the f and w flags and no condition, spamassassin is going add the X-Spam headers to every single mail, and then process other recipes.
# No lockfile is used.
:0fw
| /usr/bin/spamc

# Messages with a 5 stars or higher spam level are going to be deleted right away
# And since we never touch any inbox, no lockfile is needed.
:0
* ^X-Spam-Level: \*\*\*\*\*
$MAILDIR/.junkmail/

# If a mail with spam-status:yes was not deleted by previous line, it could be a false positive. So its going to be sent to an spam mailbox instead.
# Since we do not want the possibility of one procmail instance messing with another procmail instance, we use a lockfile
:0:
* ^X-Spam-Status: Yes
$MAILDIR/.junkmail/


 

  • Installation de spamassassin

1) Installation du paquet nécessaire :
apt-get install spamassassin

2) Configuration de spamassassin
vi /etc/spamassassin/local.cf :

# This is the right place to customize your installation of SpamAssassin.
#
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
# tweaked.
#
# Only a small subset of options are listed below
#
###########################################################################

#   Add *****SPAM***** to the Subject header of spam e-mails
#
rewrite_header Subject *****SPAM*****


#   Save spam messages as a message/rfc822 MIME attachment instead of
#   modifying the original message (0: off, 2: use text/plain instead)
#
# report_safe 1


#   Set which networks or hosts are considered 'trusted' by your mail
#   server (i.e. not spammers)
#
# trusted_networks 212.17.35.


#   Set file-locking method (flock is not safe over NFS, but is faster)
#
# lock_method flock


#   Set the threshold at which a message is considered spam (default: 5.0)
#
required_score 3.0


#   Use Bayesian classifier (default: 1)
#
# use_bayes 1


#   Bayesian classifier auto-learning (default: 1)
#
# bayes_auto_learn 1


#   Set headers which may provide inappropriate cues to the Bayesian
#   classifier
#
# bayes_ignore_header X-Bogosity
# bayes_ignore_header X-Spam-Flag
# bayes_ignore_header X-Spam-Status


#   Some shortcircuiting, if the plugin is enabled
#
ifplugin Mail::SpamAssassin::Plugin::Shortcircuit
#
#   default: strongly-whitelisted mails are *really* whitelisted now, if the
#   shortcircuiting plugin is active, causing early exit to save CPU load.
#   Uncomment to turn this on
#
# shortcircuit USER_IN_WHITELIST       on
# shortcircuit USER_IN_DEF_WHITELIST   on
# shortcircuit USER_IN_ALL_SPAM_TO     on
# shortcircuit SUBJECT_IN_WHITELIST    on

#   the opposite; blacklisted mails can also save CPU
#
# shortcircuit USER_IN_BLACKLIST       on
# shortcircuit USER_IN_BLACKLIST_TO    on
# shortcircuit SUBJECT_IN_BLACKLIST    on

#   if you have taken the time to correctly specify your "trusted_networks",
#   this is another good way to save CPU
#
# shortcircuit ALL_TRUSTED             on

#   and a well-trained bayes DB can save running rules, too
#
# shortcircuit BAYES_99                spam
# shortcircuit BAYES_00                ham

endif # Mail::SpamAssassin::Plugin::Shortcircuit



3) Restart du service
/etc/init.d/spamassassin restart

4) je vous conseil de mettre à jour spamassassin régulièrement, pour cela, planifiez cette commande :
/usr/bin/sa-update

# crontab -l
# m h  dom mon dow   command
* * * * 1 /usr/bin/sa-update
 

  • Test et mise en prod

1) Nous allons exécuter fetchmail sur le compte utilisateur dans un premier temps, attention, je vous conseille de passer la conf de fetchmail en keep pour ne pas perdre de mail:
su - aurelien
fetchmail

Si tout est ok, vos mails ont du arriver dans votre boite de réception avec les spams dans le dossier junkmail

2) Si c'est le cas, mise en prod, donc nous allons planifier la commande fetchmail dans l'user associé :
su - aurelien
crontab -l

# m h  dom mon dow   command
*/5 * * * * fetchmail

Voila, vous disposez maintenant d'un serveur mail parfaitement opérationnel qui rapatrie et filtre vos mails, n'oubliez pas d'exposer le port 143 sur votre box/routeur pour pouvoir configurer votre compte imap depuis l'extérieur de chez vous. Vous pouvez également exposer le port 80 pour consulter vos mails depuis le webmail roundcube.

 

Tags: 

www.le-gas.fr : Le guide de l'admin Systeme