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
pratique:informatique:mail:serveur_mail2 [21/09/2024 11:47] – [Mycfg] Zatalyzpratique:informatique:mail:serveur_mail2 [10/10/2024 12:33] (Version actuelle) – [Todo] Zatalyz
Ligne 131: Ligne 131:
  
 Mon apt est configuré pour ne pas installer par défaut les recommandés et suggérés, ce qui demande de voir la liste et de compléter au besoin. Ici, à installer en complément pour se simplifier la vie : Mon apt est configuré pour ne pas installer par défaut les recommandés et suggérés, ce qui demande de voir la liste et de compléter au besoin. Ici, à installer en complément pour se simplifier la vie :
-  sudo apt install shared-mime-info xdg-user-dirs php-curl php-gd+  sudo apt install shared-mime-info xdg-user-dirs php-curl php-gd php-cli
      
 et enfin (parce qu'il est un chouïa pénible sinon) et enfin (parce qu'il est un chouïa pénible sinon)
Ligne 145: Ligne 145:
 ===== Un peu de web ===== ===== Un peu de web =====
 Avec Apache, parce que je le connais, mais vu ce qu'il y a à faire, Nginx suffira aussi. Ou Lighttpd. Faites votre vie, adaptez. En vrai faudra que je vois à mettre Lighttpd qui serait parfait pour le job. Avec Apache, parce que je le connais, mais vu ce qu'il y a à faire, Nginx suffira aussi. Ou Lighttpd. Faites votre vie, adaptez. En vrai faudra que je vois à mettre Lighttpd qui serait parfait pour le job.
 +
 +<WRAP center round tip 60%>
 +Si on utilise Apache,  en profiter pour le sécuriser d'après https://khaganat.net/wikhan/fr:apache. 
 +</WRAP>
 +
  
 C'est plus pour voir si ça marche... et par la suite, si un bot (voir une vraie curieuse) regarde la page principale, y'aura un bout d'info. Actuellement je vais aussi servir Phpmyadmin (mais ce dernier va disparaitre une fois les bidouilles finies) et Postfixadmin, ceui-ci pouvant sans souci être sur un autre serveur (et ce serait peut-être mieux !). C'est plus pour voir si ça marche... et par la suite, si un bot (voir une vraie curieuse) regarde la page principale, y'aura un bout d'info. Actuellement je vais aussi servir Phpmyadmin (mais ce dernier va disparaitre une fois les bidouilles finies) et Postfixadmin, ceui-ci pouvant sans souci être sur un autre serveur (et ce serait peut-être mieux !).
Ligne 317: Ligne 322:
 # Les variations spécifiques à chaque fichier # Les variations spécifiques à chaque fichier
 variations=("query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = 0 AND active = 1" variations=("query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = 0 AND active = 1"
-            "query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1"+            "query = SELECT maildir, quota FROM mailbox WHERE username='%s' AND active = 1"
             "query = SELECT goto FROM alias WHERE address='%s' AND active = 1"             "query = SELECT goto FROM alias WHERE address='%s' AND active = 1"
             )             )
Ligne 355: Ligne 360:
  
 ==== master.cf ==== ==== master.cf ====
-Attention, dans ce fichier, les espaces et tabulations ne sont pas anodines +Attention, dans ce fichier, les espaces et tabulations ne sont pas anodines.
-Ajouter ceci à la fin : +
-<code>dovecot  unix  -  n  n  -  -  pipe +
-  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient} +
-</code>+
   * Il y a deux espaces entre dovecot, unix, etc.   * Il y a deux espaces entre dovecot, unix, etc.
   * Le tiret est spécial, je crois... dans le doute copiez ce qu'il y a dans le fichier, avant.    * Le tiret est spécial, je crois... dans le doute copiez ce qu'il y a dans le fichier, avant. 
Ligne 365: Ligne 366:
   * ensuite il n'y a qu'un espace entre DRhu, user, etc.   * ensuite il n'y a qu'un espace entre DRhu, user, etc.
 <WRAP center round todo 60%> <WRAP center round todo 60%>
-Pause, todo. +Il manque pas mal de choses dans cette zonemais on avance.
- +
-Clairement un bon bordel, les query en exemple dans la doc de postfixadmin étant incomplèteset ne couvrant pas forcément mes bidouilles pour les jokers.  +
- +
-Au passage ma liste ne couvrait pas tous les fichiers...+
 </WRAP> </WRAP>
  
