Outils personnels
Vous êtes ici : Accueil GNU / Linux Debian Installer le serveur IMAP Cyrus sur Debian 4.0 Etch et 5.0 Lenny
Actions sur le document
  • Send this page to somebody
  • Print this page
  • Add Bookmarklet

Installer le serveur IMAP Cyrus sur Debian 4.0 Etch et 5.0 Lenny

Par Pierre-Yves Landuré - Dernière modification 01/03/2010 12:19

Le serveur e-mail Cyrus est l'un des meilleurs serveurs IMAP disponible sous Linux. Je l'utilise avec bonheur depuis plus de 5 ans. Son principale avantage est de supporter parfaitement le filtrage des emails par le serveur, ainsi que le langage Sieve qui permet de paramétrer ce filtrage.

Installation

En premier lieu, nous installons le serveur SMTP. Mon choix s'est porté sur Exim 4. Pour ce faire, suivez mon guide:

Configurer Exim 4 sur Debian 4.0 Etch

Ensuite, nous installons le serveur Cyrus IMAP et le client MySQL:

/usr/bin/apt-get install cyrus-imapd-2.2 cyrus-admin-2.2 mysql-client \
libsasl2-modules-sql openssl apg

Mise en place de la base de données

Nous allons utiliser MySQL pour stocker les domaines et les utilisateurs de notre serveur e-mail. Pour ce faire, installez un serveur MySQL et créez une base de données CYRUS. Cela peut être fait en suivant mon guide:

MySQL sur Debian 4.0 Etch

Une fois la base de donnée créée, nous plaçons une valeur par défaut pour le nom d'hôte du serveur de la base de données:

if [ -z "$MYSQL_HOST" ]; then
MYSQL_HOST=localhost
fi

Attention : Si vous avez suivi mon guide sur le même hôte que votre serveur Cyrus Imap, vous pouvez passer ces lignes de commandes, sinon, remplacer les informations en gras par celles correspondant à votre base de données MySQL :

MYSQL_HOST=localhost
MYSQL_DB=CYRUS
MYSQL_USERNAME=cyrus
MYSQL_USERPWD=cyrus_password

Puis, nous créons les tables nécessaires:

/usr/bin/wget http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-le-serveur-imap-cyrus-sur-debian-4-0-etch/cyrus-schema.sql \
--output-document=/tmp/cyrus-schema.sql
/bin/cat /tmp/cyrus-schema.sql | /usr/bin/mysql --user=$MYSQL_USERNAME --password=$MYSQL_USERPWD --host=$MYSQL_HOST $MYSQL_DB

Création des certificats SSL

Pour accéder à votre serveur IMAP, je vous recommande de créer le sous-domaine suivants:

  • imap.domaine.com

Pour compléter ces sous-domaines, créez le certificat SSL correspondant à ces deux sous-domaines en suivant mon guide:

Créer un certificat SSL multi-domaines

De même, pour accéder à votre serveur SMTP, je vous recommande la création du sous-domaine suivant ainsi que du certificat SSL associé:

  • smtp.domaine.com

Et nous rendons les clefs privées uniquement lisibles par les utilisateurs qui en ont besoin:

/bin/chmod go+rx /etc/openssl/PRIVATE_KEYS
/bin/chown cyrus:mail /etc/openssl/PRIVATE_KEYS/imap_key.pem
/bin/chmod go-rwx /etc/openssl/PRIVATE_KEYS/imap_key.pem
/bin/chown Debian-exim:mail /etc/openssl/PRIVATE_KEYS/smtp_key.pem
/bin/chmod go-rwx /etc/openssl/PRIVATE_KEYS/smtp_key.pem

Configuration du serveur IMAP

Création de l'administrateur

En premier lieu, nous configurons le domaine par défaut de notre serveur e-mail:

DEFAULT_DOMAIN=main-domain.com

Et nous configurons l'utilisateur destiné à administrer notre serveur:

