Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
filtrage_des_courriels_avec_dovecot [Le 09/09/2020, 13:10] – Correction expression sefran | filtrage_des_courriels_avec_dovecot [Le 09/09/2020, 15:16] (Version actuelle) – Correction expression sefran | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | |||
+ | ====== Filtrage des courriels avec Dovecot ====== | ||
+ | Dovecot est une application d' | ||
+ | |||
+ | Cette application vous permet de trier et classer vos courriels à l' | ||
+ | |||
+ | ===== Installation ===== | ||
+ | [[: | ||
+ | |||
+ | |||
+ | ===== Configuration ===== | ||
+ | Pour configurer le MDA Dovecot… | ||
+ | |||
+ | ==== Configuration du serveur de messagerie MTA ==== | ||
+ | === Postfix === | ||
+ | [[: | ||
+ | |||
+ | Si vous voulez filtrer par un marquage vos courriels SPAMs ou Virus au niveau du serveur MTA, il vous faudra [[: | ||
+ | |||
+ | === Exim4 === | ||
+ | [[https:// | ||
+ | |||
+ | ==== Définir les emplacements des boîtes aux lettres des utilisateurs ==== | ||
+ | <code bash> | ||
+ | |||
+ | < | ||
+ | … | ||
+ | mail_location = maildir: | ||
+ | … | ||
+ | </ | ||
+ | |||
+ | === Choix du format de boîtes aux lettres === | ||
+ | Par défaut, Dovecot utilise la disposition de répertoires Maildir++. Cela signifie que toutes les boîtes aux lettres sont stockées dans un seul répertoire et précédées d'un point. | ||
+ | |||
+ | Par exemple: | ||
+ | <code bash> | ||
+ | ├── .dossier | ||
+ | │ | ||
+ | │ | ||
+ | │ | ||
+ | └── .dossier.sous_dossier | ||
+ | ├── cur | ||
+ | ├── new | ||
+ | └── tmp | ||
+ | </ | ||
+ | Si vous souhaitez un format de boîtes aux lettres avec des répertoires hiérarchiques, | ||
+ | <code bash> | ||
+ | └── dossier | ||
+ | ├── cur | ||
+ | ├── new | ||
+ | ├── tmp | ||
+ | └── sous_dossier | ||
+ | ├── cur | ||
+ | ├── new | ||
+ | └── tmp | ||
+ | </ | ||
+ | vous devrez activer la disposition fs: | ||
+ | < | ||
+ | ==== Activer la technique de distribution des courriels ==== | ||
+ | Le MDA utilise deux façons de distribuer les courriels, par l' | ||
+ | |||
+ | === Activer le support LDA === | ||
+ | <code bash> | ||
+ | |||
+ | < | ||
+ | … | ||
+ | lda_mailbox_autocreate = yes | ||
+ | lda_mailbox_autosubscribe = yes | ||
+ | protocol lda { | ||
+ | mail_plugins = $mail_plugins #sieve | ||
+ | }</ | ||
+ | |||
+ | === Activer le support LMTP === | ||
+ | |||
+ | ==== Sécuriser le transport du courriel ==== | ||
+ | <code bash> | ||
+ | |||
+ | < | ||
+ | … | ||
+ | disable_plaintext_auth = yes | ||
+ | … | ||
+ | auth_mechanisms = plain login | ||
+ | … | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | < | ||
+ | … | ||
+ | ssl = yes | ||
+ | ssl_cert = </ | ||
+ | ssl_key = </ | ||
+ | … | ||
+ | </ | ||
+ | |||
+ | ==== Configuration du plugin sieve ==== | ||
+ | <code bash> | ||
+ | |||
+ | < | ||
+ | sieve = file: | ||
+ | | ||
+ | }</ | ||
+ | |||
+ | ===== Créer des filtres ===== | ||
+ | ==== Création de règles globales ==== | ||
+ | <code bash> | ||
+ | sudo nano / | ||
+ | |||
+ | L' | ||
+ | < | ||
+ | if header :contains " | ||
+ | fileinto " | ||
+ | }</ | ||
+ | |||
+ | <code bash> | ||
+ | ==== Création de règles utilisateur ==== | ||
+ | <code bash> | ||
+ | |||
+ | === Filtration par entête === | ||
+ | Utiliser if(si)/ | ||
+ | < | ||
+ | if address :is " | ||
+ | fileinto " | ||
+ | } elsif envelope :is " | ||
+ | fileinto " | ||
+ | } elsif anyof (header :contains " | ||
+ | | ||
+ | fileinto " | ||
+ | } else { | ||
+ | # Le reste va dans INBOX | ||
+ | # par défaut c'est garder un copie " | ||
+ | keep; | ||
+ | }</ | ||
+ | |||
+ | **anyof** c'est un «ou» logique, avec **allof** vous pouvez faire un «et» logique. | ||
+ | |||
+ | Transférer les courriels avec " | ||
+ | < | ||
+ | redirect " | ||
+ | }</ | ||
+ | |||
+ | Pré-filtrage de mes courriel utilisateurs locaux : | ||
+ | < | ||
+ | #Si je suis en destinataire ou en copie d'un mail c'est qu'il m'est destiné directement | ||
+ | if header :contains [" | ||
+ | { | ||
+ | fileinto " | ||
+ | stop; | ||
+ | #Sinon, si l' | ||
+ | } elsif header :matches " | ||
+ | { | ||
+ | fileinto " | ||
+ | #Sinon laisse moi faire le tri ailleurs | ||
+ | } else | ||
+ | { | ||
+ | fileinto " | ||
+ | }</ | ||
+ | |||
+ | === Marquer ou mettre en évidence votre courriel === | ||
+ | Certains clients de messagerie MUA utilisent ces indicateurs: | ||
+ | < | ||
+ | require " | ||
+ | if anyof (exists " | ||
+ | header : | ||
+ | ".* monthly run output", | ||
+ | ".* daily run output", | ||
+ | ".* weekly run output" | ||
+ | addflag " | ||
+ | |||
+ | # Other flags: | ||
+ | # addflag " | ||
+ | # addflag " | ||
+ | # addflag " | ||
+ | # addflag " | ||
+ | # addflag " | ||
+ | # | ||
+ | }</ | ||
+ | |||
+ | Copie locale de vos courriels : | ||
+ | < | ||
+ | if envelope " | ||
+ | { | ||
+ | | ||
+ | }</ | ||
+ | |||
+ | === Règles anti-spam/ | ||
+ | La plupart des antivirus et anti-spam ajoutent un en-tête spécial aux messages électroniques. Afin que les utilisateurs puissent appliquer le filtrage en conséquence, | ||
+ | |||
+ | == Filtrage direct à l'aide de l' | ||
+ | L' | ||
+ | < | ||
+ | if header :contains " | ||
+ | fileinto " | ||
+ | }</ | ||
+ | |||
+ | L' | ||
+ | < | ||
+ | discard; | ||
+ | stop; | ||
+ | }</ | ||
+ | |||
+ | Certains analyseurs de spam ne produisent qu'un score numérique en en-tête. Le test devient alors plus complexe : | ||
+ | < | ||
+ | if allof ( | ||
+ | not header :matches " | ||
+ | | ||
+ | { | ||
+ | discard; | ||
+ | stop; | ||
+ | }</ | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | == Filtrage à l'aide des extensions spamtest et virustest == | ||
+ | Lorsque les extensions spamtest et virustest sont configurées sur le serveur MTA, les utilisateurs (les client MUA) peuvent avoir un moyen beaucoup plus simple de filtrer respectivement les messages de spam et de virus. Pour filtrer le spam, l' | ||
+ | < | ||
+ | require " | ||
+ | require " | ||
+ | require " | ||
+ | |||
+ | /* Si spamtest échoue pour quelque raison que se soit, exemple de l' | ||
+ | * le fichier est déposé dans un dossier spécial. | ||
+ | */ | ||
+ | if spamtest :value " | ||
+ | fileinto " | ||
+ | |||
+ | /* Si le score de spamtest (entre 1 et 10) est plus grand ou égal à 3, | ||
+ | * le fichier est déposé dans le dossier de spams : | ||
+ | */ | ||
+ | } elsif spamtest :value " | ||
+ | fileinto " | ||
+ | |||
+ | /* Pour une évaluation plus fine des scores, la balise «: | ||
+ | * La règle suivante supprime tous les messages avec un pourcentage supérieur à 85% | ||
+ | * par rapport au maximum. | ||
+ | */ | ||
+ | } elsif spamtest :value " | ||
+ | discard; | ||
+ | } | ||
+ | |||
+ | /* Les autres messages sont classés dans INBOX */</ | ||
+ | |||
+ | L' | ||
+ | < | ||
+ | require " | ||
+ | require " | ||
+ | require " | ||
+ | |||
+ | /* Non scanné ? */ | ||
+ | if virustest :value " | ||
+ | fileinto " | ||
+ | |||
+ | /* Infecté avec une probabilité élevée (entre 1 et 5) */ | ||
+ | } if virustest :value " | ||
+ | /* Le mettre en quarantaine dans un dossier spécial (encore un peu dangereux) */ | ||
+ | fileinto " | ||
+ | |||
+ | /* Infecté */ | ||
+ | } elsif virustest :value " | ||
+ | /* Suppression */ | ||
+ | discard; | ||
+ | }</ | ||
+ | |||
+ | == Réponse automatique d’absence == | ||
+ | La fonctionnalité de réponse automatique est implémentée à l'aide de l' | ||
+ | < | ||
+ | # Déplacer le spam vers le dossier SPAMs | ||
+ | if header :contains " | ||
+ | fileinto " | ||
+ | # Arrêter ici pour que ne pas répondre aux spams | ||
+ | stop; | ||
+ | } | ||
+ | vacation | ||
+ | # Répondre au plus une fois par jour à un même expéditeur | ||
+ | :days 1 | ||
+ | :subject " | ||
+ | # Liste des adresses de destinataires supplémentaires qui sont incluses dans la réponse automatique. | ||
+ | # Si le destinataire d'un courriel n'est pas le destinataire dans le courriel et qu'il ne figure pas dans cette liste, | ||
+ | # aucune réponse de vacances n'est envoyée. | ||
+ | :addresses [" | ||
+ | "Je suis absent du bureau, veuillez contacter Linus Torval. | ||
+ | Bien cordialement | ||
+ | Tux Opensource";</ | ||
+ | |||
+ | Il est également possible d' | ||
+ | < | ||
+ | # Stocker l' | ||
+ | if header :matches " | ||
+ | set " | ||
+ | } | ||
+ | vacation | ||
+ | :days 1 | ||
+ | :subject "Out of office reply${subjwas}" | ||
+ | :addresses [" | ||
+ | "Je suis absent du bureau, veuillez contacter Linus Torval. | ||
+ | Bien cordialement | ||
+ | Tux Opensource";</ | ||
+ | |||
+ | == Archiver des messages par date == | ||
+ | Vous pouvez archiver des messages dans une arborescence de dossiers comme suit: | ||
+ | < | ||
+ | |||
+ | # Extraire les informations de date | ||
+ | if currentdate :matches " | ||
+ | if currentdate :matches " | ||
+ | |||
+ | # Archivez les éléments de la liste de diffusion Dovecot par année et par mois. | ||
+ | # Créez le dossier s'il n' | ||
+ | if header :is " | ||
+ | fileinto :create " | ||
+ | }</ |