Ligne 411: Ligne 408:
 </code> </code>
  
-On indique à Dovecot où sont réellement les boites mails, et d'utiliser les quotas.+On indique à Dovecot où sont réellement les boites mails, d'utiliser les quotas et de pouvoir lire les fichiers compressés.
 <code bash /etc/dovecot/conf.d/10-mail.conf> <code bash /etc/dovecot/conf.d/10-mail.conf>
 mail_location = maildir:/var/vmail/%d/%n/Maildir mail_location = maildir:/var/vmail/%d/%n/Maildir
-mail_plugins = quota+mail_plugins = quota zlib
 </code> </code>
  
-On ajoute aussi la compression avec imap, ce qui va économiser la bande passante :+On ajoute aussi quelques plugins sur imap afin d'améliorer les choses : 
 +  * la compression ([[https://doc.dovecot.org/2.3/settings/plugin/imap-zlib-plugin/|imap_zlib]]), ce qui va économiser la bande passante
 +  * l'affichage des quotas dans les clients qui le permettent ([[https://doc.dovecot.org/main/core/plugins/imap_quota.html|imap_quota]]) 
 +  * la gestion de sieve avec [[https://doc.dovecot.org/main/core/plugins/imap_sieve.html|imap_sieve]]
 <code bash /etc/dovecot/conf.d/20-imap.conf> <code bash /etc/dovecot/conf.d/20-imap.conf>
 protocol imap { protocol imap {
-  mail_plugins = $mail_plugins imap_zlib+  mail_plugins = $mail_plugins imap_zlib imap_quota imap_sieve
 } }
 </code> </code>
Ligne 426: Ligne 426:
 La suite, on lui dit comment gérer la partie authentification (en lien avec postfix), et puis on va activer des infos pour que le module de statistiques ne nous fasse pas d'erreurs. La suite, on lui dit comment gérer la partie authentification (en lien avec postfix), et puis on va activer des infos pour que le module de statistiques ne nous fasse pas d'erreurs.
 <code bash /etc/dovecot/conf.d/10-master.conf> <code bash /etc/dovecot/conf.d/10-master.conf>
 +# Pour l'imap
 +service imap-login {
 +  inet_listener imap {
 +  }
 +  inet_listener imaps {
 +  }
 +}
 +
 +# Si on veut utiliser pop3
 +service pop3-login {
 +  inet_listener pop3 {
 +  }
 +  inet_listener pop3s {
 +  }
 +}
 +service submission-login {
 +  inet_listener submission {
 +  }
 +}
 +
 # Pour utiliser lmtp, plus robuste que LDA dans la délivrance des mails # Pour utiliser lmtp, plus robuste que LDA dans la délivrance des mails
 # LMTP gère la réception et la livraison des e-mails dans les boîtes aux lettres. # LMTP gère la réception et la livraison des e-mails dans les boîtes aux lettres.
Ligne 434: Ligne 454:
     group = postfix     group = postfix
   }   }
-  [...]+
 +# Cette partie peut être remplie pour mettre des limites 
 +service imap { 
 +
 +service pop3 { 
 +
 +service submission { 
 +
 +service auth { 
 +  unix_listener auth-userdb { 
 +  }
   # Postfix smtp-auth (chercher ce morceau !)   # Postfix smtp-auth (chercher ce morceau !)
   # authentification SMTP via Dovecot SASL utilisé lors de l'envoi des mails   # authentification SMTP via Dovecot SASL utilisé lors de l'envoi des mails
Ligne 442: Ligne 472:
     group = postfix     group = postfix
   }   }
-  # Partie à ajouter +
-  # fix Error: net_connect_unix(/var/run/dovecot/stats-writer) failed: Permission denied))+service dict { 
 +  unix_listener dict { 
 +  } 
 +
 +# fix Error: net_connect_unix(/var/run/dovecot/stats-writer) failed: Permission denied))
 service stats { service stats {
     unix_listener stats-reader {     unix_listener stats-reader {
Ligne 466: Ligne 500:
 ssl_client_ca_dir = /etc/ssl/certs ssl_client_ca_dir = /etc/ssl/certs
 ssl_dh = </etc/dovecot/dh.pem ssl_dh = </etc/dovecot/dh.pem
-ssl_min_protocol = TLSv1.2 TLSv1.3 !SSLv2 !SSLv3+ssl_min_protocol = TLSv1.2
 ssl_prefer_server_ciphers = yes ssl_prefer_server_ciphers = yes
 ssl_cipher_list = HIGH:!eNULL:!LOW:!MEDIUM:!EXP:!RC4:!3DES:!MD5:!SHA1:!SHA256:!SHA384:!PSK:!kRSA:!SRP:-DH:+ECDH ssl_cipher_list = HIGH:!eNULL:!LOW:!MEDIUM:!EXP:!RC4:!3DES:!MD5:!SHA1:!SHA256:!SHA384:!PSK:!kRSA:!SRP:-DH:+ECDH
Ligne 481: Ligne 515:
   openssl dhparam -out /etc/dovecot/dh.pem 4096   openssl dhparam -out /etc/dovecot/dh.pem 4096
  
-Utiliser les dossiers de vmails pour le stockage des mails : +Vérifier la configuration suivante (utile pour savoir où sont les mails mais aussi les quotas, etc) 
  
 <code bash /etc/dovecot/conf.d/auth-sql.conf.ext> <code bash /etc/dovecot/conf.d/auth-sql.conf.ext>
 +passdb {
 +  driver = sql
 +  args = /etc/dovecot/dovecot-sql.conf.ext
 +}
 userdb { userdb {
-  driver = static +  driver = sql 
-  args = uid=vmail gid=vmail home=/var/vmail/%d/%n+  args = /etc/dovecot/dovecot-sql.conf.ext
 } }
 +
 </code> </code>
 +
 +==== SIEVE ====
 +SIEVE permet de créer des règles de filtre sur le serveur et donc de trier automatiquement les emails sans lien avec le client courriel. Pratique quand on switche entre webmail et divers thunderbird. Snappymail permet de gérer ces filtres ; il y avait un module thunderbird mais actuellement indisponible.
  
 Activer la gestion de sieve via lmtp Activer la gestion de sieve via lmtp
Ligne 496: Ligne 538:
 } }
 </code> </code>
 +
 +Et indiquer que Sieve a le droit de marcher :
 +<code bash /etc/dovecot/conf.d/20-managesieve.conf>
 +protocols = $protocols sieve
 +
 +service managesieve-login {
 +  inet_listener sieve {
 +    port = 4190
 +  }
 +
 +  service_count = 1
 +}
 +</code>
 +
 +Relancer Dovecot, puis vérifier que les ports sont bien ouverts :
 +
 +<code>service dovecot restart
 +lsof -i :4190 -P</code>
 +
 +Cela devrait donner ce genre de retour
 +<code>
 +COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
 +dovecot 371602 root   15u  IPv4 487495      0t0  TCP *:4190 (LISTEN)
 +dovecot 371602 root   16u  IPv6 487496      0t0  TCP *:4190 (LISTEN)</code>
 +</WRAP>
 +
 +<WRAP center round todo 60%>
 +TODO : il va falloir ouvrir le port 4190 mais je garde ça sur la partie pare-feu.
 +</WRAP>
 +
 +==== Quotas ====
 +C'est tout un chantier.
 +
 +Activer et paramétrer la gestion des quotas :
 +<code bash /etc/dovecot/conf.d/90-quota.conf>
 +plugin {
 +  quota = maildir:User quota
 +  quota_rule = *:storage=5G
 +  # Ajouter 100M pour ce qui est dans la corbeille, ça permet de faire du tri sans "ranger" dans la corbeille.
 +  quota_rule2 = Trash:storage=+100M
 +  # Quota plugin can also limit the maximum accepted mail size.
 +  quota_max_mail_size = 5M
 +
 +  quota_vsizes = yes
 +
 +  quota_status_success = DUNNO
 +  quota_status_nouser = DUNNO
 +  quota_status_overquota = "452 4.2.2 Mailbox is full and cannot receive any more emails"
 +}
 +service quota-status {
 +  executable = /usr/lib/dovecot/quota-status -p postfix
 +  unix_listener /var/spool/postfix/private/quota-status {
 +    user = postfix
 +  }
 +# Connexion avec mysql
 +dict {
 +  quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
 +}
 +# Warning
 +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
 +   unix_listener quota-warning {
 +     user = vmail
 +     group = vmail
 +     mode = 0660
 +   }
 +}
 +</code>
 +
 +Ne pas oublier de faire le script appelé. Changer l'adresse d'envoi du mail !!! : 
 +
 +<code bash /usr/local/bin/quota-warning.sh>
 +#!/bin/sh
 +PERCENT=$1
 +USER=$2
 +cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=maildir:User quota:noenforcing"
 +From: postmaster@example.org
 +Subject: Quota warning - $PERCENT% reached
 +
 +FR :
 +Votre boîte aux lettres ne peut stocker qu'un nombre limité d'e-mails.
 +Actuellement, elle est pleine à $PERCENT%. Si vous atteignez 100 %, 
 +les nouveaux courriels ne pourront plus être stockés. Merci de votre compréhension.
 +
 +EN :
 +Your mailbox can only store a limited amount of emails.
 +Currently it is $PERCENT% full. If you reach 100% then
 +new emails cannot be stored. Thanks for your understanding.
 +EOF
 +
 +</code>
 +
 +Et rendre le fichier exécutable : 
 +  chmod +x /usr/local/bin/quota-warning.sh
 +
 +Il faut aussi faire en sorte que la base de donnée soit réellement contactée, et donc déclarer les infos de cette dernière. Dans ''/etc/dovecot/dovecot-dict-sql.conf.ext'', décommenter et adapter la ligne suivante : 
 +<code bash /etc/dovecot/dovecot-dict-sql.conf.ext>connect = host=localhost dbname=postfixadmin user=postfixadmin password=password</code>
 +
 +Par exemple :
 +<code bash /etc/dovecot/dovecot-dict-sql.conf.ext>connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=Nonmaisrêvepas</code>
 +
 +==== Et un peu plus ====
  
  
-Enfin, en dehors de ''conf.d'', il y a le fichier où indiquer les infos de connexion à la base de donnée. On ajoute ceci tout à la fin, en mettant les infos propres à chaque bdd/user/mot de passe :+Enfin, en dehors de ''conf.d'', il y a des fichiers où indiquer les infos de connexion à la base de donnée. On ajoute ceci tout à la fin, en mettant les infos propres à chaque bdd/user/mot de passe :
  
 <code bash /etc/dovecot/dovecot-sql.conf.ext> <code bash /etc/dovecot/dovecot-sql.conf.ext>
 ######### Modifs Postfixadmin ######### Modifs Postfixadmin
 driver = mysql driver = mysql
-connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=MOTDEPASSE +default_pass_scheme = BLF-CRYPT 
-password_query = SELECT username,domain,password FROM mailbox WHERE username='%u'+connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=MOT_DE_PASSE_A_CHANGER 
 +user_query = SELECT username as userconcat('*:bytes='quota) AS quota_rule, '/var/vmail/%d/%n' AS home, 5000 AS uid, 5000 AS gid FROM mailbox WHERE username='%u' 
 +password_query = SELECT password, '%w' AS userdb_plain_pass, CONCAT('/home/vmail/', maildir) AS userdb_home, concat('*:bytes=', quota) AS userdb_quota_rule FROM mailbox WHERE username = '%u' AND domain = '%d' AND active 
 +iterate_query = SELECT username as user FROM mailbox WHERE active = '1' 
 +</code> 
 + 
 +C'est sans doute redondant de l'indiquer aussi dans ce fichier, mais dans le doute, je met (parce que là, ça marche, mais j'ai bidouillé de partout). 
 +<code bash /etc/dovecot/dovecot-dict-sql.conf.ext> 
 +connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=MOT_DE_PASSE_A_CHANGER 
 + 
 +# CREATE TABLE quota ( 
 +#   username varchar(100) not null, 
 +#   bytes bigint not null default 0, 
 +#   messages integer not null default 0, 
 +#   primary key (username) 
 +# ); 
 + 
 +map { 
 +  pattern = priv/quota/storage 
 +  table = quota 
 +  username_field = username 
 +  value_field = bytes 
 +
 +map { 
 +  pattern = priv/quota/messages 
 +  table = quota 
 +  username_field = username 
 +  value_field = messages 
 +
 </code> </code>
  
Ligne 512: Ligne 689:
 chgrp vmail /etc/dovecot/dovecot.conf chgrp vmail /etc/dovecot/dovecot.conf
 chmod g+r /etc/dovecot/dovecot.conf</code> chmod g+r /etc/dovecot/dovecot.conf</code>
-On va faire quelques tests... pour le moment c'est à root. Et ça semble aller. +On va faire quelques tests... pour le moment c'est à root. Et ça semble aller. Donc on ne touche pas.
 </WRAP> </WRAP>
 +
 S'assurer que les droits sur ''/etc/dovecot/dovecot-sql.conf.ext'' empêcheront des malveillants de lire le mot de passe de la BDD :  S'assurer que les droits sur ''/etc/dovecot/dovecot-sql.conf.ext'' empêcheront des malveillants de lire le mot de passe de la BDD : 
 <code>chown root:root /etc/dovecot/dovecot-sql.conf.ext <code>chown root:root /etc/dovecot/dovecot-sql.conf.ext
 chmod go= /etc/dovecot/dovecot-sql.conf.ext</code> chmod go= /etc/dovecot/dovecot-sql.conf.ext</code>
  
-<WRAP center round alert 60%> 
-Vieux truc, pas valide mais je garde le temps de tester. 
- 
- 
-Ajouter ces modifs au fichier suivant : 
-<code bash /etc/dovecot/dovecot-sql.conf.ext> 
-# Modifs Postfixadmin 
-connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=XXXXX 
-driver = mysql 
-# Default password scheme - change to match your Postfixadmin setting. 
-# depends on your $CONF['encrypt'] setting: 
-# md5crypt  -> MD5-CRYPT 
-# md5       -> PLAIN-MD5 
-# cleartext -> PLAIN 
-default_pass_scheme = MD5-CRYPT 
-# Query to retrieve password. user can be used to retrieve username in other 
-# formats also. 
- 
-password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1' 
-# Query to retrieve user information, note uid matches dovecot.conf AND Postfix virtual_uid_maps parameter. 
-user_query = SELECT CONCAT('/var/mail/vmail/', maildir) AS home, 1001 AS uid, 1001 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' > 
-# see: https://doc.dovecot.org/configuration_manual/authentication/sql/#id6 
-iterate_query = SELECT username as user FROM mailbox WHERE active = '1' 
-</code> 
- 
-</WRAP> 
  
 On vérifie que la configuration n'a pas d'erreur ; si tout va bien, elle s'affiche en retour, sinon ça liste les erreurs à corriger :  On vérifie que la configuration n'a pas d'erreur ; si tout va bien, elle s'affiche en retour, sinon ça liste les erreurs à corriger : 
Ligne 570: Ligne 722:
 $CONF['database_password'] = 'XXXX'; $CONF['database_password'] = 'XXXX';
 $CONF['database_name'] = 'postfixadmin'; $CONF['database_name'] = 'postfixadmin';
-$CONF['encrypt'] = 'system';+$CONF['encrypt'] = 'php_crypt:BLOWFISH';
  
 // Delimiter pour les alias, genre "+". // Delimiter pour les alias, genre "+".
Ligne 595: Ligne 747:
 </WRAP> </WRAP>
  
-Concernant ''encrypt'', choisir "system" permet de passer outre certains messages d'erreur avec dovecot.+Concernant ''encrypt'', choisir "php_crypt:BLOWFISH" permet de passer outre certains messages d'erreur avec dovecot et est un choix sécuritaire sérieux
  
 Et aller ensuite sur http://192.168.1.XX/postfixadmin/setup.php ; on va pouvoir ainsi générer un mot de passe haché afin d'installer la suite. À ce stade, il suffit de régler les potentiels soucis dont postfixadmin nous prévient (et qui devraient être limités). Et aller ensuite sur http://192.168.1.XX/postfixadmin/setup.php ; on va pouvoir ainsi générer un mot de passe haché afin d'installer la suite. À ce stade, il suffit de régler les potentiels soucis dont postfixadmin nous prévient (et qui devraient être limités).
Ligne 601: Ligne 753:
 Postfixadmin étant un clicodrôme parfait, je vous laisse explorer.  Postfixadmin étant un clicodrôme parfait, je vous laisse explorer. 
  
 +
 +===== Paramétrer les alias systèmes vers admin@ =====
 +C'est bien beau tout ça, mais quand un mail interne au système (par exemple à root) est envoyé, il arrive où ? Nul part, et cette fois pas question de jouer avec [[pratique:informatique:mail:mail_relai|Msmtp]] : le relai, ça sera "nous". Mais, la logique n'est pas très différente.
 +
 +On commence par éditer ''/etc/aliases'' :
 +<code txt /etc/aliases>
 +mailer-daemon: postmaster
 +postmaster: root
 +nobody: root
 +hostmaster: root
 +usenet: root
 +news: root
 +webmaster: root
 +www: root
 +ftp: root
 +abuse: root
 +noc: root
 +security: root
 +default: admin@example.org
 +root: admin@example.org
 +</code>
 +
 +Oui, sans le @ à la fin des alias, cette fois. Et vers admin@example.org ou autre, hein, tant que c'est un utilisateur présent sur le système. 
 +
 +Puis on régénère le fichier de postfix à propos des alias :
 +  postalias /etc/aliases
 +
 +Et on peut tester l'envoi d'un mail. J'ai craqué, installé ''bsd-mailx'' (dont la syntaxe pour l'envoi d'un mail test ne me pose pas de souci) et hop :
 +  echo "Test" | mail -s "Test " root
 +
 +Cela arrive bien dans la boite mail configurée !
  
 ===== Tester ===== ===== Tester =====
-À ce stade, on va pouvoir voir à quel point ça marche (ou pas). +On va pouvoir voir à quel point ça marche (ou pas).  
 + 
 +<WRAP center round tip 60%> 
 +Les infos ici peuvent être utilisées à divers stade du tutoriel pour voir ce qui marche.  
 +</WRAP>
  
 Ajoutez un domaine sur l'interface de postfixadmin, et un utilisateur (ici, moi@example.org). En théorie, déjà, c'est possible... Ajoutez un domaine sur l'interface de postfixadmin, et un utilisateur (ici, moi@example.org). En théorie, déjà, c'est possible...
Ligne 625: Ligne 812:
   * Vérifier que ''/var/vmail/'' s'est peuplé d'une nouvelle boite. Et avec mutt on peut lire le "message"   * Vérifier que ''/var/vmail/'' s'est peuplé d'une nouvelle boite. Et avec mutt on peut lire le "message"
  
-À ce stade, tout s'est passé en interne, et c'est déjà pas si mal. Prochain test : envoyer un mail à l'extérieur.+Jusque là, tout s'est passé en interne, et c'est déjà pas si mal.  
 + 
 +Pour tester les limites de quota, créez un utilisateur avec un quota très bas (par exemple 1 Mo), puis créer un fichier à joindre "volumineux", et enfin envoyez-le (avec mutt) : 
 +<code>dd if=/dev/zero of=/root/400kb.txt bs=1K count=400 
 +echo "Test de quota" | mutt -s "Test de quota" -a ./400kb.txt -- quota@example.org 
 +</code> 
 + 
 +Pour vérifier que tout se passe bien quand on tente de se connecter (donc que les mots de passe sont les mêmes dans la bdd et avec dovecot...) :  
 +  doveadm auth test moi@example.org 
 + 
 +Et on peut aussi tenter de se connecter en imap (avec dans l'ordre : ''nom d'utilisateur''@''domaine du mail''@''domaine du relai'') : 
 +  mutt -f imaps://moi@exemple.org@mail.exemple.org 
 + 
 +<WRAP center round tip 100%> 
 +Envie de tester encore et encore, en changeant le sujet seulement pour voir ce qui passe ou pas ? J'ai un petit script bash pour ça :  
 +<code bash mailtest.sh> 
 +#!/bin/bash 
 + 
 +# Vérifie si le sujet a été fourni en argument 
 +if [ -z "$1" ]; then 
 +    echo "Usage: $0 <sujet>" 
 +    exit 1 
 +fi 
 + 
 +# Assigne le sujet à une variable 
 +subject="$1" 
 + 
 +# Définis le corps du message 
 +body="Test de quota" 
 + 
 +# Chemin vers le fichier à joindre (quand on teste les quotas) 
 +#attachment="./fauxfichiers/400kb.txt" 
 + 
 +# Adresse e-mail du destinataire 
 +recipient="moi@example.org" 
 + 
 +# Envoie l'e-mail avec pièce jointe 
 +# echo "$body" | mutt -s "$subject" -a "$attachment" -- "$recipient" 
 +# OU sans la pièce jointe 
 +echo "$body" | mutt -s "$subject" -- "$recipient" 
 +echo "Yep" 
 + 
 +</code> 
 + 
 +Il suffit ensuite de lancer le script en lui filant un sujet entre guillemets : 
 +<code>./mailtest.sh "sujet de 12h02"</code> 
 +</WRAP> 
 + 
 + 
 + 
 +==== Todo ==== 
 +<del>Prochain test : envoyer un mail à l'extérieur. Ce qui demande que j'ouvre des ports sur la box, c'est pas de suite.</del> : fait :) 
 + 
 +Il va falloir configurer dkim et tout l'toutim. 
 + 
 +Tester aussi si je peux envoyer un message avec un de mes alias ET si je suis bloquée si je tente d'utiliser un autre alias du domaine sans le bon compte. 
 + 
 +Problème pour envoyer un message à "nimporte qui sauf moi". Revoir la conf...  
 ===== vieux tuto ===== ===== vieux tuto =====
  
Ligne 648: Ligne 893:
  
  
-==== Quota ==== 
-Je personnalise en français le message aux utilisateurs : 
- 
-<code bash /usr/local/bin/quota-warning.sh> 
-#!/bin/sh 
-PERCENT=$1 
-USER=$2 
-cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=maildir:User quota:noenforcing" 
-From: postmaster@webmail.example.org 
-Subject: Quota warning - $PERCENT% reached 
- 
-FR : 
-Votre boîte aux lettres ne peut stocker qu'un nombre limité d'e-mails. 
-Actuellement, elle est pleine à $PERCENT%. Si vous atteignez 100 %,  
-les nouveaux courriels ne pourront plus être stockés. Merci de votre compréhension. 
- 
-EN : 
-Your mailbox can only store a limited amount of emails. 
-Currently it is $PERCENT% full. If you reach 100% then 
-new emails cannot be stored. Thanks for your understanding. 
-EOF</code> 
- 
-Et pour qu'imap affiche le quota restant :  
-  sudo nano  /etc/dovecot/conf.d/20-imap.conf 
- 
-Avoir la ligne suivante : 
-  mail_plugins = $mail_plugins imap_quota imap_sieve 
- 
-J'ai aussi affiné via Dovecot les valeurs par défaut. Modifier ''/etc/dovecot/conf.d/90-quota.conf'' pour avoir ce contenu : 
- 
-<code> 
-plugin { 
-  quota = maildir:User quota 
-  # Mettre 5G de quota par défaut 
-  quota_rule = *:storage=5G 
-  # Ajouter 100M pour ce qui est dans la corbeille, ça permet de faire du tri sans "ranger" dans la corbeille. 
-  quota_rule2 = Trash:storage=+100M 
-  quota_status_success = DUNNO 
-  quota_status_nouser = DUNNO 
-  quota_status_overquota = "452 4.2.2 Mailbox is full and cannot receive any more emails" 
-} 
- 
-service quota-status { 
-  executable = /usr/lib/dovecot/quota-status -p postfix 
-  unix_listener /var/spool/postfix/private/quota-status { 
-    user = postfix 
-  } 
-} 
- 
-</code> 
-===== Paramétrer les alias systèmes vers admin@ ===== 
-C'est bien beau tout ça, mais quand un mail interne au système (par exemple à root) est envoyé, il arrive où ? Nul part, et cette fois pas question de jouer avec [[pratique:informatique:mail:mail_relai|Msmtp]] : le relai, ça sera "nous". Mais, la logique n'est pas très différente. 
- 
-On commence par éditer ''/etc/aliases'' : 
-<code txt /etc/aliases> 
-mailer-daemon: postmaster 
-postmaster: root 
-nobody: root 
-hostmaster: root 
-usenet: root 
-news: root 
-webmaster: root 
-www: root 
-ftp: root 
-abuse: root 
-noc: root 
-security: root 
-default: admin@example.org 
-root: admin@example.org 
-</code> 
- 
-Oui, sans le @ à la fin des alias, cette fois. Et vers admin@example.org ou autre, hein, tant que c'est un utilisateur présent sur le système.  
- 
-Puis on régénère le fichier de postfix à propos des alias : 
-  postalias /etc/aliases 
- 
-Et on peut tester l'envoi d'un mail. J'ai craqué, installé ''bsd-mailx'' (dont la syntaxe pour l'envoi d'un mail test ne me pose pas de souci) et hop : 
-  echo "Test" | mail -s "Test " root 
- 
-Cela arrive bien dans la boite mail configurée ! 
  
  
Ligne 1140: Ligne 1305:
  
 Un petit ''postfix reload'' et... On espère que tout va bien ! Un petit ''postfix reload'' et... On espère que tout va bien !
-===== ISPMail pour gérer domaines et users ===== 
-C'est quand même plus pratique que de bidouiller la base de donnée, bien que la solution mérite d'être un peu améliorée. Mais, c'est du php : je peux y faire des choses. Et en attendant "ça marche" 
- 
-En profiter (si ce n'est déjà fait) pour sécuriser Apache d'après [[https://khaganat.net/wikhan/fr:apache]].  
- 
-En principe on a déjà un admin pour la base de donnée Mailuser si on a suivi le tuto plus haut.  
- 
-Télécharger [[https://www.ima.jungclaussen.com/index.php?p=dwn|ISPMail Admin]]. Le dézipper et le mettre "où il faut" sur la partie web. 
- 
-Dans ''cfg/config.inc.php'' : 
-  - Modifier ''db_user'' et ''db_pass'' pour mettre l'admin de la database "mailserver" 
-  - Décommenter ''define('IMA_CFG_LOGIN', IMA_LOGINTYPE_ACCOUNT); '' (ou pas, cf la [[https://www.ima.jungclaussen.com/index.php?p=doc|doc]]) 
-  - Modifier ''admin_user'' et ''admin_Pass'' en créant un truc rien que pour ça.  
- 
-Dans la config apache de ''/etc/apache2/sites-enabled/monsite-https.conf'', modifier/ajouter les détails suivants (à adapter au chemin) : 
-<code> 
-        <Directory /var/www/monsite/ > 
-                Options FollowSymLinks MultiViews 
-                AllowOverride All 
-                Order allow,deny 
-                allow from all 
-        </Directory> 
-        <Directory /var/www/monsite/isp/cfg/ > 
-                Require all denied 
-        </Directory> 
- 
-</code> 
- 
-Se rendre sur index.php (chemin vers isp) et admirer une interface plus commode pour ajouter users, domaines, etc.  
- 
-Une fois ISPMail installé, adminer ne sert à rien et présente une faille potentielle, donc on l'enlève : 
-  sudo apt remove adminer 
  
 ===== Rspamd (à faire) ===== ===== Rspamd (à faire) =====
Ligne 1207: Ligne 1340:
 https://workaround.org/bullseye/filtering-out-spam-with-rspamd/ https://workaround.org/bullseye/filtering-out-spam-with-rspamd/
  
-===== Filtres SIEVE ===== 
-Cela va permettre de créer des règles de filtre sur le serveur et donc de trier automatiquement les emails sans lien avec le client courriel. Pratique quand on switche entre webmail et divers thunderbird. 
- 
-En principe ce qu'on a déjà fait suffit en bonne partie, mais il vient le moment de le tester, et surtout de permettre de gérer ces filtres via un client mail (et ce sera plutôt via notre webmail snappymail que via thunderbird dont l'extension ne marche plus).  
- 
-Il faut modifier ''/etc/dovecot/conf.d/20-managesieve.conf'' et décommenter les lignes suivantes : 
-<code> 
-protocols = $protocols sieve 
- 
-service managesieve-login { 
-  inet_listener sieve { 
-    port = 4190 
-  } 
- 
-  service_count = 1 
-} 
-</code> 
- 
-Décommenter aussi cette ligne dans ''/etc/dovecot/conf.d/10-auth.conf'' : 
-<code>disable_plaintext_auth = yes 
-</code> 
- 
-Relancer Dovecot, puis vérifier que les ports sont bien ouverts :  
-  service dovecot restart 
-  lsof -i :4190 -P 
- 
-Cela devrait donner ce genre de retour 
-<code> 
-COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME 
-dovecot 371602 root   15u  IPv4 487495      0t0  TCP *:4190 (LISTEN) 
-dovecot 371602 root   16u  IPv6 487496      0t0  TCP *:4190 (LISTEN) 
-</code> 
-Il faut qu'iptable laisse passer ça **aussi** : 
- 
-  iptables -A INPUT -p tcp --dport 4190 -j ACCEPT 
-  netfilter-persistent save 
- 
-Il faut aussi permettre à ce port d'être accessible à travers le firewall/proxy/box (mais là, ça dépend de la box etc, donc pas de tuto ici...). 
  
-Et voilà, plus qu'à configurer le port et la possibilité d'utiliser SIEVE sur notre client mail favori, ça marche ! 
 ===== Encore à faire ===== ===== Encore à faire =====
   * Paramétrage de rspamd, juste pour gérer les spams.    * Paramétrage de rspamd, juste pour gérer les spams. 
CC Attribution-Noncommercial-Share Alike 4.0 International Driven by DokuWiki
pratique/informatique/mail/serveur_mail2.1726912038.txt.gz · Dernière modification : 21/09/2024 11:47 de Zatalyz