ADMIN_USERNAME=cyrus
ADMIN_PASSWORD=`/usr/bin/apg -q -a  0 -n 1 -M NCL`

Nous affichons les informations de connexion ainsi créées:

/bin/echo "L'administrateur de votre serveur IMAP a pour identifiant '$ADMIN_USERNAME' et pour mot de passe '$ADMIN_PASSWORD'."

Nous insérons ces informations dans la base de données MySQL:

/bin/echo "INSERT INTO domain(name) VALUES ('$DEFAULT_DOMAIN');
INSERT INTO user (domain_id, username, password, enabled, has_mailbox) VALUES (
(SELECT id FROM domain WHERE name='$DEFAULT_DOMAIN'),
'$ADMIN_USERNAME', '$ADMIN_PASSWORD', 1, 0);" \
| /usr/bin/mysql --user=$MYSQL_USERNAME --password=$MYSQL_USERPWD --host=$MYSQL_HOST $MYSQL_DB

Configuration de Cyrus

Nous faisons en sorte que Cyrus puisse se servir de la base de données de SASL:

/usr/sbin/adduser cyrus sasl

Nous configureons les services de Cyrus que nous allons utiliser (ou pour être plus exact, ceux que nous n'allons pas désactiver):

/bin/sed -i -e 's/^\([ \t]*\)\(pop3[ \t]\{1\}.*\)$/\1#\2/' \
-e 's/^\([ \t]*\)\(nntp[ \t]\{1\}.*\)$/\1#\2/' \
-e 's/^\([ \t]*\)\(imaps[ \t]\{1\}.*\)$/\1#\2/' \
-e 's/^\([ \t]*\)\(pop3s[ \t]\{1\}.*\)$/\1#\2/' \
-e 's/^#*\([ \t]*\)#*\(imap[ \t]\{1\}.*imapd.*\)$/\1\2/' \
-e 's/^#*\([ \t]*\)#*\(lmtp[ \t]\{1\}.*lmtpd.*\)$/\1\2/' \
-e 's/^#*\([ \t]*\)#*\(lmtpunix[ \t]\{1\}.*lmtpd.*\)$/\1\2/' \
/etc/cyrus.conf

Nous faisons en sorte que l'authentification ne soit pas nécessaire pour les connexions TCP au port lmtp :

/bin/sed -i -e 's/^\(.*lmtp[ \t]\{1\}.*cmd="\)[^"]*\(".*$\)/\1lmtpd -a\2/' \
/etc/cyrus.conf

Nous définissons le port pour lmtp :

/bin/echo -e "lmtp\t\t2003/tcp\t\t\t# Cyrus IMAP lmtp" | /usr/bin/tee -a /etc/services

Nous configurons Cyrus pour autoriser les points dans les noms d'utilisateurs (c.a.d. les points dans les adresses électroniques) :

/bin/sed -i -e 's/^\(unixhierarchysep:\).*/\1 yes/' /etc/imapd.conf

Nous configurons le serveur IMAP pour utiliser l'identification via SASL, ainsi pour que l'utilisateur cyrus soit parmis les administrateurs:

/bin/sed -i -e "s/^[#]*\(admins:\).*/\1 $ADMIN_USERNAME/" \
-e 's/^[#]*\(sasl_mech_list:\).*/\1 PLAIN DIGEST-MD5 CRAM-MD5/' \
-e 's/^[#]*\(sasl_minimum_layer:\).*/\1 0/' \
-e 's/^[#]*\(sasl_pwcheck_method:\).*/\1 auxprop/' \
-e 's/^[#]*\(sasl_pwcheck_method:\).*/\1 auxprop/' \
-e 's/^[#]*\(sasl_pwcheck_method:\).*/\1 auxprop/' \
-e 's/^[#]*\(virtdomains:\).*/\1 userid/' \
-e "s/^[#]*\(defaultdomain:\).*/\1 $DEFAULT_DOMAIN/" \
 /etc/imapd.conf

Nous configurons maintenant le serveur Cyrus pour récupérer les utilisateurs dans la base de données MySQL:

/bin/sed -i -e 's/^[#]*\(sasl_auxprop_plugin:\).*/\1 sql/' \
-e "/^[#]*\(sasl_auxprop_plugin:\).*/a\\
sasl_sql_engine: mysql\\
sasl_sql_hostnames: $MYSQL_HOST\\
sasl_sql_user: $MYSQL_USERNAME\\
sasl_sql_passwd: $MYSQL_USERPWD\\
sasl_sql_database: $MYSQL_DB\\
sasl_sql_select: SELECT user.password AS userPassword FROM user JOIN domain ON (user.domain_id = domain.id) WHERE (domain.name='%r' OR ('%r' = 'cyrus' AND domain.name='$DEFAULT_DOMAIN')) AND user.username='%u' AND user.enabled=1;\\
sasl_sql_update: UPDATE user SET user.password = '%v' FROM domain WHERE user.username = '%u' AND user.domain_id = domain.id AND (domain.name='%r' OR ('%r' = 'cyrus' AND domain.name='$DEFAULT_DOMAIN')) AND user.enabled=1;" \
/etc/imapd.conf

Nous configurons maintenant le cryptage TLS:

/bin/sed -i -e 's|^[#]*\(tls_cert_file:\).*|\1 /etc/openssl/CERTIFICATES/imap_cert.cert|' \
-e 's|^[#]*\(tls_key_file:\).*|\1 /etc/openssl/PRIVATE_KEYS/imap_key.pem|' \
-e 's|^[#]*\(allowplaintext:\).*|\1 no|' \
/etc/imapd.conf

Nous redémarrons le serveur afin de prendre en compte ces modifications:

/etc/init.d/cyrus2.2 restart

Gestion des filtres de messages depuis un client distant

Cyrus dispose d'un langage de description des filtres de messages : Sieve. Ainsi, il est possible de configurer des filtres de message coté serveur à l'aide de certain clients (Thunderbird, Horde, etc). Personnellement, je me sert du Webmail Horde (que vous pouvez installer en suivant mon guide ) pour ce faire. Cependant, si le webmail (ou le client) est installé sur une machine différente de celle du serveur, il est nécessaire de configurer le démon timsieved pour qu'il écoute les connexions en provenance du réseau. Cela se fait à l'aide de cette ligne de commande :

/bin/sed -i -e 's/localhost:sieve/sieve/' /etc/cyrus.conf

Une fois ceci fait, redémarrez Cyrus pour prendre en compte les modifications :

/etc/init.d/cyrus2.2 restart

Création automatique des boîtes e-mails

La base de données permet de stocker de manière simple et lisibles les informations de connexion des utilisateurs. Il faut cependant explicitement créer une boîtes e-mail une fois l'utilisateur ajouté à la base de données.

Nous allons donc mettre en place un script qui effectue cette manipulation automatiquement:

/usr/bin/wget http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-le-serveur-imap-cyrus-sur-debian-4-0-etch/cyrus_create_mailboxes \
--output-document=/etc/cron.hourly/cyrus_create_mailboxes
/bin/sed -i -e "s/MSQL_HOST/$MYSQL_HOST/" \
-e "s/MSQL_DB/$MYSQL_DB/" \
-e "s/MSQL_USERNAME/$MYSQL_USERNAME/" \
-e "s/MSQL_USERPWD/$MYSQL_USERPWD/" \
-e "s/ADMIN_LOGIN/$ADMIN_USERNAME/" \
-e "s/ADMIN_PWD/$ADMIN_PASSWORD/" \
/etc/cron.hourly/cyrus_create_mailboxes
/bin/chmod 500 /etc/cron.hourly/cyrus_create_mailboxes

Configuration d'Exim 4

Nous allons maintenant configurer Exim 4.

Configuration de la réception des méls

Commençons par définir la connexion à la base de données MySQL :

/bin/echo "
### main/02_exim4-config_mysql
#################################

# mysql auth
hide mysql_servers = $MYSQL_HOST/$MYSQL_DB/$MYSQL_USERNAME/$MYSQL_USERPWD

" | /usr/bin/tee /etc/exim4/conf.d/main/02_exim4-config_mysql

Nous configurons aussi les requêtes SQL utilisées :

/usr/bin/wget http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-le-serveur-imap-cyrus-sur-debian-4-0-etch-et-5-0-lenny/02_exim4-config_mysql_queries \
--output-document=/etc/exim4/conf.d/main/02_exim4-config_mysql_queries

En premier lieu, nous configurons le transport permettant à Exim de déposer les méls dans les boîtes aux lettres Cyrus :

/bin/echo "
### transport/30_exim4-config_cyrus_ltcp
#################################

# Use this if you want to to deliver to Cyrus mailboxes.
#
cyrus_ltcp:
  driver = smtp
  protocol = lmtp
  hosts = 127.0.0.1
  allow_localhost" \
| /usr/bin/tee /etc/exim4/conf.d/transport/30_exim4-config_cyrus_ltcp

Nous créons la règle de routage qui place les méls des domaines locaux dans les boîtes aux lettres Cyrus :

/usr/bin/wget http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-le-serveur-imap-cyrus-sur-debian-4-0-etch-et-5-0-lenny/010_exim4-config_cyrus_vdom \
--output-document=/etc/exim4/conf.d/router/010_exim4-config_cyrus_vdom

Nous mettons en place des règles de vérification de l'existance de l'adresse e-mail :

/usr/bin/wget http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-le-serveur-imap-cyrus-sur-debian-4-0-etch/exim4_cyrus_mailbox_checks.conf \
--output-document=/tmp/exim4_cyrus_mailbox_checks.conf
/bin/sed -i -e '/hosts[ \t]*=[ \t]*:/r /tmp/exim4_cyrus_mailbox_checks.conf' /etc/exim4/conf.d/acl/30_exim4-config_check_rcpt

Redémarrez Exim 4:

/etc/init.d/exim4 restart

Votre configuration devrait maintenant être fonctionnelle, et vous devriez pouvoir recevoir vos méls. Un bon moyen de tester cela est d'installer le paquet mailx :

/usr/bin/apt-get install mailx

Et d'envoyer un e-mail de test à l'une des adresses électroniques que vous avez configuré dans la base de données MySQL.

/bin/echo "test" | /usr/bin/mail -s "e-mail de test" username@domain.com

Si votre configuration fonctionne correctement, vous devriez retrouver ce mél dans la boîte aux lettres de l'utilisateur "username@domain.com"

Configuration de l'envoi de méls

Afin que les utilisateurs puissent envoyer des méls quelque soit leur connexion internet, il est recommender de mettre en place un serveur SMTP avec authentification pour l'envoi de méls. C'est ce que présente cette section. Elle n'est pas obligatoire, seulement recommendée.

Nous signalons à Exim les fichiers du certificat SSL à utiliser:

/bin/echo '
### main/02_exim4-config_tlscert
#################################

# ENABLING TLS
MAIN_TLS_ENABLE = true

# SSL private key
MAIN_TLS_PRIVATEKEY = /etc/openssl/PRIVATE_KEYS/smtp_key.pem

# SSL public key
MAIN_TLS_CERTIFICATE = /etc/openssl/CERTIFICATES/smtp_cert.cert

# Disabling certificate verification to avoid problems with some
# mail clients when using CACert (or self signed) certificates.
# Concerned mail clients : Outlook 2003, Mail for Mac OS X...
MAIN_TLS_VERIFY_CERTIFICATES = /dev/null
' | /usr/bin/tee /etc/exim4/conf.d/main/02_exim4-config_tlscert

Une fois ceci fait, activez l'authentification basée sur notre base de données MySQL :

/bin/echo '
### auth/10_exim4-config_mysql
#################################

plain_mysql:
driver = plaintext
public_name = PLAIN
server_prompts = :

server_condition = "${if and { \
{!eq{$2}{}} \
{!eq{$3}{}} \
{eq{$3}{${lookup mysql{MYSQL_Q_PASSWORD_PLAIN}{$value}fail}} }} {yes}{no}}"
server_set_id = $2
.ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
.endif


login_mysql:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_condition = "${if and { \
{!eq{$1}{}} \
{!eq{$2}{}} \
{eq{$2}{${lookup mysql{MYSQL_Q_PASSWORD_LOGIN}{$value}fail}} }} {yes}{no}}"

server_set_id = $1
.ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
.endif

' | /usr/bin/tee /etc/exim4/conf.d/auth/10_exim4-config_mysql

Enfin, configurez Exim 4 pour qu'il soit â l'écoute de connexion en provenance d'Internet :

MAINDOM_IP=$(/sbin/ifconfig eth0 | /bin/grep "inet adr" | /bin/sed -e 's/^.*inet adr:\([^ ]*\) .*$/\1/')
/bin/sed -i -e "s|dc_local_interfaces=.*\$|dc_local_interfaces='127.0.0.1;${MAINDOM_IP}'|" \
/etc/exim4/update-exim4.conf.conf

Une fois ceci fait, mettez à jour la configuration Exim 4, et redémarrez le serveur :

/usr/sbin/update-exim4.conf
/etc/init.d/exim4 restart

Remarque : Si la connexion TLS échoue avec l'erreur "Base64 decoding error.", il suffit de supprimer le fichier gnutls-params :

/bin/rm /var/spool/exim4/gnutls-params

Contourner le blocage du port 25

De nombreux fournisseurs d'accès bloquent le port 25 de façon à bloquer la diffusion des Spams. Cela pose problème aux personnes utilisant un serveur SMTP autre que celui du fournisseur d'accès. Pour contourner ce problème, la RFC 4409 (Message Submission for Mail) a été mise en place. Cette RFC autorise l'utilisation du port 587 en complément du port 25 pour le protocole SMTP.

Pour implémenter cette RFC sur votre serveur SMTP, utilisez la commande suivante :

/bin/echo '
### main/00_exim4-local_settings
#################################

# ENABLING RFC 4409
# see http://www.isi.edu/in-notes/rfc4409.txt
daemon_smtp_ports = smtp : submission

' | /usr/bin/tee /etc/exim4/conf.d/main/00_exim4-local_settings

N'oubliez pas de rédémarrer le serveur SMTP :

/etc/init.d/exim4 restart

Remarque : n'oubliez pas d'ouvrir le port 587 de votre pare-feu.

Activer le protocole SSMTP

Si vous ne souhaitez pas utiliser la mécanique TLS, considérée comme préférable au protocole SSMTP, voici la marche à suivre. Ce protocole, similaire dans son principe au HTTPS, utilise le port 465.

Pour implémenter cette fonctionnalité sur votre serveur SMTP, configurez Exim pour écouter sur le port 465 :

/bin/echo '
### main/00_exim4-local_settings
#################################

# ENABLING RFC 4409 and SSMTP
# see http://www.isi.edu/in-notes/rfc4409.txt
daemon_smtp_ports = smtp : submission : ssmtp

' | /usr/bin/tee /etc/exim4/conf.d/main/00_exim4-local_settings

Et forcez le SSL sur le port ssmtp :

/bin/echo '
### main/04_exim4-ssmtp
#################################

# ENABLING SSMTP
tls_on_connect_ports = 465

' | /usr/bin/tee /etc/exim4/conf.d/main/04_exim4-ssmtp

N'oubliez pas de rédémarrer le serveur SMTP :

/etc/init.d/exim4 restart

Remarque : n'oubliez pas d'ouvrir les porst 465 et 587 de votre pare-feu.

Sauvegardes

Pour sauvegarder vos comptes méls gérés par Cyrus, élément très important puisque les méls sont des données sensibles, je vous conseille d'utiliser Backup Manager. Pour l'installer, vous pouvez suivre mon guide:

Installer et configurer Backup Manager sur Debian 4.0 Etch et 5.0 Lenny

Une fois Backup Manager installé, vous pouvez configurer la sauvegarde des fichiers de Cyrus avec les commandes suivantes:

/usr/bin/update-bm-folders add /var/spool/cyrus
/usr/bin/update-bm-folders add /var/spool/sieve
/usr/bin/update-bm-folders add /var/lib/cyrus

Important: Sauvegarder les fichiers ne suffit pas ! Il faut aussi sauvegarder la base de données. La procédure pour ce faire est disponible dans mon article Installer et configurer MySQL sur Debian 4.0 Etch et 5.0 Lenny.

Pour aller plus loin

Diagnostiquer les problèmes du serveur Cyrus IMAP

Si vous rencontrez des problèmes pour vous connecter à votre serveur IMAP, vous pouvez obtenir des détails supplémentaires sur la source du problème en augmentant le niveau de verbosité des fichiers journaux. Cela peut être fait via l'exécution de ces lignes de commande :

/bin/sed -i -e 's/^.*\(CYRUS_VERBOSE.*\)$/\1/g' /etc/default/cyrus2.2
/etc/init.d/cyrus2.2 restart

Vous pouvez maintenant observer les messages de debug de Cyrus a l'aide de la commande :

/usr/bin/tail -f /var/log/mail.log

Une fois le problème de votre serveur IMAP diagnostiqué, vous pouvez revenir à la configuration par défaut à l'aide de la commande :

/bin/sed -i -e 's/^\(CYRUS_VERBOSE.*\)$/#\1/g' /etc/default/cyrus2.2
/etc/init.d/cyrus2.2 restart

Réparer une boite mail

Si vous vous retrouvez dans une situation ou une boite mail est corrompue, il est possible de réparer cette boite à l'aide de la commande suivante :

/bin/su cyrus -c "/usr/lib/cyrus/bin/reconstruct -r 'user/mon.email@domaine.fr'"

Il suffit ensuite de relancer le client Mail pour retrouver le bon fonctionnement de ses emails.

Les messages lus redeviennent non lus

Dans certains cas, il arrive que le fichier .seen contenant les informations de lecture des emails d'un compte soit corrompu. Le moyen le plus simple pour réparer ce problème est de supprimer ce fichier et de redémarrer le serveur Cyrus. Par exemple pour un utilisateur john.doe@mon-domaine.fr :

/bin/rm /var/lib/cyrus/domain/m/mon-domaine.fr/john^doe.seen
/etc/ini.d/cyrus2.2 restart

Source : Merci à Nothinman pour sa réponse à Cyrus .seen file is corrupt - How do i repair it ?.

Restaurer des emails supprimés.

Si l'un de vos utilisateur a supprimé des emails par mégarde, il est possible de les restaurer à partir de la sauvegarde créée par Backup Manager. Les emails sont sauvegarder dans l'arborescence /var/spool/cyrus. Voici les étapes à suivre :

  1. Décompresser tout ou partie de la dernière sauvegarde /var/archives/cyrus-var-spool-cyrus.date.master.tar.bz2.
  2. Créez à nouveau les dossiers supprimés dans votre client mail habituel.
  3. Copiez le contenu des dossiers à restaurer vers le dossier adéquat de l'arborescence /var/spool/cyrus.
  4. Changez le propriétaire des fichiers copiés :
    chown -R cyrus:mail /var/spool/cyrus/mail/
  5. Vos emails devrait être restaurés.

Remarque : Une autre possiblité est l'usage de la commande cyrreconstruct, mais je n'ai pas réussi à la faire fonctionner.

Synchronisation de 2 comptes Imap

Si vous disposiez déjà d'un serveur IMAP et que votre nouveau serveur est destiné à le remplacer, il est nécessaire de récupérer les anciens e-mails. ImapSync est un outil facilitant ce travail. En premier lieu, installez ce logiciel :

/usr/bin/apt-get install imapsync

Une fois ceci fait, vous pouvez utiliser une ligne de commande comme celle qui suit pour syncronyser deux comptes mél. Par exemple :

/usr/bin/imapsync --syncinternaldates --subscribe \
--host1 "imap.domain.com" --port1 993 --ssl1 --authmech1 PLAIN \
--user1 "some-user" --password1 "some-password" \
--host2 "localhost" --port2 143 --authmech2 CRAM-MD5 \
--user2 "local-user" --password2 "local-password"

Récupération de méls depuis un compte tiers

Si vous disposez de plusieurs comptes méls, chez différents fournisseurs, il est intéressant de les regrouper sur votre serveur IMAP, ne serait-ce que pour garder le contrôle de vos données. L'outil fetchmail a été conçu dans ce but. Installez fetchmail :

/usr/bin/apt-get install fetchmail

Créez ensuite le fichier /etc/fetchmailrc destiné à contenir les configurations des comptes à rappatrier. Voici un exemple de contenu pour ce fichier :

set daemon 300
set no bouncemail

poll pop.mail.yahoo.fr with protocol POP3
user "my-user" there with password "my-password" is "my-imap-account@my-email-domain.com" fetchall

poll pop.free.fr with protocol POP3
user "my-user" there with password "my-password" is "my-imap-account@my-email-domain.com" fetchall
user "my-other-user" there with password "my-other-password" is "my-imap-account@my-email-domain.com" fetchall

Activez le démon de récupération du courrier "fetchmail" :

/bin/sed -i -e 's/START_DAEMON=.*/START_DAEMON=yes/' /etc/default/fetchmail

Il ne vous reste plus qu'a redémarrer fetchmail pour prendre en compte les modifications :

/etc/init.d/fetchmail restart

Supprimer une boite mél

Pour supprimer une boite mél de votre serveur, il ne suffit pas de supprimer la ligne de l'utilisateur dans la base de données MySQL, il faut explicitement supprimer les fichiers de la boite mél sur le serveur Cyrus. Pour ce faire, récuperez les paramètres de connexion à l'outil d'administration de Cyrus :

CYRUS_ADMIN_USERNAME=$(/bin/grep "^CYRUS_ADMIN_USERNAME" /etc/cron.hourly/cyrus_create_mailboxes \
  | /usr/bin/cut --characters=22-)
CYRUS_ADMIN_PASSWORD=$(/bin/grep "^CYRUS_ADMIN_PASSWORD" /etc/cron.hourly/cyrus_create_mailboxes \
  | /usr/bin/cut --characters=22-)

Lancez l'outil d'administration de Cyrus en utilisant ces paramètres :

/usr/bin/cyradm --server localhost \
--user $CYRUS_ADMIN_USERNAME \
--password $CYRUS_ADMIN_PASSWORD \
--auth DIGEST-MD5

Vous pouvez a présent gérer les boites méls de vos utilisateurs. Vous pouvez obtenir la liste des commandes en tappant :

help

Pour lister les boites méls présentes sur le serveur, utilisez :

listmailbox

Pour supprimer une boite mél :

deletemailbox user/adresse.email@mon-domaine.com

Remarque : Si cette commande vous affiche l'erreur "permission denied", il est nécessaire de modifier les droits d'accés (acl) pour donner à l'utilisateur cyrus la permission de supprimer cette boite mail. Cela peut être réalisé à l'aide des commandes suivantes :

setaclmailbox user/adresse.email@mon-domaine.com cyrus c
deletemailbox user/adresse.email@mon-domaine.com

Vous pouvez maintenant quitter l'outil d'administration de Cyrus :

exit

Source : Vous trouverez plus d'information sur les opérations de maintenance d'un serveur de courrier Cyrus en lisant la page Maintenance du howto Cyrus IMAP.

Thunderbird en IMAP avec TLS et Kaspersky Antivirus est installée.

Si vous utilisez la suite Kaspersky Anti-virus, et que le certificat SSL de votre serveur IMAP n'est pas signé par une autorité de certification reconnue, vous ne pourrez pas vous connecter à moins de désactiver le filtrage du protocole IMAP dans les paramètres réseaux avancés de Kaspersky. Une photo d'écran de l'endroit ou il faut faire cela est disponible à cette adresse (en allemand) :

KIS 2009 und IMAP m. Thunderbird

Remerciements

Attachements

variable "%r"

Posté par djiff le 02/08/2009 06:06
bonjour,

Tout d'abord merci pour ce how-to clair. il m'a beaucoup servi. :)
Par contre, j'aurais une question concernant la variable "%r", que l'on trouve dans la configuration sasl_sql_select et sasl_sql_update.
En fait, sur mon serveur, cette variable renvoi le hostname de ce dernier et non le domain name, j'ai verfié dans les log de mysql. Du coup, l'authentification ne fonctionne pas. lorsque que je remplace dans le fichier de conf "%r" par mon nom de domaine, tout fonctionne bien.
Peux tu me dire où est renseigné cette variable stp?
Merci d'avance

