Outils pour utilisateurs

Outils du site


admin:services: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édentesRévision précédente
Prochaine révision
Révision précédente
admin:services:mail [2014/02/16 16:22] – fix link to mailman page francois.blondeladmin:services:mail [2017/02/26 16:26] (Version actuelle) – [Postfix] helo_access david.sinquin
Ligne 1: Ligne 1:
 [[:admin|< retour à la page de l'administration technique]] [[:admin|< retour à la page de l'administration technique]]
  
-====== Serveurs Mails ======+====== Serveur email ======
  
-Cette page explique succinctement comment configurer un serveur mails sous postfix avec amavisd, spamassassin et clamav.+Le serveur mail de FedeRez est [[http://www.postfix.org/|Postfix]].  Le filtrage de spam est effectué par [[http://postgrey.schweikert.ch/|Postgrey]], [[http://www.ijs.si/software/amavisd/|amavisd-new]][[http://spamassassin.apache.org/|SpamAssassin]] et [[http://www.clamav.net|ClamAV]].  Les emails sortants sont signés par [[http://www.opendkim.org/|OpenDKIM]].
  
-Il est également possible d'ajouter un outil de [[admin:services:mailman|Mailing-list]].+Ce serveur gère aussi les [[admin:services:mailman|mailing-lists]].
  
-===== Packages =====+===== Postfix =====
  
-  # nano /etc/apt/sources.list +  # apt install postfix 
- +   
-  # wheezy-updates +Sur hexagon, configurer Postfix en tant que serveur mail Internet pour le domaine **federez.net** :
-  deb     http://ftp.fr.debian.org/debian/     wheezy-updates main contrib non-free +
-  deb-src http://ftp.fr.debian.org/debian/     wheezy-updates main contrib non-free +
- +
-  # aptitude update +
-  # aptitude upgrade +
- +
-  # aptitude install postfix postgrey +
-  # aptitude install amavisd-new clamav clamav-daemon clamav-freshclam +
-  # aptitude install spamassassin bzip2 libnet-ph-perl libnet-snpp-perl libnet-telnet-perl +
-  # aptitude install lha arj rar unrar unrar-free nomarch lzop cabextract razor pyzor p7zip-full pax zip unzip lha zoo+
  
   # dpkg-reconfigure postfix   # dpkg-reconfigure postfix
-  System mail name : quigon.federez.net+  System mail name : hexagon.federez.net
   root and postmaster mail recipient : admin@federez.net   root and postmaster mail recipient : admin@federez.net
-  Other destinations to accept mail for : federez.net, quigon.federez.net, etc.+  Other destinations to accept mail for : federez.net, hexagon.federez.net, etc.
   Force synchronous updates on mail queue : No   Force synchronous updates on mail queue : No
   Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128   Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
Ligne 34: Ligne 24:
   Internet protocols to use: all   Internet protocols to use: all
  
 +Pour limiter le spam, on refuse les messages provenant de serveurs trop mal configurés (ou de pc infectés le plus souvent), et on définie la taille maximale autorisée pour les mails en ajoutant à ''/etc/postfix/main.cf'' :
 +  smtpd_helo_required = yes
 +  smtpd_helo_restrictions =
 +        permit_mynetworks,
 +        permit_sasl_authenticated,
 +        reject_invalid_helo_hostname,
 +        reject_unknown_helo_hostname,
 +        check_helo_access hash:/etc/postfix/helo_access
 +  message_size_limit = 40960000
  
 +On crée également un fichier pour interdire les mails envoyés au nom de federez en créant ''/etc/postfix/helo_access'' avec :
 +<file - /etc/postfix/helo_access>
 +federez.net          REJECT          Get lost - you're lying about who you are
 +</file>
 +puis on le convertit en base pour postfix avec :
 +  postmap /etc/postfix/helo_access
 ===== Postgrey ===== ===== Postgrey =====
  
-  nano /etc/default/postgrey+Postgrey semble peu efficace, il n'est donc pas installé sur dodecagon. Ce qui suit pourra être effacé après migration à l'exception de la configuration de ```smtpd_recipient_restrictions```. 
 + 
 +  apt install postgrey 
 + 
 +Dans ''/etc/default/postgrey'' :
  
   POSTGREY_OPTS="--inet=127.0.0.1:10023 --delay=65 --max-age=40 --retry-window=5h --auto-whitelist-clients=3"   POSTGREY_OPTS="--inet=127.0.0.1:10023 --delay=65 --max-age=40 --retry-window=5h --auto-whitelist-clients=3"
   POSTGREY_TEXT="Unable to accept the message now. Please retry later."   POSTGREY_TEXT="Unable to accept the message now. Please retry later."
  
-  # nano /etc/postfix/main.cf+Dans ''/etc/postfix/main.cf'' :
  
-  # postgrey 
   smtpd_recipient_restrictions = permit_mynetworks,   smtpd_recipient_restrictions = permit_mynetworks,
                                  permit_sasl_authenticated,                                  permit_sasl_authenticated,
Ligne 50: Ligne 58:
                                  check_policy_service inet:127.0.0.1:10023                                  check_policy_service inet:127.0.0.1:10023
  
 +Vérifier que ''hostmaster@'' et ''postmaster@'' sont bien listés dans ''/etc/postgrey/whitelist_recipients''.
 +===== amavisd-new, SpamAssassin et ClamAV =====
  
-  # nano /etc/postgrey/whitelist_clients+Installer les trois programmes et les extensions leur permettant d'analyser les emails :
  
-  # some others +  # apt install amavisd-new clamav clamav-daemon clamav-freshclam \ 
-  scarlet.be +  #     spamassassin bzip2 libnet-ph-perl libnet-snpp-perl libnet-telnet-perl \ 
-  hotmail.com +  #     lhasa arj rar unrar unrar-free nomarch lzop cabextract razor pyzor p7zip-full pax zip unzip zoo
-  yahoo.co.uk +
-  europa.eu +
-  mail-out.ovh.net +
-  paypal.com +
-  mxb.ovh.net +
-  cert.org +
-  bigfoot.com +
-  brutele.be +
-  tech.numericable.fr+
  
-  # kill $(ps aux | grep '/postgrey' | grep -v grep | awk '{print $2}'+Dans ''/etc/postfix/master.cf'', spécifier un service **amavisfeed** pour transmettre des messages à amavis et un service d'écoute sur le port 10025 pour récupérer les emails filtrés :
-  # /etc/init.d/postgrey restart +
-  # /etc/init.d/postfix restart+
  
---> postgrey doit marcher :-) --< +  # amavisd-new
- +
-===== Amavisd, spamassassin, clamav ===== +
- +
-  # nano /etc/postfix/master.cf +
- +
-  # amavis+
   amavisfeed unix    -                             smtp   amavisfeed unix    -                             smtp
        -o smtp_data_done_timeout=1200        -o smtp_data_done_timeout=1200
Ligne 104: Ligne 97:
        -o relay_recipient_maps=        -o relay_recipient_maps=
  
-  # nano /etc/postfix/main.cf+Dans ''/etc/postfix/main.cf'', déclarer le service de filtrage :
  
   # amavis   # amavis
Ligne 110: Ligne 103:
   receive_override_options = no_address_mappings   receive_override_options = no_address_mappings
  
-  # nano /etc/amavis/conf.d/15-content_filter_mode+Dans ''/etc/amavis/conf.d/15-content_filter_mode'', activer le filtrage de spam et de virus :
  
   @bypass_virus_checks_maps = (   @bypass_virus_checks_maps = (
Ligne 117: Ligne 110:
      \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);      \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
  
-  # nano /etc/amavis/conf.d/05-domain_id+Dans ''/etc/amavis/conf.d/05-domain_id'', spécifier les domaines à prendre en compte :
  
-  #@local_domains_acl = ( ".$mydomain" ); +  @local_domains_acl = ( ".federez.net", ".federez.org", ".federez.fr", ".federez.eu" );
-  @local_domains_acl = ( ".federez.net", ".federez.org", ".federez.fr", "federez.eu" );+
  
-  # nano /etc/amavis/conf.d/20-debian_defaults +Dans ''/etc/spamassassin/local.cf'', désactiver l'expiration par SpamAssassin de tokens Bayes :
- +
-  $sa_spam_subject_tag = ''+
-  [...] +
-  # qr'.\.(exe|vbs|pif|scr|bat|cmd|com|cpl)$'i, # banned extension - basic +
-    qr'.\.(ade|adp|app|bas|bat|chm|cmd|com|cpl|crt|emf|exe|fxp|grp|hlp|hta| +
-           inf|ins|isp|js|jse|lnk|mda|mdb|mde|mdw|mdt|mdz|msc|msi|msp|mst| +
-           ops|pcd|pif|prg|reg|scr|sct|shb|shs|vb|vbe|vbs| +
-           wmf|wsc|wsf|wsh)$'ix,  # banned ext - long +
-  [...] +
- +
-  # nano /etc/amavis/conf.d/01-debian +
- +
-  $unrar      = ['rar', 'unrar']; #disabled (non-free, no security support) +
-  #$unrar      = ['unrar-free']; +
- +
-  # nano /etc/spamassassin/local.cf+
  
   bayes_auto_expire 0   bayes_auto_expire 0
- +   
-  # nano /etc/default/spamassassin+Activer le lancement de SpamAssassin par le système en modifiant ''/etc/default/spamassassin'' :
  
   CRON=1   CRON=1
 +  
 +Enfin, initialiser SpamAssassin, ClamAV et amavisd-new, puis tout relancer :
  
   # adduser clamav amavis   # adduser clamav amavis
Ligne 154: Ligne 132:
   # /etc/init.d/postfix restart   # /etc/init.d/postfix restart
  
-===== Debug =====+===== DKIM ===== 
 + 
 +Installer OpenDKIM et ses outils (pour la génération de clé) : 
 + 
 +  apt install opendkim opendkim-tools 
 + 
 +Générer une clé pour hexagon : 
 + 
 +  opendkim-genkey -a -b 3072 -h sha256 -s hexagon 
 + 
 +Le fichier généré ''hexagon.txt'' contient l'enregistrement à ajouter à la zone DNS, qu'il faut adapter pour respecter la limite de longueur : 
 + 
 +<code> 
 +hexagon._domainkey TXT ("v=DKIM1; h=sha256; k=rsa;" 
 +                        "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA25gly" 
 +                        "4G4PlH/UEg80Qn1ie882v96u2OahP9bfzRfIcEjTQEswbdHC83N" 
 +                        "wIRLRJPSxGko8pg5ediL5fFsb8uze2PUnDuGG/8gqBUjpBojwO4" 
 +                        "CVdBMi+IXd8r0CLPrnPH9hRdxKLFWNYTAjxbt4OvlZJ6HbqF68a" 
 +                        "b+nqsPUJByYUnaBNY4WvGEI5iLTKlhwWGO5bFFkoAGiOn8Ek3bV" 
 +                        "F8Q/r88DkW3gJs+42/Q4JdgaDpwrmT77KNKNLZJbug12qy4o6YG" 
 +                        "V6acPeiYuCPDwZdbMB7kup2mTeeT2gXkBbLMIAA1XWFbXvcclh5" 
 +                        "JFH/qzHpjiWmVgpYZpcPrUiUXygBWuQIDAQAB"
 +</code> 
 + 
 +Pendant la mise en place, il est recommandé de lui affecter un petit TTL et l'option de ''t=y;'' de façon à ce qu'une erreur soit rapide à corriger et n'ait pas d'impact sur l'acheminement des emails. 
 + 
 +L'autre fichier généré, ''hexagon.private'', est la clé privée.  La placer dans ''/etc/dkim'' et restreindre les permissions à la lecture seule, pour OpenDKIM : 
 + 
 +  mv hexagon.private /etc/dkim 
 +  chown opendkim: /etc/dkim/hexagon.private 
 +  chmod a-w /etc/dkim/hexagon.private 
 + 
 +Configurer OpenDKIM pour cette clé et ce domaine, dans ''/etc/opendkim.conf''
 + 
 +  Domain federez.net 
 +  KeyFile /etc/dkim/hexagon.private 
 +  Selector hexagon 
 + 
 +Pour communiquer avec Postfix, utiliser un socket unix dans son chroot : 
 + 
 +  mkdir -p /var/spool/postfix/var/run/opendkim 
 +  chown opendkim: /var/spool/postfix/var/run/opendkim 
 + 
 +Le chemin du socket est configuré dans ''/etc/default/opendkim''
 + 
 +  SOCKET="local:/var/spool/postfix/var/run/opendkim/opendkim.sock" 
 + 
 +Comme suggéré dans ''/usr/share/doc/opendkim/README.Debian'', pour que Postfix ait accès au socket créé par OpenDKIM, choisir **mail** comme groupe primaire pour **opendkim** : 
 + 
 +  usermod -g mail opendkim 
 + 
 +Ajouter ensuite postfix au groupe mail : 
 +  adduser postfix mail 
 + 
 +Enfin, configurer Postfix dans ''/etc/postfix/main.cf''
 + 
 +  milter_default_action = accept 
 +  smtpd_milters = unix:/var/run/opendkim/opendkim.sock # Chemin relatif au chroot 
 +  non_smtpd_milters = unix:/var/run/opendkim/opendkim.sock 
 + 
 +L'action par défaut **accept** permet au serveur de continuer à fonctionner s'il y a une erreur sur le socket d'OpenDKIM. 
 + 
 +===== Envoi authentifié d'email ===== 
 + 
 +Postfix peut authentifier des clients et leur permettre de relayer des emails sortants avec l'implémentation SASL de [[http://www.cyrusimap.org|CyrusIMAP]].  La convention est d'utiliser le port TCP 587 (submission) pour cette fonctionnalité. 
 + 
 +Installer SASL : 
 + 
 +  apt install sasl2-bin 
 + 
 +Dans ''/etc/default/saslauthd'', permettre le démarrage du démon, choisir le mécanisme **ldap** et choisir un répertoire dans le chroot de Postfix pour que ce dernier puisse accéder au socket unix de **saslauthd** : 
 + 
 +  START=yes 
 +  MECHANISMS="ldap" 
 +  OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd" 
 + 
 +Indiquer à Debian le nouveau répertoire et ajouter **postfix** au groupe **sasl** pour l'accès au socket : 
 + 
 +  dpkg-statoverride --add root sasl 750 /var/spool/postfix/var/run/saslauthd 
 +  gpasswd -a postfix sasl 
 + 
 +Configurer la connexion au serveur LDAP, dans ''/etc/saslauthd.conf''
 + 
 +  ldap_servers: ldap://ldap.federez.net ldap://ldap-ro.federez.net 
 +  ldap_start_tls: yes  
 +  ldap_tls_check_peer: yes  
 +  ldap_search_base: ou=users,dc=federez,dc=net 
 +  ldap_filter: (uid=%u) 
 +  ldap_bind_dn: cn=saslauth,ou=service-users,dc=federez,dc=net 
 +  ldap_password: secret 
 + 
 +Un compte de service LDAP a été créé pour permettre à **saslauthd** d'authentifier des utilisateurs. 
 + 
 +Configurer Postfix pour l'authentification SASL, dans ''/etc/postfix/sasl/smtpd.conf''
 + 
 +  pwcheck_method: saslauthd 
 +  mech_list: PLAIN LOGIN 
 + 
 +Activer le service **submission** avec authentification SASL, dans ''/etc/postfix/master.cf''
 + 
 +  submission inet n                               smtpd 
 +    -o syslog_name=postfix/submission 
 +    -o smtpd_tls_security_level=encrypt 
 +    -o smtpd_sasl_auth_enable=yes 
 +    -o smtpd_client_restrictions=permit_sasl_authenticated,reject 
 +    -o milter_macro_daemon_name=ORIGINATING 
 + 
 +===== Boîtes mail ===== 
 + 
 +Pour permettre de récupérer ses mails en IMAPS, on installe dovecot : 
 +  apt install 'dovecot-(core|imapd|ldap)' 
 + 
 +Pour n'écouter que sur le port IMAPS (donc avec une connexion en TLS) on crée ''/etc/dovecot/local.conf'' avec : 
 +<file bash /etc/dovecot/local.conf> 
 +# On force IMAP en TLS dès le début de la connexion 
 +service imap-login { 
 +    inet_listener imap { 
 +        port=0 
 +    } 
 +
 +</file> 
 + 
 +Ensuite, on édite des fichiers dans ''/etc/dovecot/conf.d/'' pour avoir : 
 +<file bash /etc/dovecot/conf.d/10-auth.conf> 
 +auth_mechanisms = plain login 
 +</file> 
 + 
 +<file bash /etc/dovecot/conf.d/10-mail.conf> 
 +mail_location = maildir:~/Maildir 
 +</file> 
 + 
 +<file bash /etc/dovecot/conf.d/10-master.conf> 
 +service auth { 
 +        unix_listener /var/spool/postfix/private/auth { 
 +                mode = 0660 
 +                user = postfix 
 +                group = postfix 
 +        } 
 +
 +</file> 
 + 
 +<file bash /etc/dovecot/conf.d/10-ssl.conf> 
 +ssl = required 
 + 
 +ssl_cert = </etc/letsencrypt/live/federez.net/fullchain.pem 
 +ssl_key = </etc/letsencrypt/live/federez.net/privkey.pem 
 + 
 +ssl_dh_parameters_length = 3072 
 + 
 +ssl_protocols = !SSLv2 !SSLv3 !TLSv1 !TLSv1.1 
 + 
 +ssl_cipher_list = ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384
  
-  /usr/share/doc/amavisd-new/README.Debian +ssl_prefer_server_ciphers = yes 
-  /usr/share/doc/amavisd-new/README.postfix.gz+</file>
  
-  /etc/init.d/amavis debug +On configure postfix pour écrire les mail dans le home des utilisateurs en ajoutant dans ''/etc/postfix/main.cf'' : 
-  ou +  home_mailbox = Maildir/
-  /etc/init.d/amavis debug-sa+
  
-  tail /var/log/mail.log+On configurera pour finir fail2ban pour bannir ceux qui ferraient trop d'échecs de connexions (pour dovecot, et, si ce n'est pas déjà fait, pour postfix et sasl).
admin/services/mail.1392564123.txt.gz · Dernière modification : 2014/02/16 16:22 de francois.blondel

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki