votre logo (logo)

BrAuSa

Serveur IMAP4 POP3 (Cyrus)

Nous allons installer et configurer un serveur Cyrus-imapd pour une utilisation avec postfix. Cyrus-imapd est un serveur de messagerir IMAP4 et POP3.

Installation

[root@srvname]# yum install cyrus-imapd

Configuration postfix

Nous allons configurer Postfix pour que celui-ci distribue les messages à Cyrus.

  1. Taper les deux commandes postconf ci-dessous:

    [root@srvname]# postconf -e mailbox_transport=cyrus

    mailbox_transport = Transport utilisé pour la distribution finale dans les boîtes aux lettres.

    [root@srvname]# postconf -e local_recipient_maps=hash:/etc/postfix/local_recipients

    local_recipient_maps = Table contenant la liste des destinataires locaux.

  2. Editer le fichier /etc/postfix/master.cf et décommenter les deux lignes en gras ci-dessous:
    ...
    # ====================================================================
    #
    # Cyrus 2.1.5 (Amos Gouaux)
    # Also specify in main.cf: cyrus_destination_recipient_limit=1
    #
    cyrus     unix  -       n       n       -       -       pipe
      user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} $
    {user}
    #
    # ====================================================================
  3. Ces deux lignes informent postfix que cyrus est l'agent de distribution des messages.

  4. Redémarrer le service postfix

    [root@srvname]# /etc/init.d/postfix restart

Configuration Cyrus

  1. Editer le fichier /etc/imapd.conf.

    [root@srvname]# vim /etc/imapd.conf

    Modifier les lignes (en gras) comme ci-dessous:

    configdirectory: /var/lib/imap
    partition-default: /var/spool/imap
    ...
    #sasl_pwcheck_method: saslauthd
    #sasl_mech_list: PLAIN
    allowplaintext: yes
    sasl_mech_list: LOGIN
    ...
    tls_ca_file: /etc/pki/tls/certs/ca-bundle.crt

  2. Démarrer le service cyrus-imapd.

    [root@srvname]# /etc/init.d/cyrus-imapd start

  3. Activer le service au démarrage du serveur.

    [root@srvname]# chkconfig cyrus-imapd on

  4. Ajouter l'administrateur.
    Nous allons configurer un administrateur pour notre serveur imap. Pour cela taper la commande ci-dessous puis saisissez deux fois un mot de passe (ne l'oubliez pas, il vous sera demander lors de la gestion des boîtes aux lettres):

    [root@srvname]# saslpasswd2 -c cyrus
    Password:
    Again (for verification):

  5. Sécuriser la base contentant les informations d'authentification.

    [root@srvname]# chgrp mail /etc/sasldb2
    [root@srvname]# chmod 660 /etc/sasldb2

  6. Tester l'authentification de l'administrateur. La commande ci-dessous vous permet de vérifier l'authentification de l'administrateur.

    [root@srvname]# imtest -m login -p imap -a cyrus
    ...
    S: C01 OK Completed
    Please enter your password:
    ...
    IAPPEND BINARY SORT SORT=MODSEQ THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE CATENATE CONDSTORE SCAN IDLE LISTEXT LIST-SUBSCRIBED X-NETSCAPE URLAUTH] User logged in Authenticated.
    Security strength factor: 0

    Si la ligne en gras s'affiche, l'authentification à réussi.
    Taper la commande . logout (n'oubliez pas l'espace entre le point et logout) pour sortir du test.

    . logout

Firewall

Afin de permettre l'écoute du port 143 (IMAP) et 110 (POP3) nous devons ouvrir ces ports sur le firewall du serveur.

  1. Editer le fichier /etc/sysconfig/iptables.

    [root@srvname]# vim /etc/sysconfig/iptables

  2. Ajouter les lignes ci-dessous (en gras) avant la ligne -A INPUT -j REJECT --reject-with icmp-host-prohibited.

    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    # POP3
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT

    # IMAP
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT

    -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
    COMMIT

  3. Redémarrer le service iptables.

    [root@srvname]# /etc/init.d/iptables restart

Création de la boîte aux lettres mailadmin

