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

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:

    postconf -e mailbox_transport=cyrus

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

    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

    systemctl restart postfix

Configuration Cyrus

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

    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.

    systemctl start cyrus-imapd

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

    systemctl enable cyrus-imapd

  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):

    saslpasswd2 -c cyrus

    Password:
    Again (for verification):
  5. Sécuriser la base contentant les informations d'authentification.
    chgrp mail /etc/sasldb2
    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.

    imtest -m login -p imap -a cyrus

    WARNING: no hostname supplied, assuming localhost
    S: * OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE STARTTLS] srvname.exemple-ch.org 
    Cyrus IMAP v2.4.17-Fedora-RPM-2.4.17-8.el7_1 server ready
    Please enter your password:
    C: L01 LOGIN cyrus {8}
    S: + go ahead
    C: <omitted>
    S: L01 OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE ACL RIGHTS=kxte QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS 
    NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY CATENATE CONDSTORE ESEARCH SORT SORT=MODSEQ 
    SORT=DISPLAY THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE LIST-EXTENDED WITHIN QRESYNC SCAN XLIST 
    URLAUTH URLAUTH=BINARY X-NETSCAPE LOGINDISABLED COMPRESS=DEFLATE IDLE] 
    User logged in SESSIONID=<srvname.exemple-ch.org-22170-1451724829-1>
    Authenticated.
    Security strength factor: 0
    

    . logout

    * BYE LOGOUT received
    . OK Completed
    Connection closed.

Firewall

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

  1. Taper les commandes ci-dessous.
    firewall-cmd --add-port=143/tcp
    firewall-cmd --permanent --add-port=143/tcp
    firewall-cmd --add-port=110/tcp
    firewall-cmd --permanent --add-port=110/tcp

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.
  2. Editer le fichier /etc/aliases.

    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.

    newaliases

Test

  1. Envoi d'un message à mailadmin
    mail -s "Bonjour de localhost" mailadmin
    Bonjour,
    Ceci est un test
    .
  2. Connection à la boîte aux lettres

    telnet localhost imap

    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    * OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE STARTTLS] srvname.exemple-ch.org Cyrus IMAP v2.4.17-Fedora-RPM-2.4.17-8.el7_1 server ready
    

    . login mailadmin password

    OK [CAPABILITY IMAP4rev1 LITERAL+ ID ENABLE ACL RIGHTS=kxte QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS 
    NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY CATENATE CONDSTORE ESEARCH SORT SORT=MODSEQ 
    SORT=DISPLAY THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE LIST-EXTENDED WITHIN QRESYNC 
    SCAN XLIST URLAUTH URLAUTH=BINARY X-NETSCAPE LOGINDISABLED COMPRESS=DEFLATE IDLE] 
    User logged in SESSIONID=<srvname.exemple-ch.org-22185-1451733900-1>
  3. Sélectionner le dossier "inbox"

    . select inbox

    * 1 EXISTS
    * 1 RECENT
    * FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
    * OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] Ok
    * OK [UNSEEN 1] Ok
    * OK [UIDVALIDITY 1451734725] Ok
    * OK [UIDNEXT 2] Ok
    * OK [HIGHESTMODSEQ 2] Ok
    * OK [URLMECH INTERNAL] Ok
    . OK [READ-WRITE] Completed
  4. Afficher le message

    . FETCH 1 body[text]

     1 FETCH (FLAGS (\Recent \Seen) BODY[TEXT] {15}
    Hello
    Gilles
    )
    . 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.)