Annonce

Réduire
Aucune annonce.

[Serveur dédié] 5 - Postfix : le serveur mail POP3 et SMTP

Réduire
Ceci est une discussion importante.
X
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Tutoriel [Serveur dédié] 5 - Postfix : le serveur mail POP3 et SMTP

    Postfix, SMTP, SASL (SSL), TLS, POP3 et IMAP


    5.1 Postfix

    Postfix est le serveur SMTP de messagerie électronique libre le plus répandu. Il se charge de la livraison des e-mails et a été conçu de façon modulaire autour de différents programmes dévolus chacun à une tâche précise. Cela le rend résistant en terme de sécurité, tout en étant extensible. Plusieurs commandes servent à l'administrer, en voici quelques unes :

    *postfix : pour démarrer, arrêter et redémarrer Postfix (root seulement)
    *postconf : affiche ou permet d'éditer les paramètres du fichier main.cf
    *postalias : maintient les bases de données alias de Postfix (cf : newaliases)
    *postmap : maintient les tables de correspondances de Postfix (cf : hash)
    *postsuper : maintient la file d'attente

    Dans la plupart des cas, la configuration suggérée ici sera à adapter à votre situation. En effet, celle-ci est relativement longue à mettre en place selon les mécanismes de stockage et d'identification choisis.


    Installation

    Commençons par ajouter les paquets postfix, sasl pour l'authentification et procmail :

    apt-get install postfix libsasl2-2 sasl2-bin libsasl2-modules libdb4.8-util procmail

    Si l'installation ne vous propose pas directement de répondre aux questions de configuration des paquets, utilisez la commande :

    dpkg-reconfigure postfix

    Voici les réponses-types à apporter dans la langue de Shakespeare. En ce qui concerne le nom du serveur, remplacez bien sûr test.alsacreations.com par votre hostname (de préférence celui contenu dans le fichier /etc/hostname) :

    Code:
    General type of configuration? <-- Internet Site
    Where should mail for root go <-- rien (laisser blanc)
    Mail name? <-- test.alsacreations.com
    Other destinations to accept mail for? (blank for none) <-- test.alsacreations.com, localhost
    Force synchronous updates on mail queue? <-- No
    Local networks? <-- 127.0.0.0/8
    Use procmail for local delivery? <-- Yes
    Mailbox size limit <-- 0
    Local address extension character? <-- +
    Internet protocols to use? <-- all
    Configuration minimale

    Le fichier de configuration principal de Postfix est [i]/etc/postfix/main.cf[/i]

    vi /etc/postfix/main.cf

    Description de certaines directives :

    Code:
    myhostname = test.alsacreations.com
        Vérifiez que cette option contient bien le nom de domaine (FQDN) de votre serveur.
    myorigin = /etc/mailname
        Cette option définit le nom utilisé par le serveur pour s'identifier. En précisant un nom de fichier (par défaut /etc/mailname), le contenu de celui-ci sera lu et assigné à l'option. Dans notre cas, /etc/mailname contient test.alsacreations.com, n'hésitez pas à vérifier l'exactitude du contenu de ce fichier.
    smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
        Bannière affichée lors de la connexion SMTP sur le port 25. Les variables commençant par $ seront remplacées par leurs valeurs définies précédemment. Soyez sobre.
    mydestination = test.alsacreations.com, test, localhost.localdomain, localhost
        Liste des domaines pour lesquels le serveur doit accepter le courrier.
    relayhost =
        Pour effectuer les livraisons de courrier via un relais (ici vide).
    mynetworks = 127.0.0.0/8
        Réseaux locaux autorisés.
    mailbox_size_limit = 0
        Limite de taille pour les boîtes aux lettres, en octets (0 = illimité).
    message_size_limit = 51200000
        Limite de la taille maximum d'un message, en octets (ici 50 Mo).
    Après toute modification de ce fichier, redémarrez Postfix ou rechargez plus simplement la configuration grâce à postfix reload, ou encore /etc/init.d/postfix reload

    La documentation Postfix traduite en français recense les paramètres de configuration, n'hésitez pas à l'interroger.


    Configuration avancée

    Code:
    biff = no
        Activer la notification en cas de réception de nouveaux e-mails dans la console (yes / no).
    mailbox_command = procmail -a "$EXTENSION"
        Commande pour procmail.
    recipient_delimiter = +
        Séparateur entre le nom d'utilisateur et les extensions d'adresse (par défaut le signe +).
    inet_interfaces = all
        Interfaces réseau sur lesquelles écouter (ici all = toutes).
    header_checks = regexp:/etc/postfix/header_checks
        Permet d'opérer des tests sur les headers contenus dans l'e-mail avec des expressions régulières contenues dans le fichier mentionné. Utile pour filtrer "manuellement" des courriers indésirables. L'équivalent body_checks existe également.
    alias_database = hash:/etc/aliases
        Fichier de hash contenant une table d'alias mail. Celle-ci est éditable dans /etc/aliases, puis (indispensable) regénérée en hash grâce à la commande newaliases qui produit /etc/aliases.db
    Consultez la documentation relative aux tables de correspondance pour plus de détails sur ces types.

    Dans notre cas, nous allons utiliser le panel DTC pour la gestion des boîtes e-mail virtuelles (multi-domaines), ce qui produira automatiquement les options suivantes (données pour information, celles-ci pouvant varier selon le système et les versions) :

    Code:
    transport_maps = hash:/etc/postfix/transport
    alias_maps = hash:/etc/aliases, hash:/var/lib/dtc/etc/postfix_aliases
    relay_domains = /var/lib/dtc/etc/postfix_relay_domains
    relay_recipient_maps = hash:/var/lib/dtc/etc/postfix_relay_recipients
    virtual_alias_maps = hash:/var/lib/dtc/etc/postfix_virtual
    virtual_mailbox_domains = hash:/var/lib/dtc/etc/postfix_virtual_mailbox_domains
    virtual_mailbox_maps = hash:/var/lib/dtc/etc/postfix_vmailbox
    virtual_uid_maps = hash:/var/lib/dtc/etc/postfix_virtual_uid_mapping
    virtual_gid_maps = static:65534
    virtual_mailbox_limit = 51200000
    virtual_minimum_uid = 500
    virtual_mailbox_base = /
    Consultez aussi la documentation : Hébergement des sites virtuels

    Vérifiez à tout instant la configuration grâce à postfix check, puis rechargez avec postfix reload

    L'outil postconf vous permet d'afficher la configuration de Postfix avec les arguments suivants :

    *postconf -d : affiche les paramètres par défaut de Postfix au lieu de ceux utilisés
    *postconf -n : affiche les paramètres modifiés par rapport aux valeurs par défaut
    *postconf -v : affiche la totalité des paramètres utilisés
    *postconf -e 'biff = no' : édite le fichier main.cf (ajoute ou modifie la ligne mentionnée)

    Si vous utilisez le panel DTC, éditez/var/lib/dtc/etc/postfix_config_snippets pour ajouter des instructions spécifiques au fichier main.cf de Postfix qui peut être regénéré et donc oublier vos modifications. Celui-ci sera chargé en sus.



    5.2 Postfix SASL (SSL) et TLS

    Ces options sont facultatives mais permettent d'augmenter significativement la sécurité du serveur. Dans la plupart des cas si vous utilisez un panel de gestion (DTC, VHCS, ISPConfig, Plesk), elles seront mises en place automatiquement.

    TLS

    La couche de sécurité du transport TLS (ou SSL) fournit les authentifications basées sur des certificats et le chiffrement des sessions. Une session chiffrée protège les informations transmises par message SMTP ou par les authentifications SASL.
    Génération des certificats SSL

    Afin d'exploiter le SSL, il va falloir générer des certificats pour Postfix :


    mkdir /etc/postfix/ssl

    cd /etc/postfix/ssl/

    openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

    chmod 600 smtpd.key

    openssl req -new -key smtpd.key -out smtpd.csr



    Quelques exemples de réponses aux questions qui vous seront posées à cette étape :

    Code:
    Organization Name (O) : Hackademics
    Organizational Unit Name (OU) : SMTPD SSL key
    Common Name (CN) : test.hackademics.fr
    openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

    openssl rsa -in smtpd.key -out smtpd.key.unencrypted

    mv -f smtpd.key.unencrypted smtpd.key

    openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650


    Répondez aux questions de la même façon qu'à l'étape précédente.

    Modification de la configuration Postfix pour TLS

    Ajoutons quelques lignes de configuration à main.cf pour activer TLS :

    vi /etc/postfix/main.cf


    Code:
    smtp_use_tls = yes
    smtp_tls_note_starttls_offer = yes
    smtpd_tls_auth_only = no
    smtpd_use_tls = yes
    smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
    smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
    smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
    smtpd_tls_loglevel = 1
    smtpd_tls_received_header = yes
    smtpd_tls_session_cache_timeout = 3600s
    tls_random_source = dev:/dev/urandom
    smtpd_recipient_limit = 100
    smtpd_helo_restrictions = reject_invalid_hostname
    smtpd_sender_restrictions = reject_unknown_address
    smtpd_recipient_restrictions = permit_sasl_authenticated,
     permit_mynetworks,
     reject_unauth_destination,
     reject_unknown_sender_domain,
     reject_unknown_client,
     reject_rbl_client zen.spamhaus.org,
     reject_rbl_client bl.spamcop.net,
     reject_rbl_client cbl.abuseat.org,
     permit
    La dernière instruction nécessite une précision. Elle permet la connexion aux clients authentifiés via SASL, puis aux clients appartenant aux réseau locaux, rejette les destinations inconnues, les expéditeurs provenant de domaines inconnus et les clients inconnus. Elle contient également une liste de serveurs RBL qui contiennent des bases de données d'adresses IP de spammeurs identifiés. N'hésitez pas à l'ajuster selon vos besoins. Certains serveurs sont plus restrictifs que d'autres. Enfin, elle se termine par l'instruction permit qui autorise l'accès aux clients ayant passé avec succès cette liste de vérifications. Consultez aussi la documentation : Contrôle d'accès et de relais SMTP et Vérification des adresses pour la réception.

    SASL

    Afin de permettre l'authentification SASL par Postfix, il va être nécessaire de modifier la configuration générale. Nous allons ajouter les options suivantes à /etc/postfix/main.cf afin de n'autoriser l'accès au SMTP qu'aux utilisateurs identifiés (par un login qui est leur adresse e-mail, et le mot de passe de ce compte e-mail). Consultez aussi à ce sujet la documentation : Authentification SASL

    vi /etc/postfix/main.cf

    Code:
    smtpd_sasl_local_domain = $myhostname
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_security_options = noanonymous
    broken_sasl_auth_clients = yes
    Avec le panel d'administration DTC et au moment de la rédaction de ce tutoriel, il est recommandé d'exploiter sasldb2. Vous pouvez donc arrêter le service saslauthd et le retirer du démarrage :
    Code:
    /etc/init.d/saslauthd stop && update-rc.d -f saslauthd remove
    puis modifier la façon dont le SMTP identifie les utilisateurs :

    vi /etc/postfix/sasl/smtpd.conf

    Code:
    pwcheck_method: auxprop
    mech_list: login plain
    Dans certains cas, une petite manipulation est nécessaire pour la compatibilité du fichier sasldb2 avec Debian :

    chown root.root /var/spool/postfix/etc/sasldb2

    ln -s /var/spool/postfix/etc/sasldb2 /etc/sasldb2


    N'oubliez pas de redémarrer Postfix si nécessaire : [i]/etc/init.d/postfix[i] restart puis passez directement à la dernière étape : Courier (POP3 et IMAP).

    Si vous n'utilisez pas DTC, suivez ces quelques instructions pour mettre en place le daemon d'authentification, saslauthd :

    mkdir -p /var/spool/postfix/var/run/saslauthd

    ln -s /var/spool/postfix/var/run/saslauthd /var/run

    chgrp sasl /var/spool/postfix/var/run/saslauthd

    adduser postfix sasl

    vi /etc/default/saslauthd


    Code:
    START=yes
    MECHANISMS="pam"
    PARAMS="-r"
    OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
    vi /etc/postfix/sasl/smtpd.conf

    pwcheck_method: saslauthd
    mech_list: login plain

    Démarrez ou redémarrez saslauthd : /etc/init.d/saslauthd start

    N'oubliez pas de redémarrer Postfix si nécessaire : /etc/init.d/postfix restart

    Si vos certificats ont été créés pour localhost et que vous obtenez un message d'avertissement dans votre client mail, re-générez ces derniers avec les bonnes informations (le champ CN=... doit refléter votre hostname dans imapd.cnf et pop3d.cnf) :

    Code:
    cd /etc/courier
    vi /etc/courier/imapd.cnf
    CN=test.alsacreations.com
    vi /etc/courier/pop3d.cnf
    CN=test.alsacreations.com
    rm -f /etc/courier/imapd.pem
    rm -f /etc/courier/pop3d.pem
    mkimapdcert
    mkpop3dcert
    Puis redémarrez les services :

    Code:
    /etc/init.d/courier-imap-ssl restart
    /etc/init.d/courier-pop-ssl restart
    Amavis et Spamassassin

    Il est possible d'utiliser l'anti-virus Amavis et Spamassassin pour filtrer les courriers entrants. Référez-vous à leurs documentations respectives pour tous les détails sur leur mise en place.



    5.3 Courier : POP3 et IMAP

    Courier joue le rôle de serveur POP3 et IMAP pour la réception des messages.
    Installation

    apt-get install courier-authdaemon courier-base courier-imap courier-maildrop courier-pop courier-pop-ssl courier-imap-ssl

    Quelques questions peuvent vous être posées lors de l'installation. Par défaut, répondez :

    Code:
    Create directories for web-based administration ? <-- No
    SSL certificate required <-- Ok
    Nous pouvons voir qu'il est constitué de plusieurs paquets, deux pour le protocole POP et sa déclinaison SSL, deux autres pour l'IMAP et sa déclinaison SSL, et aussi un pour l'authentification.

    Configuration

    Toute la configuration de courier réside dans /etc/courier. Celle-ci sera en théorie générée automatiquement si vous possédez un panel d'administration (tel que DTC).

    Code:
    authdaemonrc
        Contient la configuration du démon d'authentification, notamment la directive authmodulelist
    authmodulelist
        Liste des modules utilisés pour l'authentification
    authmysqlrc
        Si nécessaire contient les informations de connexion MySQL dans le cadre d'une authentification par base de données
    imapd
        Contient la configuration du démon IMAP avec notamment IMAPDSTART et MAILDIRPATH
    imapd-ssl
        Equivalent pour l'IMAP SSL
    pop3d
        Contient la configuration du démon POP3 avec notamment POP3DSTART et MAILDIRPATH
    pop3d-ssl
        Equivalent pour le POP3 SSL
    userdb
        Liste des utilisateurs, associée aux emplacements de stockage des mails
    N'hésitez pas à redémarrer les services lors de changements de configuration.

    /etc/init.d/courier-authdaemon restart

    /etc/init.d/courier-imap restart

    /etc/init.d/courier-imap-ssl restart

    /etc/init.d/courier-pop restart

    /etc/init.d/courier-pop-ssl restart



    5.4 Spamassassin


    SpamAssassin est le plus célèbre des anti-spam. Son installation se déroule de manière classique :

    apt-get install spamassassin

    Editez /etc/default/spamassassin pour activer le daemon en modifiant l'option ENABLED à 1.

    Code:
    ENABLED=1
    Editez le fichier /etc/mail/spamassassin/local.cf en vous référant à la documentation pour personnaliser les règles de filtrage, et décommentez notamment la ligne permettant de définir le préfixe à ajouter aux sujets d'e-mails détectés comme indésirables :

    Code:
    rewrite_header Subject *****SPAM*****
    Précisez si vous le souhaitez les trusted_networks (réseaux de confiance) et le niveau de sensibilité required_score qui se situe par défaut à 5 (score bas, 10 étant le plus élevé et le plus sensible mais augmentant le risque de faux positifs).

    Code:
    required_score required_score 5.0
    L'option report_safe permet de sauver les messages incriminés en pièce jointe du mail original (0 : désactivé, 1 : activé, 2 : utiliser seulement du texte).

    Code:
    report_safe 1
    Pour activer les filtres bayésiens :

    Code:
    use_bayes 1
    use_bayes_rules 1
    bayes_auto_learn 1
    Démarrez le service spamd :

    /etc/init.d/spamassassin start

    Lorsque vous rencontrez un e-mail de spam, vous pouvez le placer dans un répertoire (par exemple ~/Mail/spam) et lancer l'apprentissage : sa-learn --showdots --spam ~/Mail/spam. Si vous désirez tester un fichier mail, utilisez le client : spamc -c <fichier.eml 17.3="" 5.0=""></fichier.eml>. Note : Vous pouvez également coupler SpamAssassin à Razor 2, DCC et Pyzor pour la détection d'empreintes connues.

    Dans certains cas il vous sera nécessaire de modifier la configuration de postfix dans /etc/postfix/master.cf afin de lui indiquer la méthode de filtrage. Si vous utilisez un panel tel que DTC, ces règles sont ajoutées automatiquement. Sinon, inspirez-vous de ces indications. A la ligne concernant le smtp, ajoutez l'option ''content_filter'. Ceci devrait ressembler à :

    Code:
    smtp inet n - - - 2 smtpd
    -o content_filter=spamassassin
    (Le 2 doit être le même chiffre indiqué que pour l'option max-children dans /etc/default/spamassassin).

    Ajoutez également si nécessaire à la fin du fichier /etc/postfix/master.cf :

    Code:
    spamassassin unix - n n - - pipe
    user=spamd argv=/usr/bin/spamc -f -e
    /usr/sbin/sendmail -oi -f ${sender} ${recipient}
    Puis rechargez la configuration de postfix /etc/init.d/postfix reload

    Vous pourrez tester la bonne marche de spamassassin en vous envoyant un e-mail contenant XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X dans son body.

    Source: alsacrea


    Suivre Hackademics: Twitter, Google+, Facebook.
Chargement...
X