authentification

Posté par Lone Wolf le 02/08/2009 10:09
Ma configuration pouvant supporter de multiple domaine, l'authentification nécessite un email complet : utilisateur@domaine.com et non simplement utilisateur.

Je pense que ton problème vient de la. Comme tu ne donne pas la partie après l'@ dans l'identifiant, le système retombe sur le nom de domaine par défaut du système.

Merci pour ton retour, je suis heureux que mon guide t'ai servi :)

re: authentification

Posté par djiff le 03/08/2009 02:28
Merci pour cette reponse rapide.
J'avais pensé que c'était ca mais meme en rajoutant le domaine apres le @, cela ne fonctionne pas. cela renvoi toujours le hostname de la machine.
Pourtant, je pense que mes fichiers hosts et resolv.conf sont bien renseignés. La commande dnsdomainname me renvoi bien mon domaine.
J'ai dû faire une erreur quelque part, je vais continuer à chercher. :)

Default domain

Posté par Lone Wolf le 03/08/2009 10:19
Dans /etc/imapd.conf vérifie la valeur des paramètres virtdomains et defaultdomain :

virtdomains: userid
defaultdomain: mon-domaine.com

A part ca, je ne voit pas d'ou pourrait venir le soucis.

Pas pour les debutants

Posté par Opalinux le 05/08/2010 18:54
Bonjour ! et merci encore pour ce tuto qui est tres pratique etbcp complets ..

