Outils pour utilisateurs

Outils du site


linux_mail_postfix_dovecot_sogo

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édentesRévision précédente
Prochaine révision
Révision précédente
linux_mail_postfix_dovecot_sogo [2020/11/05 11:55] – modification externe 127.0.0.1linux_mail_postfix_dovecot_sogo [2022/03/27 12:20] (Version actuelle) – [Apprentissage des spams dans dovecot] root
Ligne 50: Ligne 50:
 mydestination = $myhostname, localhost.$mydomain, localhost mydestination = $myhostname, localhost.$mydomain, localhost
 smtpd_recipient_restrictions = permit_mynetworks reject_unauth_destination smtpd_recipient_restrictions = permit_mynetworks reject_unauth_destination
 +smtpd_sender_restrictions = reject_unknown_sender_domain
 home_mailbox = Maildir/ home_mailbox = Maildir/
  
Ligne 61: Ligne 62:
 smtpd_use_tls=yes smtpd_use_tls=yes
 smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
 +
 +
 +smtp_tls_key_file =  /etc/postfix/ssl/yourkey.key           
 +smtp_tls_cert_file = /etc/postfix/ssl/yourcertificate.crt  
 +smtp_use_tls=yes
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
 +smtp_tls_security_level=may
 +smtp_tls_note_starttls_offer = yes
 +smtp_tls_enforce_peername = no
 +
 smtpd_tls_security_level=may smtpd_tls_security_level=may
 #Transport LDA #Transport LDA
Ligne 293: Ligne 303:
   - Pour supporter Sieve dans SOGo, editer le fichier sogo.conf <code>nano /etc/sogo/sogo.conf</code> et rajouter les deux lignes suivantes: <code> NGImap4ConnectionStringSeparator = ".";   - Pour supporter Sieve dans SOGo, editer le fichier sogo.conf <code>nano /etc/sogo/sogo.conf</code> et rajouter les deux lignes suivantes: <code> NGImap4ConnectionStringSeparator = ".";
 SOGoSieveServer = "sieve://127.0.0.1:4190";</code> SOGoSieveServer = "sieve://127.0.0.1:4190";</code>
 +
 +==== Quota ====
 +  - Dans le fichier 10-mail.conf rajouter ceci <code>mail_plugins = quota</code>
 +  - Dans le fichier 20-imap.conf rajouter <code>protocol imap {
 +  mail_plugins = $mail_plugins imap_sieve antispam imap_quota
 +}
 +</code>
 +  - Dans le fichier 20-lmtp.conf rajouter <code>protocol lmtp {
 +  mail_plugins = $mail_plugins sieve quota
 +}
 +</code>
 +  - Dans le fichier 90-quota.conf modifier <code>plugin {
 +  quota_warning = storage=95%% quota-warning 95 %u
 +  quota_warning2 = storage=80%% quota-warning 80 %u
 +}
 +service quota-warning {
 +  executable = script /usr/local/bin/quota-warning.sh
 +  user = dovecot
 +  unix_listener quota-warning {
 +    user = vmail
 +  }
 +}
 +plugin {
 +  #quota = dirsize:User quota
 +  #quota = maildir:User quota
 +  #quota = dict:User quota::proxy::quota
 +  quota = count:User quota
 +  #quota = fs:User quota
 +  quota_vsizes = yes
 +}
 +</code>
 +  - Dans le fichier conf.d/auth-sql.conf.ext <code>passdb {
 +  driver = sql
 +
 +  # Path for SQL configuration file, see example-config/dovecot-sql.conf.ext
 +  args = /etc/dovecot/dovecot-sql.conf.ext
 +}
 +
 +# "prefetch" user database means that the passdb already provided the
 +# needed information and there's no need to do a separate userdb lookup.
 +# <doc/wiki/UserDatabase.Prefetch.txt>
 +#userdb {
 +#  driver = prefetch
 +#}
 +
 +userdb {
 +driver = prefetch
 +}
 +
 +
 +userdb {
 +  driver = sql
 +  args = /etc/dovecot/dovecot-sql.conf.ext
 +}
 +</code>
 +  - Dans le fichier 10-mail.conf avec: <code>mail_uid = 6000
 +mail_gid = 6000</code>
 +  - Dans le fichier /etc/dovecot/dovecot-sql.conf.ext modifier/ajouter les deux lignes suivantes: <code>password_query = SELECT concat(a.user,'@',b.`domain` ) as user, password, CONCAT('*:storage=', quota) AS quota_rule FROM posogodo.mailboxes a left join posogodo.domains b on a.t_domains = b.id where a.active='1' and b.active='1' and concat(a.user,'@',b.`domain` ) = '%u';
 +user_query = SELECT concat(a.user,'@',b.`domain` ) as user,concat('/srv/vmail','/',b.domain,'/',a.user) as home, password, CONCAT('*:storage=', quota) AS quota_rule FROM posogodo.mailboxes a left join posogodo.domains b on a.t_domains = b.id where a.active='1' and b.active='1' and concat(a.user,'@',b.`domain` ) = '%u';
 +</code>
 +  - Faire un script d'alerte pour dépassement de quota: <code bash>nano /usr/local/bin/quota-warning.sh</code> Avec le contenu suivant: <file bash quota-warning.sh>#!/bin/bash
 +PERCENT=$1
 +USER=$2
 +cat << EOF | /usr/sbin/sendmail $USER -O "plugin/quota=maildir:User quota:noenforcing"
 +From: postmaster@makeitsimple.be
 +Subject: quota warning
 +
 +Attention: Votre boite email est pleine à $PERCENT%.
 +Passé 100% il ne sera plus possible de recevoir du courrier.
 +Veuillez prendre les actions nécessaires pour nettoyer votre boite ou prendre un abonnement plus important.
 +
 +EOF
 +</file>
 +  - Donner les droits nécessaires à ce fichier<code bash>chown vmail:vmail /usr/local/bin/quota-warning.sh
 +chmod +x /usr/local/bin/quota-warning.sh</code>
 +  - Quelques commandes de debugging:
 +    - doveadm mailbox status -u vincent@x.org vsize '*'
 +    - doveadm quota recalc
 +    - doveadm quota get -u vincent@x.org
 +  - Pour plus d'infos, dans le fichier 10-loggin mettre mail-debug & auth-debug sur true
  
 ===== rspamd ===== ===== rspamd =====
