Postfix
Transcription
Postfix
Reseau−message−postfix Sommaire Postfix..................................................................................................................................................................1 Postfix.....................................................................................................................................................1 Installation........................................................................................................................................1 Lancement........................................................................................................................................2 SpamAssassin.........................................................................................................................................2 Installation........................................................................................................................................2 Configuration....................................................................................................................................3 Lancement........................................................................................................................................3 Anomy Sanitizer.....................................................................................................................................3 Filtrage avec Postfix :.............................................................................................................................4 ClamAV..................................................................................................................................................5 Installation........................................................................................................................................5 Lancement........................................................................................................................................5 Configuration de la mise à jour automatique :.................................................................................5 Intégration de l'antivirus dans Anomy Sanitizer..............................................................................6 Optimisation des performances (facultatif)............................................................................................6 UW−IMAP (pop3 et imap avec ssl).......................................................................................................7 Installation........................................................................................................................................7 Création des certificats.....................................................................................................................7 Configuration....................................................................................................................................7 Copyright............................................................................................................................................................9 i Postfix Postfix par Nicolas Agius Ce document va vous permettre d'installer un serveur mail complet (smtp, pop3, imap) avec filtrage anti−spams et anti−virus. Vous pourrez ensuite y ajouter apache avec Squirrelmail, par exemple, pour un accès webmail. Pour réaliser ceci, vous aurez besoin des logiciels suivants : • Postfix (serveur smtp) • SpamAssassin (filtrage spam) • Anomy Sanitizer (filtrage mails erronés et douteux) • ClamAV (antivirus) • UW−IMAP (serveur pop3 et imap) Ainsi que l'ensemble des scripts et fichiers que j'ai utilisés pour cette configuration : Fichiers−conf−postfix.tar Cette documentation a été écrite avec les versions suivantes (du 04/2004) : • postfix−2.0.19.tar.gz • Mail−SpamAssassin−2.63.tar.gz • anomy−sanitizer−1.66.tar.gz • clamav−0.65.tar.gz • imap−2004.RC7.tar.Z Copiez ces fichiers dans /usr/src/ par exemple, vous en aurez besoins par la suite. Postfix Postfix est un serveur smtp performant, simple à configurer et sécurisé. C'est un équivalent à Qmail, mais il est plus facile à mettre en place. Installation Exécutez les commandes suivantes : # tar −xvzf postfix−2.0.19.tar.gz # cd postfix−2.0.19/ # make # groupadd postdrop # useradd postfix −d /dev/null −s /bin/false −c postfix # echo "postfix: root" >>/etc/aliases # make install Cette dernière commande va vous demander des informations : donnez les réponses par défaut. Si vous utilisez Mandrake, tapez simplement : # urpmi postfix Postfix 1 Reseau−message−postfix Postfix est installé et les alias sont créés par défaut dans /etc/postfix/aliases. Éditer le fichier /etc/postfix/main.cf et modifier les lignes suivantes afin de mettre des paramètres adaptés : myhostname = mail.chezmoi.fr mydomain = chezmoi.fr myorigin = $mydomain mynetworks = 192.168.1.0/24, 127.0.0.0/8 #inet_interfaces = 192.168.1.1 mydestination = $myhostname, localhost.$mydomain, $mydomain Rq: le serveur DNS de votre domaine devra contenir l'enregistrement de mail.chezmoi.fr Pour définir des alias, ajouter à la fin du fichier /etc/aliases des lignes de la forme : nom_alias: destinataire Exemple : operateur: root N'oubliez pas de faire postalias /etc/aliases pour mettre à jour les modifications. Lancement Copier ce script [postfix_postfix.txt postfix] dans /etc/rc.d/init.d (sans l'extension .txt) Lancement : /etc/rc.d/init.d/postfix start Pour lancer Postfix à chaque démarrage faites : # chkconfig −−add postfix # chkconfig −−level 345 postfix on Quelques commandes d'administration : • Rechargement de la config : postfix reload • Forcer l'envoi des messages en attente : sendmail −q • Supprimer tous les messages en attente : postsuper −d aLL Plus d'info : man postfix SpamAssassin SpamAssassin est un filtre anti−spam performant avec des fonctionnalités d'auto−apprentissage. Installation SpamAssassin a besoin d'un certain nombre de modules Perl (certains sont sans doute déjà installés sur votre machine) que l'on peut récupérer en utilisant la mise à jour par Internet CPAN (résolution des dépendances entre les modules). Si vous ne disposez pas de la mise à jour par internet, vous pouvez télécharger les modules manuellement sur http://www.cpan.org/ . Lancement 2 Reseau−message−postfix # perl −MCPAN −e shell o conf prerequisites_policy ask install MIME::Base64 install MIME::QuotedPrint install HTML::Parser install Net::DNS install DB_File install Digest::SHA1 install Mail::SpamAssassin quit Vous pouvez aussi installer SpamAssassin à partir du tarball (Mail−SpamAssassin−2.63.tar.gz) , mais les modules perl devront être installés auparavant. Ensuite, copiez ce script de démarrage (sans l'extension .txt) [postfix_spamd.txt spamd] (présent dans les sources) dans le répertoire /etc/rc.d/init.d Configuration La configuration se fait dans le fichier /etc/mail/spamassassin/local.cf, ajoutez−y les lignes suivantes : rewrite_subject 1 subject_tag [***SPAM***] Avec cette configuration, les messages détectés comme spam (avec un score supérieur à 5) auront leur champ Subject commençant par [***SPAM***] et un tag X−Spam−Level indiquant le score du message. Pour ne pas filter les messages des personnes que vous savez sûres, vous pouvez constituer une "liste blanche" en ajoutant à la fin de ce fichier (local.cf) des lignes de la forme : whitelist_from [email protected] Plus d'infos : perldoc Mail::SpamAssassin::Conf Lancement La commande classique : /etc/rc.d/init.d/spamd start Pour lancer spamassassin à chaque démarrage : # chkconfig −−add spamd # chkconfig −−level 345 spamd on Anomy Sanitizer Anomy Sanitizer est un filtre mail qui corrige les messages défectueux et bloque les pièces jointes suspectes. Il se charge aussi d'appeler l'antivirus. Copiez le tarball dans /usr/local # cd /usr/local/ # tar −xzvf anomy−sanitizer−1.66.tar.gz # chown −R root:filter /usr/local/anomy # chmod 0750 /usr/local/anomy Configuration 3 Reseau−message−postfix La configuration se fait dans le fichier /etc/sanitizer.cfg Voici un exemple de configuration : [postfix_sanitizer.cfg sanitizer.cfg] à copier dans /etc. Pour tester si cela fonctionne bien, faites : # cd /usr/local/anomy/testcases/ # ./testall.sh Plus d'informations : /usr/local/anomy/sanitizer.html Filtrage avec Postfix : La technique de filtrage utilisée ici est celle proposée par la documentation de Postfix. Nous aurions pu utiliser maildrop, qui permet de mettre des règles de filtrages différentes pour chaque utilisateur mais la "méthode postfix" est plus simple et plus flexible. La méthode choisie ici est le filtrage par script, idéale pour les petits et moyens serveurs. Si vous avez besoin de plus de performances, vous pouvez utiliser un filtrage par daemon, avec amavisd−new (http://www.ijs.si/software/amavisd/) . # groupadd filter # useradd filter −s /bin/false −d /var/spool/filter −g filter # rm −f /var/spool/filter/.* Voici le script dont a besoin Postfix pour effectuer le filtrage : [postfix_filter.sh.txt filter.sh] Cette méthode offre aussi la possibilité de filtrer les mails en émission ( cela peut être intéressant si vous ne voulez pas qu'un de vos utilisateurs envoie des spams ou des virus ... ) Copier le script dans /usr/local/anomy/ et ensuite : # cd /usr/local/anomy/ # chown root:filter filter.sh # chmod 750 filter.sh ajoutez à la fin de /etc/postfix/master.cf : filter unix − n n − − pipe flags=Rq user=filter argv=/usr/local/anomy/filter.sh −f ${sender} −− ${recipient} • Pour un filtrage entrant et sortant : toujours dans master.cf, après la ligne : smtp inet n − n − − smtpd ajouter : −o content_filter=filter:dummy • Pour filtrage entrant seulement : il faut spécifier une liste d'adresses de destination à filtrer. Créez le fichier /etc/postfix/filtered_domains contenant : chezmoi.fr FILTER filter:dummy (évidemment, remplacer chezmoi.fr par votre nom de domaine) Faites : postmap filtered_domains pour générer la map correspondante. Ensuite, ajoutez à la fin de /etc/postfix/main.cf : smtpd_recipient_restrictions = permit_mynetworks check_recipient_access hash:/etc/postfix/filtered_domains reject_unauth_destination Filtrage avec Postfix : 4 Reseau−message−postfix Rq : remplacer hash si besoin par la valeur donnée par la commande : postconf default_database_type Pour prendre en compte les modifications : postfix reload Plus d'info : postfix−2.0.19/README_FILES/FILTER_README (dans les sources) ClamAV ClamAV est un antivirus Unix sous licence GPL basé sur le projet OpenAntivirus. Installation Exécutez les commandes suivantes : # tar −xzvf clamav−0.65.tar.gz # cd clamav−0.65 # groupadd clamav # useradd −g clamav −s /bin/false −c "Clam AntiVirus" −d /dev/null clamav # ./configure −−sysconfdir=/etc # make # make install # cp contrib/init/RedHat/clamd /etc/rc.d/init.d La configuration du daemon clamd se fait dans le fichier /etc/clamav.conf Editez−le et supprimez la ligne "Example", enlevez aussi le # devant la ligne ScanMail Plus d'informations : man clamav.conf Lancement Pour démarrer le daemon, faites : /etc/rc.d/init.d/clamd start Et pour le lancer à chaque démarrage : # chkconfig −−add clamd # chkconfig −−level 345 clamd on Rq: La vérification manuelle d'un ficher se fait avec la commande clamdscan Configuration de la mise à jour automatique : La mise à jour automatique permet de télécharger les dernières définitions de virus. # touch /var/log/clam−update # chmod 600 /var/log/clam−update # chown clamav /var/log/clam−update Ajoutez la ligne suivante dans /etc/crontab pour télécharger la mise à jour tous les jours à 12h00 : 00 12 * * * root /usr/local/bin/freshclam −−quiet −l /var/log/clam−update Plus d'informations : man freshclam ClamAV 5 Reseau−message−postfix Intégration de l'antivirus dans Anomy Sanitizer Voici un patch qui permet d'intégrer ClamAV dans anomy : [postfix_anomy−clamav.patch anomy−clamav.patch] Copiez le dans /usr/local/anomy/contrib : # cd /usr/local/anomy/contrib # patch <anomy−clamav.patch # cp check_for_virus ../chk_virus.sh # cd .. # chown root:filter chk_virus.sh # chmod 750 chk_virus.sh Il faut ensuite modifier la configuration dans le fichier /etc/sanitizer.cfg : Modifier les lignes : file_list_1_policy = drop file_list_1_scanner = 0 en : file_list_1_policy = accept:accept:drop:save file_list_1_scanner = 0:1:3:/usr/local/anomy/chk_virus.sh %FILENAME %REPLY_TO Avec cette configuration, les pièces jointes susceptibles de contenir des virus seront scannées. Plus d'informations sur les actions et les stratégies de sécurité à mener avec l'antivirus : /usr/local/anomy/sanitizer.html Optimisation des performances (facultatif) Les fichiers temporaires utilisés par ce filtrage sont créés dans le répertoire /var/spool/filter. En montant ce répertoire en mémoire vive (grâce à tmpfs), nous gagnons du temps sur les opérations de création/lecture/écriture. Rq : en cas de traitement de mail très volumineux, tmpfs n'utilisera au maximum que la moitié de la ram de la machine. Pour ceci faites : mount −t tmpfs tmpfs /var/spool/filter/ −o mode=700,gid=filter,uid=filter,noexec Pour que le montage s'effectue à chaque démarage, ajoutez la ligne suivante dans le fichier /etc/fstab : tmpfs /var/spool/filter tmpfs mode=700,gid=filter,uid=filter,noexec 0 0 Les fichiers de ce répertoire étant stockés dans la ram, il sont perdus à chaque arrêt de la machine. Pour ne pas recréer les préférences utilisateurs de Spamassassin à chaque démarrage (enregistrées dans ce répertoire) , il faut modifier les paramètre du daemon spamd : Créez le fichier /etc/sysconfig/spamassassin contenant : SPAMDOPTIONS="−d −m5 −H" Plus d'informations : man spamd Faites /etc/rc.d/init.d/spamd restart pour prendre en compte les modifications. Intégration de l'antivirus dans Anomy Sanitizer 6 Reseau−message−postfix UW−IMAP (pop3 et imap avec ssl) UW−IMAP est le serveur imap/pop3 de l'Université de Washington, plus facile à mettre en place que Courrier−Imap. Il utilise le super daemon xinetd. Installation Pour bénéficier des fonctionnalités de chiffrement, OpenSSL doit être déjà installé. Vous pouvez modifier ci−dessous les valeurs de SSLINCLUDE, SSLLIB et SSLDIR pour correspondre à votre installation. (les chemins utilisés ici sont ceux d'une RedHat 7.3) # tar −xzvf imap−2004.RC7.tar.Z # cd imap−2004.RC7 # make slx SSLINCLUDE=/usr/include/openssl SSLLIB=/usr/lib SSLDIR=/usr/share/ssl EXtraDRIVERS= SSLTYPE=unix # cp ipopd/ipop3d /usr/sbin # cp imapd/imapd /usr/sbin # chmod 1777 /var/spool/mail Avec cette configuration, à la fois les connections normales (pop3) et les connecions sécurisées (pop3s) sont possibles. Création des certificats Ces certificats sont nécessaires à l'authentification SSL. # cd /usr/share/ssl/certs # openssl req −new −x509 −nodes −out imapd.pem −keyout imapd.pem −days 365 # openssl req −new −x509 −nodes −out ipop3d.pem −keyout ipop3d.pem −days 365 # chmod 600 ipop3d.pem # chmod 600 imapd.pem Plus d'informations : man openssl Configuration UW−IMAP utilise le super−daemon xinetd, qui doit être configuré pour faire appel à ipop3d et imapd. Vérifiez que les entrées suivantes sont présentes dans /etc/services (si besoin est, ajoutez−les) : pop3 110/tcp imap 143/tcp imaps 993/tcp pop3s 995/tcp Créez les 4 fichiers suivants dans /etc/xinetd.d (supprimez l'extension .txt) : [postfix_pop3.txt pop3], [postfix_pop3s.txt pop3s], [postfix_imap.txt imap], [postfix_imaps.txt imaps] . Ajouter ensuite dans le fichier /etc/hosts.allow les lignes (en adaptant à votre réseau) : ipop3d : 192.168.1.0/255.255.255.0 imapd : 192.168.1.0/255.255.255.0 Ces deux lignes permettent de définir les permissions d'accès réseaux aux services fournis par xinetd. UW−IMAP (pop3 et imap avec ssl) 7 Reseau−message−postfix Plus d'informations : man hosts.allow Faites /etc/rc.d/init.d/xinetd restart pour prendre en compte les modifications. Voila, c'est terminé. Si tout s'est bien passé, votre serveur mail fonctionne. N'oubliez pas de vérifier que votre firewall et votre service DNS sont bien configurés (notamment l'enregistrement MX de votre nom de domaine, pour que votre serveur smtp soit connu du monde extérieur) . Cette page est issue de la documentation 'pré−wiki' de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Nicolas AGIUS le 10/10/2004. UW−IMAP (pop3 et imap avec ssl) 8 Copyright Copyright © 10/10/2004, Nicolas AGIUS Ce document est publié sous licence Creative Commons Attribution 2.0 : http://creativecommons.org/licenses/by/2.0/ Copyright 9