migration de sendmail vers postfix dans le laboratoire ... · mars 2004...
TRANSCRIPT
Mars 2004 [email protected] 1
Migration de sendmail vers postfix dans le laboratoire
Paul Painlevé à Lille
Mars 2004 [email protected] 2
Situation avant la migration
• Sendmail
• Mbox (/var/spool/mail) + NFS
• Différents clients de messagerie :– Différents emplacements pour les BAL
– Différents comportements
– corruptions de BAL
Mars 2004 [email protected] 3
Mars 2004 [email protected] 4
Situation après la migration
• Adresses email = @math.univ-lille1.fr
• MTA = postfix
• MDA = procmail
• Format BAL = maildir
• Wrapper pour contrôle de contenu = amavisd-new
– Contrôle antivirus = Clam AV
– Contrôle antispam = SpamAssassin + ...
• Accès aux BAL = IMAPS (courier-imap)
• Webmail = squirrelmail
• Listes de diffusion = mailman (pas encore utilisé)
• Serveur dédié
Mars 2004 [email protected] 5
Calendrier
• Fusion des labos le 1/1/2004
• Début du chantier : mi-2003
• 05/01/2004 : basculement de agat
• 07/01/2004 : basculement de lps
• 12/01/2004 : basculement de ano
Mars 2004 [email protected] 6
Pourquoi postfix ?
• Facile à administrer : variables parlantes
• Sécurisé : non suid/sgid, chroot
• Modulaire : plusieurs queues et binaires
• Compatible avec sendmail
• Plus rapide que sendmail
Mars 2004 [email protected] 7
Pourquoi maildir ?
• Mbox = plusieurs mails dans 1 seul fichier– Pb de vitesse d'accès pour des gros fichiers
– Un seul accès read/write à la fois
– Pbs de locking
• Maildir = un fichier par mail– Supprimer 1 mail = supprimer un fichier
– Accès concurrents
Mars 2004 [email protected] 8
Pourquoi amavisd-new ?
• S'interface bien avec postfix
• Reconnaît plusieurs antivirus (31)
• Peut-être configuré pour faire un contrôle antispam
• En fait, choix basé sur une synthèse de ce qui existe sur le net
Mars 2004 [email protected] 9
Pourquoi Clam AV ?
• Open source
• Très facile à mettre en place
• Fournit FreshClam pour la MAJ automatique des bases de signatures
• Reconnaît le format maildir
• Reconnu par amavisd-new
Mars 2004 [email protected] 10
Pourquoi SpamAssassin ?
• Bonne réputation
• Peut être renforcé avec d'autres techniques :– Contrôle bayesien
– Bases de filtrage collaboratif : razor, pyzor, dcc
• Reconnu par amavisd-new
Mars 2004 [email protected] 11
Pourquoi IMAPS seulement ?
• On voulait un accès uniquement par protocole sans visibilité directe du système de fichiers (tant pis pour le grep !)
• On voulait éviter de multiplier les protocoles pour éviter les manips non intentionnelles
• Même visibilité indépendamment du lieu et du client de messagerie utilisé
Mars 2004 [email protected] 12
Pourquoi Courier-imap ?
• Reconnaît le format maildir
• IMAP
• Support pour ssl
• Pas de format spécifique contrairement à cyrus par exemple
• Plusieurs modules d'authentification
• Shared folders
Mars 2004 [email protected] 13
Pourquoi Squirrelmail ?
• Très simple et très facile à mettre en place
• Possibilité de rajouter des plugins
• Configurable pour courier-imap
• Pb : ne reconnaît pas IMAPS
Mars 2004 [email protected] 15
Pourquoi un serveur dédié ?
• Découpler la messagerie des comptes utilisateurs– Meilleure disponibilité au cas où le serveur nfs
(/home) est en panne
– Protection contre les mauvaises manips
• Problèmes :– Gestion des .forward, .procmailrc, etc.
Mars 2004 [email protected] 16
Architecture de postfix
• 4 files principales :– Maildrop
– Incoming
– Active
– Deferred
• Un ensemble de processus qui communiquent par sockets ou FIFOs
Mars 2004 [email protected] 17
Postfix : Réception de mail
Mars 2004 [email protected] 18
Postfix : Délivrance de mail
Mars 2004 [email protected] 19
Postfix : config et admin
• Fichiers de configuration– /etc/postfix.master.cf
– /etc/postfix/main.cf
• Lookup tables– aliases, canonical, virtual, transport, ...
• Outils de gestion de postfix– postconf, postfix, postmap, postalias,
postsuper, ...
Mars 2004 [email protected] 20
Planification de la migration
• Approche incrémentale :– Passage d'un « null-client » sous postfix
– Passage de tous les « null-clients » sous postfix
– Passage du serveur de mail actuel de sendmail vers postfix
– Basculement vers le nouveau serveur
– Contrôle, réglages, etc.
Mars 2004 [email protected] 21
Passage d'un null-client sous postfix (Linux RedHat)
- arrêter sendmail :service sendmail stop
- passer de sendmail à postfix :alternatives –set mta /usr/sbin/sendmail.postfix
- /etc/postfix/main.cf :myhostname = machine1.univ-lille1.frmydomain = agat.univ-lille1.frmyorigin = $mydomainrelayhost = olympe.univ-lille1.frmydestination =mynetworks = 127.0.0.0/8, 134.206.80.0/24
- démarrer postfix :service postfix start
- tester (/var/log/maillog)
Mars 2004 [email protected] 22
Passage d'un null-client sous postfix (Solaris)
- voir http://www.math.cnrs.fr/archives/mathrice/msg03272.html
Mars 2004 [email protected] 23
Passage de tous les null-clients sous postfix
• Septembre 2003
• Utilisation de cfengine pour reconfigurer les null-clients
Mars 2004 [email protected] 24
Passage du serveur sendmail actuel sous postfix
- « sanity checks » : /etc/passwd, aliases, revaliases, mailing-lists
- dans /etc/postfix/main.cf :alias_database = dbm:/etc/postfix/aliasesmyhostname = olympe.univ-lille1.frmydomain = univ-lille1.frmyorigin = agat.univ-lille1.frrelayhost = mailserv.univ-lille1.frmydestination = $myhostname, $myorigin, localhost.$mydomaininet_interfaces = $myhostname, localhostmasquerade_domains = $myoriginmasquerade_exceptions = rootmynetworks = 127.0.0.0/8, 134.206.80.0/24, 134.206.81.0/24, 134.206.83.0/24, 134.206.85.0/24, 134.206.1.0/24, 193.49.225.0/24home_mailbox = Mailboxmail_spool_directory = /var/mailmailbox_command = /usr/bin/procmailalias_maps = dbm:/etc/postfix/aliasescanonical_maps = dbm:/etc/postfix/canonicaltransport_maps = dbm:/etc/postfix/transport
Mars 2004 [email protected] 25
Passage du serveur sendmail actuel sous postfix (suite)
- dans /etc/postfix/transport :agat.univ-lille1.fr local:gat.univ-lille1.fr local:
- dans /etc/postfix/aliases (aliases sous sendmail) :Prenom.Nom: login
- dans /etc/postfix/aliases (aliases sous sendmail) :labo: :include:/etc/mail/listes/labo
- dans /etc/postfix/canonical (revaliases sous sendmail) :login Prenom.Nom
postalias /etc/postfix/aliasespostmap /etc/postfix/canonicalpostmap /etc/postfix/transport
Mars 2004 [email protected] 26
Passage du serveur sendmail actuel sous postfix (suite)
• tail -f /var/log/syslog
• Arrêt de sendmail
• Démarrage de postfix
• Tests
– Avec un compte utilisateur (mail entrant et sortant)
– Avec une liste
• Seul pb rencontré : oubli d'autoriser certains relais du CRI à nous envoyer du courier (mynetworks dans main.cf)
Mars 2004 [email protected] 27
Basculement : feuille de route
• Installation et configuration du nouveau serveur
• Préparation du basculement côté ancien serveur
• Préparation du basculement côté nouveau serveur
• Simulation du basculement
• Basculement effectif
• Garder les mêmes infos sur les comptes utilisateurs (login, passwd, uid, gid)
Mars 2004 [email protected] 28
Installation et configuration du nouveau serveur
• Octobre 2003 : nilus.univ-lille1.fr
• Demande au CRI de relayer le courier @math.univ-lille1.fr vers nilus et d'ouvrir les ports IMAPS et HTTP(S)
• Tests avec qques comptes bidons (envoi, réception, etc.)
• Ne pas trop s'éloigner de la config par défaut pour faciliter le debugging
Mars 2004 [email protected] 29
Préparation du basculement côté ancien serveur
• Création de comptes pour les users des labos ano et lps
• Ajustement des gids sur olympe (de >=100 à >=500)
• Scripts :
– « sanity checks »
– A partir de nisplus, construction d'un fichier à la /etc/passwd mais sans les comptes système
– Récupérer les fichiers aliases, revaliases et les mailing-lists
– Récupérer les fichiers .procmailc
– Récupérer les fichiers .forward
Mars 2004 [email protected] 30
Préparation du basculement côté nouveau serveur
• Scripts de création (suppression) en masse des comptes :– À partir des fichiers passwd et revaliases sur l'ancien serveur :
• groupadd et useradd (/bin/false)
• maildirmake /home/$login/Maildir
• Ajout d'une entrée dans /etc/postfix/aliases
• Ajout d'une entrée dans /etc/postfix/canonical
– Regénération des maps et reload de postfix
• Finir avec ce qui reste dans l'ancien fichier aliases (mailing-lists, etc.)
Mars 2004 [email protected] 31
Préparation du basculement côté nouveau serveur (suite)
• Monter en NFS les BALs principales au format mbox (/var/spool/mail/ de l'ancien serveur)
• Pour chaque user, convertir /var/spool/mail/$user au format maildir dans /home/$user/Maildir/
– Script perl mb2md (option -m)
• Pour les anciens mails, conversion après basculement : l'utilisateur doit tout préparer dans un répertoire oldmail/ puis on fait mb2md -s oldmail/ -R
Mars 2004 [email protected] 32
Simulation du basculement
• Exécution des tâches prévues sur l'ancien serveur
• Création des comptes et des mailings-listes sur le nouveau serveur
• Conversions des BALs principales
• Tests d'envoi/réception/accès (pour tout ce qui n'est pas @math, telnet sur le port 25)
Mars 2004 [email protected] 33
Entre temps ...
• Sondage (une petite appli en PHP) au niveau des utilisateurs pour avoir une connaissance sur les clients de messagerie utilisés :
– Au labo
– Chez eux
– Ailleurs
• Sensibilisation des utilisateurs sur le basculement
• Planification d'une séance de (in)formation (2 dates mi-décembre)
• Helpdesk (document illustré sur la config des clients)
Mars 2004 [email protected] 34
Basculement
• Calendrier en concertation avec le CRI :
– 05/01/2004 : basculement de agat
– 07/01/2004 : basculement de lps
– 12/01/2004 : basculement de ano
• Il y a eu des échanges avec les responsables de ano et lps pour bien réussir la migration
– lps : utilisation de exmh
– ano : rien de particulier
Mars 2004 [email protected] 35
Basculement (suite)
• Sur l'ancien serveur :
– Arrêt du service smtp
– Unshare /var/spool/mail/ et déplacer tout son contenu vers un autre répertoire (/var/spool/mail/ doit rester vide une fois que tout reparte)
– Prévoir la redirection vers le nouveau serveur (/etc/postfix/transport) :agat.univ-lille1.fr smtp:nilus.univ-lille1.frgat.univ-lille1.fr smtp:nilus.univ-lille1.fr
– Exécution des scripts prévus
Mars 2004 [email protected] 36
Basculement (suite)
• Sur le nouveau serveur :
– Création des comptes
– Conversion des BALs
– Traitement des mailings-lists
– Traitement des .forward et .procmailrc
• Informer le CRI pour rediriger les mails @gat et @agat vers le nouveau serveur
• Redémarrage du service smtp sur l'ancien serveur
Mars 2004 [email protected] 37
L'après basculement
• Traitement des anciennes BALs
• Les null-clients s'adressent dorénavant au nouveau serveur (mathsmtp dans la variable relayhost dans main.cf)
• Assistance auprès des utilisateurs
Mars 2004 [email protected] 38
Problèmes rencontrés
• Problèmes de connexion IMAPS :
– Dans /usr/lib/courier-imap/etc/imapd
• MAXDAEMONS (40 par défaut)
• MAXPERIP (4 par défaut)
• Problèmes avec certains users qui ont du mal avec le changement
• Forte demande pour pine– pine -f {mathimaps.univ-lille1.fr/ssl/novalidate-cert}#allfolders.inbox.[]
• Problèmes avec le contrôle anti-spam
– Réglage dans amavisd-new ($local_domains_acl)
• Montée de charge à cause de httpd
Mars 2004 [email protected] 39
Si la mise en place d'un tel serveur vous intéresse ...
• http://math.univ-lille1.fr/lmsp/