Ligne 319: Ligne 409:
 backend = "redis"; backend = "redis";
 autolearn = true;</code> autolearn = true;</code>
-  - Editer le fichier milter_headers: <code bash>nano /etc/rspamd/override.d/milter_headers.conf</code>Contenu: <code>extended_spam_headers = true;+  - Editer le fichier milter_headers: <code bash>nano /etc/rspamd/local.d/milter_headers.conf</code>Contenu: <code>extended_spam_headers = true;
 skip_local = false; skip_local = false;
-skip_authenticated = false;</code>+skip_authenticated = false; 
 +use = ["spam-header"]; 
 +routines { 
 +   spam-header { 
 +#     header = "X-Spam-Flag"; 
 +#     value = "Yes"; 
 +     header = "X-Spam"; 
 +     value = "Yes"; 
 +   } 
 +
 +</code>
   - Redémarrer rspamd: <code bash>systemctl restart rspamd</code>   - Redémarrer rspamd: <code bash>systemctl restart rspamd</code>
   - Ajouter un reverse proxy dans nginx: <code bash>nano /etc/nginx/sites-enabled/default</code>Contenu: <code nginx>location ^~ /rspamd/ {   - Ajouter un reverse proxy dans nginx: <code bash>nano /etc/nginx/sites-enabled/default</code>Contenu: <code nginx>location ^~ /rspamd/ {
Ligne 352: Ligne 452:
   - Compiler la règle: <code bash>sievec /etc/dovecot/sieve-after/spam-to-folder.sieve   - Compiler la règle: <code bash>sievec /etc/dovecot/sieve-after/spam-to-folder.sieve
 service dovecot restart</code> service dovecot restart</code>
 +  - Création de deux règles pour whitelister les domaines ou les ips. Editer le fichier multimap.conf <code bash>nano /etc/rspamd/local.d/multimap.conf</code>Et coller le contenu suivant <file  multimap.conf>WHITELIST_SENDER_DOMAIN {
 +      type = "from";
 +      filter = "email:domain";
 +      map = "/etc/rspamd/local.d/whitelist.sender.domain.map";
 +      score = -10.0
 +}
 +
 +IP_WHITELIST {
 +      type = "ip";
 +      prefilter = "true";
 +      map = "/etc/rspamd/local.d/whitelist.ip.map";
 +      action = "accept";
 +}
 +</file>
 +    - Créer ensuite un fichier whitelist.sender.domain.map avec les domaines/emails à whitelister
 +    - Créer aussi un fichier whitelist.ip.map pour autoriser des ips spécifiques (j'utilise 127.0.0.1 pour éviter que les quota warning ne soient flaggués SPAM)
  
 ==== Signer DKIM ==== ==== Signer DKIM ====
Ligne 420: Ligne 536:
  
 ==== Apprentissage des spams dans dovecot ==== ==== Apprentissage des spams dans dovecot ====
-  - Installer le paquet <code bash>apt install dovecot-antispam</code> +  - Editer le fichier 20-imap.conf <code bash>nano /etc/dovecot/conf.d/20-imap.conf</code> et rajouter **imap_sieve** à la hauteur de mail_plugins. 
-  - Editer le fichier 20-imap.conf <code bash>nano /etc/dovecot/conf.d/20-imap.conf</code> et rajouter **antispam** à la hauteur de mail_plugins+  - Editer le fichier 90-sieve.conf <code bash>nano /etc/dovecot/conf.d/90-sieve.conf</code> et rajouter **sieve_plugins = sieve_imapsieve sieve_extprograms** dans le block "plugin"
-  - Editer le fichier 90-plugin.conf <code bash>nano /etc/dovecot/conf.d/90-plugin.conf</code> Et ajouter les lignes suivantes: <code>    antispam_backend = pipe +  - Editer le fichier 90-plugin.conf <code bash>nano /etc/dovecot/conf.d/90-plugin.conf</code> Et ajouter les lignes suivantes: <code>    # From elsewhere to Junk folder 
-    antispam_spam    = Junk +imapsieve_mailbox1_name = Junk 
-    antispam_trash   Trash +imapsieve_mailbox1_causes COPY 
-    antispam_mail_sendmail = /usr/local/bin/rspamc +imapsieve_mailbox1_before file:/etc/dovecot/sieve/learn-spam.sieve
-    antispam_mail_spam     = learn_spam +
-    antispam_mail_notspam  = learn_ham +
-    antispam_mail_sendmail_args = -h;localhost:11334;-P;password </code> +
  
 +# From Junk folder to elsewhere
 +imapsieve_mailbox2_name = *
 +imapsieve_mailbox2_from = Junk
 +imapsieve_mailbox2_causes = COPY
 +imapsieve_mailbox2_before = file:/etc/dovecot/sieve/learn-ham.sieve
 +
 +sieve_pipe_bin_dir = /etc/dovecot/sieve
 +sieve_global_extensions = +vnd.dovecot.pipe </code> 
 +  - Créer un dossier de config sieve <code bash>mkdir /etc/dovecot/sieve</code>
 +  - Ensuite créer un fichier learn-spam.sieve <code bash>nano /etc/dovecot/sieve/learn-spam.sieve</code> dont le contenu est: <code>require ["vnd.dovecot.pipe", "copy", "imapsieve"];
 +pipe :copy "rspamd-learn-spam.sh";</code>
 +  - Créer un fichier learn-ham.sieve <code bash>nano /etc/dovecot/sieve/learn-ham.sieve</code> dont le contenu est: <code>require ["vnd.dovecot.pipe", "copy", "imapsieve"];
 +pipe :copy "rspamd-learn-ham.sh";</code>
 +  - Compiler les scripts sieve et appliquer les droits<code bash>sievec /etc/dovecot/sieve/learn-spam.sieve
 +sievec /etc/dovecot/sieve/learn-ham.sieve
 +chmod u=rw,go= /etc/dovecot/sieve/learn-{spam,ham}.sieve
 +chown vmail.vmail /etc/dovecot/sieve/learn-{spam,ham}.sieve</code>
 +  - Créer un fichier rspamd-learn-spam.sh <code bash>nano /etc/dovecot/sieve/rspamd-learn-spam.sh</code> dont le contenu est: <code>#!/bin/sh
 +exec /usr/bin/rspamc learn_spam -h localhost:11334</code>
 +  - et un fichier rspamd-learn-ham.sh <code bash>nano /etc/dovecot/sieve/rspamd-learn-ham.sh</code> dont le contenu est: <code>#!/bin/sh
 +exec /usr/bin/rspamc learn_ham -h localhost:11334</code>
 +  - Changer les droits et redémarrer dovecot <code bash>chmod u=rwx,go= /etc/dovecot/sieve/rspamd-learn-{spam,ham}.sh
 +chown vmail.vmail /etc/dovecot/sieve/rspamd-learn-{spam,ham}.sh
 +service dovecot restart</code>
  
 ==== Filtrer les virus ==== ==== Filtrer les virus ====
Ligne 476: Ligne 613:
  
   - Installer la clé gpg du dépot SOGo: <code bash>   - Installer la clé gpg du dépot SOGo: <code bash>
-gpg --keyserver hkp://keys.gnupg.net --recv-key 0x810273C4+gpg --keyserver hkp://pgp.mit.edu --recv-key 0x810273C4
 gpg --armor --export 0x810273C4 | apt-key add -</code> gpg --armor --export 0x810273C4 | apt-key add -</code>
   - Créer un dépot <code bash>nano /etc/apt/sources.list.d/sogo.list</code>Avec le contenu:<code># Commercials   - Créer un dépot <code bash>nano /etc/apt/sources.list.d/sogo.list</code>Avec le contenu:<code># Commercials
Ligne 691: Ligne 828:
       resolver localhost;       resolver localhost;
              
-      proxy_connect_timeout 75+      proxy_connect_timeout 4000
-      proxy_send_timeout 3600+      proxy_send_timeout 4000
-      proxy_read_timeout 3600;+      proxy_read_timeout 4000;
       proxy_buffers 64 256k;       proxy_buffers 64 256k;
              
Ligne 716: Ligne 853:
     * https://workaround.org/ispmail/stretch/filtering-out-spam-with-rspamd     * https://workaround.org/ispmail/stretch/filtering-out-spam-with-rspamd
     * https://blog.debugo.fr/serveur-messagerie-rspamd/     * https://blog.debugo.fr/serveur-messagerie-rspamd/
 +    * https://github.com/rspamd/rspamd/issues/3078
   * Sogo:   * Sogo:
     * https://forum.iredmail.org/topic10132-iredmail-support-a-lof-of-error-such-as-no-child-available-to-handle-incoming-request.html     * https://forum.iredmail.org/topic10132-iredmail-support-a-lof-of-error-such-as-no-child-available-to-handle-incoming-request.html
linux_mail_postfix_dovecot_sogo.1604577310.txt.gz · Dernière modification : (modification externe)