Effraie.org

Pour un internet libre

Outils pour utilisateurs

Outils du site


doc:serveur:archi_mail

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
doc:serveur:archi_mail [2013/10/03 00:40]
Mathieu R
doc:serveur:archi_mail [2013/10/13 23:49] (Version actuelle)
Mathieu R [10-mail.conf]
Ligne 4: Ligne 4:
 **Cette documentation s'appuie sur l'expérience d'[[:|effraie.org]], mais peut servir d'exemple pour d'autre, ou aider chacun à configurer son serveur email.** **Cette documentation s'appuie sur l'expérience d'[[:|effraie.org]], mais peut servir d'exemple pour d'autre, ou aider chacun à configurer son serveur email.**
  
-Sur effraie.org, nous hébergeons:+La configuration présentée ici permet d'héberger: 
   * les emails de plusieurs utilisateurs,    * les emails de plusieurs utilisateurs, 
   * sur plusieurs domaines différents,    * sur plusieurs domaines différents, 
-  * un filtre antispam efficace et collaboratif,+  * dotés d'un filtre antispam et antivirus, efficace et collaboratif,
  
  
-  * Nos utilisateurs ont:+  * Les utilisateurs auront:
     * la possibilité de filtrer les messages côté serveur,      * la possibilité de filtrer les messages côté serveur, 
     * la possibilité de modifier leur mot de passe,      * la possibilité de modifier leur mot de passe, 
Ligne 16: Ligne 17:
  
  
-  * Pour consulter leurs emails, ils disposent :+  * Pour consulter leurs emails, ils disposerons :
     * d'un webmail moderne,     * d'un webmail moderne,
     *  d'un accés IMAP sécurisé,      *  d'un accés IMAP sécurisé, 
  
  