Nous allons créer une boîte aux lettres mailadmin ou tout autre nom différent de postmaster (postmaster étant déjà définis).

  1. Créer la boîte aux lettres.
    Référez-vous au chapitre Gestion des boîtes aux lettres pour créer la boîte aux lettres mailadmin (dans l'exemple ci-dessous remplacer tstcyr par mailadmin.
  2. Editer le fichier /etc/aliases.

    [root@srvname]# vim /etc/aliases

  3. Ajouter la ligne ci-dessous (en gras):

    ...
    # Person who should get root's mail
    #root: marc
    root: mailadmin

    Tous les messages à destination de root et de ses alias (postmaster, webmaster, etc.) seront distribués dans la boîte mailadmin
  4. Mettre à jour la table des alias.

    [root@srvname]# newaliases

Test

  1. Envoi d'un message à mailadmin

    [root@srvname]# mail -s "Bonjour de localhost" mailadmin
    Bonjour,
    Ceci est un test
    .

  2. Connection à la boîte aux lettres (les commandes à taper sont en gras)

    [root@srvname]# telnet localhost imap
    Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'.
    * OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS] ottawa Cyrus IMAP4 v2.3.7-Invoca-RPM-2.3.7-7.el5_4.3 server ready
    . login mailadmin password
    . OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID LOGINDISABLED ACL RIGHTS=kxte QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT SORT=MODSEQ THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE CATENATE CONDSTORE IDLE LISTEXT LIST-SUBSCRIBED X-NETSCAPE URLAUTH] User logged in

  3. Sélectionner le dossier "inbox"

    . select inbox
    * FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
    * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]
    * 1 EXISTS
    * 0 RECENT
    * OK [UIDVALIDITY 1281616844]
    * OK [UIDNEXT 2]
    * OK [NOMODSEQ] Sorry, modsequences have not been enabled on this mailbox
    . OK [READ-WRITE] Completed

  4. Afficher le message

    . FETCH 1 body[text]
    * 1 FETCH (BODY[TEXT] 30
    Bonjour,
    Ceci est un test

    )
    . OK Completed (0.000 sec)

    Le corps du message s'affiche.
  5. Quitter

    . logout
    * BYE LOGOUT received
    . OK Completed
    Connection closed by foreign host.

Voila, si vous pouvez lire le corps du message, c'est que tous c'est bien passé, sinon aller voir dans le fichier /var/log/maillog.

A ce point vous disposez d'un serveur de messagerie fonctionnel sans protection contre les virus et les pourriels (spam). Vous pouvez créer des utilisateurs et paramétrer un client de messagerie (Thunderbird, Outlook etc.)

<-- Configuration de Postfix ClamAv & SpamAssassin -->

Gestion des boîtes aux lettres

La gestion des boîtes aux lettres s'effectue avec l'utilitaire cyradm.

[root@srvname]# cyradm -u cyrus -s localhost
IMAP Password:
localhost>

Une fois connecté à la console cyradm vous pouvez taper help pour obtenir une liste des commandes.

localhost> help
authenticate, login, auth authenticate to server
chdir, cd change current directory
createmailbox, create, cm create mailbox
deleteaclmailbox, deleteacl, dam remove ACLs from mailbox
deletemailbox, delete, dm delete mailbox
...

Création d'une boîte aux lettres

Nous allons créer un utilisateur appelé tstcyr, définir un quota, donner tous les droits sur cette boîte à l'admin cyrus, définir un mot de passe et pour terminer informer postfix d'accepter le nouveau destinataire (local_recipients).

  1. Création de la boîte aux lettres

    localhost> cm user.tstcyr

  2. Création du dossier Sent (éléments envoyés)

    localhost> cm user.tstcyr.Sent

  3. Création du dossier Trash (corbeille)

    localhost> cm user.tstcyr.Trash

  4. Création du dossier Drafts (brouillon)

    localhost> cm user.tstcyr.Drafts

  5. Création du dossier Junk (idésirable)

    localhost> cm user.tstcyr.Junk

  6. Définir un quota de 10Mo

    localhost> sq user.tstcyr STORAGE 10240

  7. Donner les droits à l'administrateur cyrus

    localhost> sam user.tstcyr cyrus all

    Quitter la console cyradm en tapant exit.

  8. Configurer l'authentification

    [root@srvname]# saslpasswd2 tstcyr

  9. Informer postfix d'accepter ce destinataire

    [root@srvname]# vim /etc/postfix/local_recipients

    Y ajouter la ligne suivante:

    tstcyr #Local

    Puis exécuter la commande ci-dessous:

    [root@srvname]# postmap /etc/postfix/local_recipients

La boîte aux lettres est prête à être utilisée.

Suppression d'une boîte aux lettres

Nous allons supprimer une boîte aux lettres.

  1. Supprimer la boîte aux lettres.
    Depuis la console cyradm

    localhost> dm user.tstcyr

    Quitter la console cyradm en tapant exit.

  2. Supprimer l'authentification.

    [root@srvname]# saslpasswd2 -d tstcyr

  3. Informer postfix de ne plus accepter ce destinataire.

    [root@srvname]# vim /etc/postfix/local_recipients

    Supprimer la ligne suivante:

    tstcyr #Local

    Puis exécuter la commande ci-dessous:

    [root@srvname]# postmap /etc/postfix/local_recipients

La boîte aux lettres ainsi que l'authentification sont supprimés.

<-- Configuration de Postfix ClamAv & SpamAssassin -->

Si vous avez des remarques, ou constatez des erreurs dans ce tuto, n'hésitez pas à me faire un