Cependant ... il y a bcp de sous-entendu d'expert ...
vous n'indiquez pas les fichier a modifier ...cela peut etre un peu deroutant pour un debutant presser de mettre en oeuvre et avide de comprehension.

Quand meme je tiens a vous dire merci pour tout votre effort de partage. Merci bcp.

Connexion au shell Cyrus

Posté par Arrobe le 17/10/2011 17:25
Merci pour ce superbe tuto !

Je suis sur une Debian 6 (Squeeze) et je rencontre un problème bloquant :
Impossible de me connecter au shell Cyrus !

Quand je fais :
cyradm --user cyrus --server localhost --password *******
Login failed: generic failure at /usr/lib/perl5/Cyrus/IMAP/Admin.pm line 119
cyradm: cannot authenticate to server with plain as cyrus

Hors, quand je vérifie dans la base de donnée MySQL de Cyrus je vois bien mon user (cyrus) et mon mot de passe ... en clair (curieux !)

Une idée ?

Mot de passe

Posté par Lone Wolf le 17/10/2011 18:23
Essayez l'auth DIGEST-MD5 pour la ligne de commande.

Concernant le stockage en clair des mots de passes, je suis conscient du problème, mais à l'époque de la rédaction de ce guide, je ne connaissais pas suffisament Exim et SASL pour mettre en place un stockage chiffré. Si vous trouvez une solution à ce problème, je vous serais grès de m'en faire par.

Bonne continuation.
Lone Wolf


BlogBang
Navigation
 

Réalisé avec Plone

Ce site respecte les normes suivantes :

Wikio