-  * Pour envoyer leurs emails, il peuvent utiliser notre serveur SMTP, +  * Pour envoyer leurs emails, il auront accès  à un serveur SMTP, 
-  * l'administrateur peut fixer un quota pour chaque boîte email, +  * l'administrateur pourra fixer un quota pour chaque boîte email, et des quota pour chaque domaine
-  * L'ensemble est sécurisé par SSL/TLS, avec un certificat délivré par [[http://cacert.org|l'autorité de certification collaborative CAcert]].+  * L'ensemble sera sécurisé par SSL/TLS, avec un certificat délivré par [[http://cacert.org|l'autorité de certification collaborative CAcert]].
  
 Pour faire cela, nous utilisons, sur un serveur en [[http://debian.org|Debian Stable]], [[http://postfix.org|Postfix]], [[http://dovecot.org|Dovecot]], [[http://list.org|GNU Mailman]], MySql, Amavis, [[http://clamav.net|Clamav]], [[http://spamassassin.apache.org|Spamassassin]], et [[http://roundcube.net|Roundcube]]. Pour faire cela, nous utilisons, sur un serveur en [[http://debian.org|Debian Stable]], [[http://postfix.org|Postfix]], [[http://dovecot.org|Dovecot]], [[http://list.org|GNU Mailman]], MySql, Amavis, [[http://clamav.net|Clamav]], [[http://spamassassin.apache.org|Spamassassin]], et [[http://roundcube.net|Roundcube]].
  
-**ATTENTION!** +<file text> 
-   +################################################################################# 
-**Nous déconseillons vivement de reproduire trait pour trait cette configuration sans comprendre ce que vous faites.**+##                                                                             ## 
 +##                          /!\   ATTENTION   /!\                              ## 
 +##                                                                             ## 
 +################################################################################# 
 +  
 +Nous déconseillons vivement de reproduire trait pour trait cette configuration 
 +sans comprendre ce que vous faites.
  
-**La configuration d'un serveur email nécessite une bonne compréhension des principes de fonctionnement d'un système UNIX, la capacité à débugguer et à comprendre les difficultés qui se présenteront nécessairement, la capacité à adapter cette documentation à votre propre environnement.**+La configuration d'un serveur email nécessite une bonne compréhension des  
 +principes de fonctionnement d'un système UNIX, la capacité d'analyser et de  
 +comprendre les difficultés qui se présenteront nécessairement, la capacité  
 +d'adapter cette documentation à votre propre environnement.
  
-**Nous vous conseillons de lire cette documentation en intégralité avant de tenter de l'appliquer. Mal configuré, un serveur email peut produire des catastrophes : Vous risquer d'offrir un relais pour du spam et d'être blacklisté par les principaux serveur emails de la planète. Commencez dans un environnement de test et/ou faites vous aider par quelqu'un d'expérimenté.**+Nous vous conseillons de lire cette documentation en intégralité avant de  
 +tenter de l'appliquer. 
  
 +Mal configuré, un serveur email peut produire des catastrophes : Vous risquez 
 +d'offrir un relais pour du spam et d'être blacklisté par les principaux serveurs 
 +emails de la planète. 
 +
 +Commencez dans un environnement de test et/ou faites vous aider par quelqu'un 
 +d'expérimenté.
 +
 +#################################################################################
 +</file>
  
  
Ligne 602: Ligne 622:
 <file dot 10-auth.conf> <file dot 10-auth.conf>
 ... ...
-mail_location = maildir:/srv/vmail/%d/%n:INDEX=/srv/datadisk01/vmail/%d/%n/indexes+mail_location = maildir:/srv/vmail/%d/%n:INDEX=/srv/vmail/%d/%n/indexes
 ... ...
 namespace inbox { namespace inbox {
Ligne 775: Ligne 795:
 === 90-plugin.conf === === 90-plugin.conf ===
  
-Ce fichier contient la configuration de tout les plugins activés dans dovecot (et qui nécessitent une configuration). Nous verrons le fonctionnement du plugin ''antispam'' plus loin.+Ce fichier contient la configuration de tout les plugins activés dans dovecot (et qui nécessitent une configuration). Nous verrons le fonctionnement du plugin ''antispam'' [[doc:serveur:archi_mail#entrainer_spamassassin_collaborativement]] plus loin.
  
 <file dot 90-plugin.conf> <file dot 90-plugin.conf>
 plugin { plugin {
-#Quota 
-  quota = dict:%u::proxy::quota 
-  quota_rule = *:storage=10M:messages=1000 
-  quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u 
-  quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u 
  
 #Antispam #Antispam
Ligne 798: Ligne 813:
 } }
 </file> </file>
 +
 +
 +=== 90-quota.conf ===
 +
 +Ce fichier permet de configurer Dovecot pour qu'il consulte les quota de chaque utilisateur dans la base de données, et l'avertisse au franchissement d'un seuil :
 +
 +<file dot 90-quota.conf>
 + ...
 +
 +## Quota limits
 +
 +plugin {
 +  quota = dict:%u::proxy::quota
 +  quota_rule = *:storage=10M:messages=1000
 +}
 +
 +...
 +
 +## Quota warning
 +plugin {
 +  quota_warning = storage=99%% quota-warning 99 %u
 +  quota_warning2 = storage=97%% quota-warning 97 %u
 +  quota_warning3 = storage=95%% quota-warning 95 %u
 +  quota_warning4 = storage=90%% quota-warning 90 %u
 +  quota_warning5 = storage=85%% quota-warning 85 %u
 +  quota_warning6 = storage=80%% quota-warning 80 %u
 +  quota_warning7 = storage=75%% quota-warning 75 %u
 +}
 +
 + ...
 +
 +## quota warning service
 +service quota-warning {
 +  executable = script /usr/local/bin/quota-warning.sh
 +  user = vmail
 +  unix_listener quota-warning {
 +  user = vmail
 +  }
 +}
 +
 + ...
 +
 +</file>
 +
 +Nous avons défini un script pour le service ''quota-warning'', le voilà :
 +
 +<file bash quota-warning.sh>
 +#!/bin/sh
 +
 +PERCENT=$1
 +USER=$2
 +FROM="postmaster@monserveur.tld"
 +qwf="/tmp/quota.warning.$$"
 +  
 +echo "From: $FROM
 +To: $USER 
 +Subject: Votre boite mail est pleine ($PERCENT%)
 +
 +Votre boite mail est pleine à $PERCENT%+, et risque d'être bientôt incapable de recevoir du courrier.
 +Veuillez effacer des messages et vider la corbeille. 
 +En cas de besoin, vous pouvez contacter votre administrateur: postmaster@monserveur.tld" >> $qwf
 +    
 +cat $qwf | /usr/sbin/sendmail -f $FROM "$USER"
 +rm -f $qwf
 +     
 +exit 0
 +</file>
 +
 +Pour que ce script soit utilisable, ajuster les permissions dessus :
 +<code>
 +chown dovecot:vmail /usr/local/bin/quota-warning.sh
 +chmod 775 /usr/local/bin/quota-warning.sh
 +</code>
 +=== dovecot.conf ===
 +
 +Il faut tout de même faire un petit tour dans ''/etc/dovecot.conf'' pour y configurer la récupération des quota en base de donnée :
 +
 +<file dot /etc/dovecot/dovecot.conf>
 +
 + ...
 +
 +dict {
 +  quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
 +  #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
 +}
 +
 + ...
 +
 +</file>
 +
 +Puis modifier ''/etc/dovecot/dovecot-dict-sql.conf.ext'' :
 +
 +<file dot dovecot-dict-sql.conf.ext>
 +connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=postfixadmin-password
 + 
 + ...
 +
 +map {
 +  pattern = priv/quota/storage
 +  table = quota2
 +  username_field = username
 +  value_field = bytes
 +}
 +map {
 +  pattern = priv/quota/messages
 +  table = quota2
 +  username_field = username
 +  value_field = messages
 +}
 +
 + ...
 +
 +</file>
 +
 +
 +
  
 ==== Utiliser SIEVE pour filtrer les emails ==== ==== Utiliser SIEVE pour filtrer les emails ====
Ligne 866: Ligne 997:
 <note important>Tel que configuré plus haut, votre serveur de courrier est opérationnel.  <note important>Tel que configuré plus haut, votre serveur de courrier est opérationnel. 
  
-Cependant, si l'on s'arrête là, **le serveur va très rapidement s'effondrer sous le poids du spam**, et quand bien même il serait assez puissant pour tenir le coup, vos utilisateurs ne s'y retrouveraient plus. [[https://fr.wikipedia.org/wiki/Spam|On estime qu'en décembre 2006, en france, 95% du trafic mail était du spam]]. Je doute que les choses se soient améliorées depuis. Je vous présente ici une stratégie de lutte contre le spam qui est efficace, et qui permet aux utilisateurs de signaler quand un spam n'est pas détecté, ou bien quand un mail est classé comme spam par erreur, afin d'améliorer automatiquement le filtre Antispam.</note>+Cependant, si l'on s'arrête là, **le serveur va très rapidement s'effondrer sous le poids du spam**, et quand bien même il serait assez puissant pour tenir le coup, vos utilisateurs ne s'y retrouveraient plus. [[https://fr.wikipedia.org/wiki/Spam|On estime qu'en décembre 2006, en france, 95% du trafic mail était du spam]]. Je doute que les choses se soient améliorées depuis((D'ailleurs, après vérification, en octobre 2013, sur ce serveur, postscreen rejette plus de 96% des connexions...)) . Je vous présente ici une stratégie de lutte contre le spam qui est efficace, et qui permet aux utilisateurs de signaler quand un spam n'est pas détecté, ou bien quand un mail est classé comme spam par erreur, afin d'améliorer automatiquement le filtre Antispam.</note>
  
  
Ligne 1548: Ligne 1679:
  > /var/lib/mailman/data/transport-mailman  > /var/lib/mailman/data/transport-mailman
 /usr/sbin/postmap /var/lib/mailman/data/transport-mailman /usr/sbin/postmap /var/lib/mailman/data/transport-mailman
 +/usr/sbin/postmap /var/lib/mailman/data/virtual-mailman
 </file> </file>
  
 Vérifiez ensuite la présence de ''postfix_to_mailman.py'' dans le dossier ''/etc/mailman/''. S'il n'y est pas, copiez-le depuis ''/usr/share/mailman/postfix-to-mailman.py''. Vérifiez ensuite la présence de ''postfix_to_mailman.py'' dans le dossier ''/etc/mailman/''. S'il n'y est pas, copiez-le depuis ''/usr/share/mailman/postfix-to-mailman.py''.
  
-<note warning>Pour une raison que j'ignore, le fichier ''/var/lib/mailman/data/virtual-mailman'', qui contient tout les alias de Mailman, n'est pas "postmapé" automatiquement. En attendant d'en trouver la raison, j'ai créée une tâche ''cron'' qui postmap ce fichier chaque demi-heure.</note> 
  
  
Ligne 1894: Ligne 2025:
  
 Malgré la documentation, vous aurez sans doute besoin d'aide. Le plus simple est d'aller la chercher à la source : sur les mailing-listes des logiciels concernés. Aussi bien Postfix que Spamassasin et Dovecot disposent de mailing-listes actives et nombreux sont ceux qui sont prêts à vous aider. Veillez simplement à poser correctement vos question, en fournissant les éléments de votre configuration, et des extraits des logs montrant votre problème. Malgré la documentation, vous aurez sans doute besoin d'aide. Le plus simple est d'aller la chercher à la source : sur les mailing-listes des logiciels concernés. Aussi bien Postfix que Spamassasin et Dovecot disposent de mailing-listes actives et nombreux sont ceux qui sont prêts à vous aider. Veillez simplement à poser correctement vos question, en fournissant les éléments de votre configuration, et des extraits des logs montrant votre problème.
 +
 +==== Des règles Spamassassin pour le spam français ====
 +
 +Les règles standards de spamassassin sont très efficace, mais voici quelques règles suplémentaires que j'utilise pour être plus restrictif avec le spam français :
 +
 +<file dot spamassassin_fr.rules>
 +#####################################################################################
 +##### FRENCH SPECIFIC SPAMASSASSIN RULES. 
 +##### USE AND REDISTRIBUTE WITH THIS NOTE AT YOUR OWN RISK AND PLEASURE.
 +##### AUTHOR: John GALLET
 +##### Version: 2008-JUNE-21
 +##### Latest: http://www.saphirtech.fr/
 +##### Status: It Works For Me (tm)
 +#####################################################################################
 +# Spam is legal in France !
 +body FR_SPAMISLEGAL                     /\b(Conform.+ment|En vertu).{0,5}(article.{0,4}34.{0,4})?la loi\b/i
 +describe FR_SPAMISLEGAL                 French: pretends spam is (l)awful.
 +lang fr describe FR_SPAMISLEGAL Invoque la loi informatique et libertes.
 +score FR_SPAMISLEGAL                    2.5
 +
 +body FR_SPAMISLEGAL_2                   /\bdroit d.acc.+s.{1,3}(de modification)?.{0,5}de rectification\b/i
 +describe FR_SPAMISLEGAL_2               French: pretends spam is (l)awful.
 +lang fr describe FR_SPAMISLEGAL_2 Invoque le droit de rectification cnil.
 +score FR_SPAMISLEGAL_2                  2.5
 +
 +#####
 +# yeah, sure.
 +body FR_NOTSPAM                         /\b(ceci|ce).{1,9} n.est pas.{1,5}spam\b/i
 +describe FR_NOTSPAM                     French: claims not to be spam.
 +lang fr describe FR_NOTSPAM Affirme ne pas etre du spam.
 +score FR_NOTSPAM                        4.0
 +
 +#####
 +## I can pay my taxes
 +body FR_PAYLESSTAXES                    /\b(paye|calcul|simul|r.+dui|investi).{1,7}(moins|vo|ses).{0,5}imp.+t(s)?\b/i
 +describe FR_PAYLESSTAXES                French: Pay less taxes
 +lang fr describe FR_PAYLESSTAXES Simulateurs et reductions d'impots.
 +score FR_PAYLESSTAXES                   3.0
 +
 +body FR_REALESTATE_INVEST               /\b(loi)? (de.robien|girardin).{1,15}(neuf|recentr.+|ancien|IR|IS|imp.+t(s)?|industriel(le)?)\b/i
 +describe FR_REALESTATE_INVEST           French: Invest in real-estate with tax-reductions
 +lang fr describe FR_REALESTATE_INVEST Reduction impots immobilier. 
 +score FR_REALESTATE_INVEST              2.5
 +
 +#####
 +# I won at the casino
 +body FR_ONLINEGAMBLING                  /\b(casino(s)?|jeu(x)?|joueur(s)?) (en ligne|de grattage)\b/i
 +describe FR_ONLINEGAMBLING              French: Online gambling
 +lang fr describe FR_ONLINEGAMBLING Jeux en ligne.
 +score FR_ONLINEGAMBLING                 3.0
 +
 +#####
 +# Baby, did you forget to take your meds ?
 +body FR_ONLINEMEDS                      /\bpharmacie(s)? (en ligne|internet)\b/i
 +describe FR_ONLINEMEDS                  French: Online meds ordering
 +lang fr describe FR_ONLINEMEDS Achat de medicaments en ligne.
 +score FR_ONLINEMEDS                     3.0
 +
 +######
 +# Tell me why
 +body FR_REASON_SUBSCRIBE                /\bVous recevez ce(t|tte)? (message|mail|m.+l|lettre|news.+) (car|parce que)\b/i
 +describe FR_REASON_SUBSCRIBE            French: you subscribed to my spam.
 +lang fr describe FR_REASON_SUBSCRIBE Indique pourquoi vous recevez le courrier.
 +score FR_REASON_SUBSCRIBE               1.5
 +
 +#####
 +# How to unsubscribe
 +body FR_HOWTOUNSUBSCRIBE                /\b(souhaitez|d.+sirez|pour).{1,10}(plus.{1,}recevoir|d.+sincrire|d.+sinscription|d.+sabonner).{0,10}(information|email|mail|mailing|newsletter|lettre|liste|message|offre|promotion|programme)(s)?\b/i
 +describe FR_HOWTOUNSUBSCRIBE            French: how to unsubscribe
 +lang fr describe FR_HOWTOUNSUBSCRIBE Indique comment se desabonner.
 +score FR_HOWTOUNSUBSCRIBE               2.0
 +
 +####
 +# Various "CRM" (Could Remove Me)
 +#####
 +header FR_MAILER_1                      X-Mailer =~ /(delosmail|cabestan|ems|mp6|wamailer|phpmailer|eMailink|Accucast|Benchmail)/i
 +describe FR_MAILER_1                    French spammy X-Mailer
 +lang fr describe FR_MAILER_1 X-Mailer couramment employe pour des spams en francais.
 +score FR_MAILER_1                       2.0
 +
 +header FR_MAILER_2                      X-EMV-CampagneId =~ /.+/
 +describe FR_MAILER_2                    French spammy mailer header
 +lang fr describe FR_MAILER_2 X-Mailer couramment employe pour des spams en francais.
 +score FR_MAILER_2                       2.0
 +
 +#####################################################################################
 +##### END FRENCH SPECIFIC SPAMASSASSIN RULES.
 +#####################################################################################
 +</file>
 +
 +Pour les utiliser, copier les simplement à la fin de votre fichier ''/etc/spamassassin/local.cf''. Je les ai trouvé [[http://www.saphirtech.com/spamassassin.html|ici]], et j'ai baissé la valeur des scores, histoire de ne pas avoir trop de //faux-positifs//. Libre à vous d'utiliser où non ces règles qui n'ont rien d'officielles.
  
 ===== Remerciements ===== ===== Remerciements =====
Ligne 1907: Ligne 2129:
  
  
 +===== Reste à rédiger  =====
 +ces élèments seront bientôt intégrés à la documentation : 
 +
 +==== Supression de l'IP de l'expéditeur dans les mails sortants, ====
 +==== signature DKIM ====
 +==== Expire & Expunge avec Dovecot ====
 +==== Sécuriser le submission port ====
  
doc/serveur/archi_mail.1380753635.txt.gz · Dernière modification: 2013/10/03 00:40 de Mathieu R