Outils pour utilisateurs

Outils du site


cyrus

Cyrus

Introduction

Installation d'un simple serveur imap, avec gestion des comptes utilisateurs virtuel via ldap

postfix + cyrus + ldap

ref: http://www.jopa.fr/index.php/2009/07/28/index.php/2009/02/03/installation-dun-serveur-mail-brique-par-brique-openldap-postfix-cyrus-imap-tls-sasl-spamassassin-amavis-etc/

1. installation slapd et ldap-utils

création d'un domaine simple - voir le fichier ldif ci-joint.

Ne pas oublier /etc/ldap/ldap.conf

2. sasl

installer sasl2-bin

Il faut installer et lire la doc (cyrus-sasl2-doc) et le fichier /usr/share/doc/cyrus-sasl2-doc/LDAP_SASLAUTHD.gz

Et ça va beaucoup mieux.

Le fichier /etc/saslauthd.conf ressemble à ceci;

   ldap_servers: ldap://localhost/
   ldap_search_base: ou=comptes,dc=nodomain

Ne pas oublier de tester l'authentification:

testsaslauthd -u sophie -p s1234

au besoin, stracer cette commande et garder un œil sur les logs ldap.

3. cyrus

installercyrus

modifier le fichier /etc/imapd.conf:

   sasl_mech_list: PLAIN
   sasl_pwcheck_method: saslauthd
   admins: tom

Rajouter la ligne suivante dans le fichier /etc/postfix/master.cf:

cyrus unix    -       n       n       -       -       pipe    flags=R user=cyrus argv=/usr/sbin/cyrdeliver -e -m ${extension} ${user} 

Avec cyradm et le compte admin défini ci-dessus, créer les boites mails des utilisateurs. Elles doivent correspondre à'luid ldap de l'utilisateur.

La principale limitation de cet exemple réside dans l'obligation d'avoir une correspondance stricte entre uid utilisateur, nom de bal et adresse de l'utilisateur.

En allant un peu plus loin, on peut imaginer :

  • L'ajout d'un ou de plusieurs attributs “mail” correspondant aux différentes adresses de l'utilisateur.
  • l'ajout d'un attribut “maildrop” correspondant à la boite mail existante.
  • éventuellement plusieurs “maildrop” permettant de forwarder des adresses vers l'exterieur.

Il faut inclure le schema authldap, fournissant l'attribut maildrop et mail

Un utilisateur ressemblera à ça:

   dn: uid=tom,ou=comptes,dc=boulot,dc=fr
   objectClass: top
   objectClass: inetOrgPerson
   objectclass: courierMailAlias
   uid: tom
   sn: constans
   cn: Thomas Constans
   mail: toto@opendoor.fr
   mail: thomas.constans@opendoor.fr
   maildrop: tom@opendoor.fr
   userPassword:: e1NTSF9Trt21K1trtdIVZK0loJbFytjlQDcMyrWlgdazamkdpxQMng=

dans main.cf on rajout les infos suivantes:

# verification des destinataires - recherche sur le mail, renvoie l'uid
virtual_mailbox_maps = ldap:/etc/postfix/ldap-accounts.cf

# alias - recherche sur le mail, renvoie maildrop
virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf

# Agent de transport local :[[:cyrus| ]]
local_transport =[[:cyrus| ]]
virtual_transport =[[:cyrus| ]]
mailbox_transport =[[:cyrus| ]]

SSL/TLS

  • Créer les certificats
  • Les rendre accessibles dans une répertoire (par exemple [browser:/config/adrenaline/certs /etc/certs])
  • Activer le service (décommenter la ligne correspondante) dans [browser:/config/adrenaline/cyrus.conf /etc/cyrus.conf].
  • Rajouter les directives suivantes dans [browser:/config/adrenaline/imapd.conf /etc/imapd.conf]:
tls_ca_file
tls_cert_file
tls_key_file
  • Ouvrez le parefeu (port TCP993)
  • relancez le parefeu et cyrus.

Administration

Sauvegarde

Il suffit de copier la partition

restauration / renommage

  1. s'assurer d'avoir une sauvegarde.
  2. s'assurer qu'aucun mail ne sera reçu pendant l'opération
  3. supprimer la boîte via cyradm
  4. recréer la boîte via cyradm
  5. reconstruire l'index:
/usr/lib/cyrus-imapd/reconstruct -f  user.MAILBOX

Vieille page main.cyrus:

2010.07.16: quelques info ok, mais la page la plus à jour est wiki:Cyrus .

Cyrus Imap:

description:

Installation du serveur imap “cyrus” authentifiant les utilisateurs via ldap.

plateforme:

Debian

Prérequis:

Une authentification des utilisateurs via ldap fonctionnelle ( cf [pam-ldap] ).

Bibliographie principale:

Installation:

apt-get install [[:cyrus|cyrus]]21-admin [[:cyrus|cyrus]]21-common [[:cyrus|cyrus]]21-imapd libsasl2-modules libsasl2 sasl2-bin
  • éditer /etc/cyrus.conf et vérifier les services à lancer.
  • éditer /etc/imapd.conf les lignes suivantes ou récupérer le fichier adhoc dans le repertoire « conf »:
loginrealms: DOMAIN
configdirectory: /var/lib/cyrus
defaultpartition: default
partition-default: /var/spool/cyrus/mail
partition-news: /var/spool/cyrus/news
newsspool: /var/spool/news
altnamespace: no
unixhierarchysep: no
admins: root[[:cyrus| ]]
sieve_admins:[[:cyrus| ]]
allowanonymouslogin: no
popminpoll: 1
autocreatequota: 0
umask: 077
sieveusehomedir: false
sievedir: /var/spool/sieve
hashimapspool: true
allowplaintext: yes
sasl_mech_list: PLAIN
sasl_minimum_layer: 0
sasl_pwcheck_method: saslauthd pwcheck
sasl_auto_transition: no
tls_ca_path: /etc/ssl/certs
tls_session_timeout: 1440
tls_cipher_list: TLSv1:SSLv3:SSLv2: = NULL:!EXPORT:!DES:!LOW:@STRENGTH =
lmtpsocket: /var/run/cyrus/socket/lmtp
idlesocket: /var/run/cyrus/socket/idle
notifysocket: /var/run/cyrus/socket/notify
  • vérifier /etc/pam.d/imap:
@include common-auth
@include common-account
  • mettre STARTUP à yes dans /etc/default/saslauthd
  • Lancer les services:
/etc/init.d/saslauthd start && /etc/init.d/cyrus21 start
  • vérifier que l'authentification fonctionne:
   # testsaslauthd -u cyrus -p tu
0: OK "Success."

Administration

la configuration de base de cyrus se fait via une interface shell:

# cyradm -u //user// localhost

création d'une mailbox:

# cm user.nom_d'utilisateur

nom_d'utilisateur doit “exister” sur le serveur, en local ou via ldap. NE PAS OUBLIER LE PREFIX « user. »

Déplacer / renommer une mailbox

  1. à l'aide de cyradm, créer la boîte et positionner les acl
  2. dans /var/spool/imap, déplacer le répertoire correspondant (cd /var/spool/imap/m/user ; mv mathieu mathieu_chevalier)
  3. reconstruire la boîte: /usr/lib/cyrus-imapd/reconstruct -fr user.mathieu_chevalier

mise en place des acl:

les acl par défaut sont lrs ( read ) pour tout le monde

acl de base:
none
read		lrs
post 		lrsp
append		lrsip
write		lrswipcd
all		lrswipcda

mise en place des acl sur une mailbox:

# sam tconstans toto read tconstans all anyone none

lister les acl sur une mailbox donnée:

# lam tconstans
 toto lrs
 tconstans lrswipcda

suppresion des acl sur une mail box donnée:

#dam tconstans tconstans toto
#lam tconstans
 anyone lrs

créer un **dossier partager:**

# cm nom_du_dossier_partagé
# sam nom_du_dossier_partagé anyone lrs	pour lecture-seule
					 lrsw 	pour lecture-écriture

il est souhaitable d'attribuer tous les droits à au moins un utilisateur pour faciliter le nettoyage de ce dossier.

mettre en place des quotas

unité: ko

# sq [[:clients:sgmo:partage|partage]] 500 (ko)

vérification des quotas:

# lq[[:clients:sgmo:partage| ]]
 STORAGE 88/500 (17.6%)

suppresion d'une boite aux lettre:

le truc c'est que par défaut seul le proprio de la boite dispose des droits adéquats donc:

# sam mailbox_id cyrus all	// on attribue tous les droits à  l'utilisateur cyrus
# dm mailbox_id

Conclusion:

Et voila un magnifique serveur imap | pop qu'il ne vous reste plus qu'à intégrer avec [postfix]

Annexes:

script de création de boites au lettre:

# = /usr/bin/perl -w =

use [[:cyrus|Cyrus]]::IMAP::Admin ;
use strict ;

#
# CONFIGURATION PARAMS
#
my $cyrus_server = "localhost" ;
my $cyrus_user = "root" ;
my $cyrus_pass = undef ;
my $newuser ;
my $mailbox ;


my $SEP = '.' ; # separateur -  peut etre / ou .
my $mechanism = "login" ;

#
# EOC
#

if (  = $ARGV[0] ) =
{
  die "Usage: $0 nom d'utilisateur\n" ;
}
else
{
  $newuser = "$ARGV[0]" ;
}
sub askPass {
   print "Please enter $cyrus_user\'s password:" ;
   system "/bin/stty -echo" if (-t STDIN);
   chomp( $cyrus_pass=<STDIN>);
   system "/bin/stty echo" if (-t STDIN);
   print "\n";
}

sub createMailbox
{
  my ( $user, $subfolder ) = @_ ;

  my $cyrus = Cyrus::IMAP::Admin->new( $cyrus_server ) ;
  $cyrus->authenticate( $mechanism,'imap','',$cyrus_user,'0','10000',$cyrus_pass ) ;

  if ( $subfolder eq "INBOX" )
  {
    $mailbox = "user" . "$SEP" . $user ;
  }
  else
  {
    $mailbox = "user" . "$SEP" . $user . "$SEP". $subfolder ;
  }

  $cyrus->create( $mailbox ) ;
  if ( $cyrus->error )
  {
    print STDERR "Error: ", $mailbox," ", $cyrus->error, "\n" ;
  }
  else
  {
    print "Created Mailbox: $mailbox \n" ;
  }

}

sub setQuota
{
  my ( $user, $quota_size ) = @_ ;

  my $cyrus = Cyrus::IMAP::Admin->new( $cyrus_server ) ;
  $cyrus->authenticate( $mechanism,'imap','',$cyrus_user,'0','10000',$cyrus_pass ) ;

  $mailbox = "user" . "$SEP" . $user ;
  $cyrus->setquota( $mailbox,"STORAGE",$quota_size ) ;
  if ( $cyrus->error )
  {
    print STDERR "Error: ", $mailbox," ", $cyrus->error, "\n" ;
  }
  else
  {
    print "Setting Quota: $mailbox at $quota_size \n" ;
  }
  $cyrus->setacl( $mailbox, $cyrus_user, "all" ) ;

}

print "Adding User: ", $newuser, "\n" ;
askPass() ;
createMailbox( $newuser,'INBOX' ) ;
createMailbox( $newuser,'Sent' ) ;
createMailbox( $newuser,'Trash' ) ;
createMailbox( $newuser,'Drafts' ) ;
createMailbox( $newuser,'Spams' ) ;

if ( $ARGV[1] ) { setQuota( $newuser, $ARGV[1] ) ;}

Sieve

Résultat des expérimentations (rapides) de 2018-02:

Installation de l'extension thunderbird, l'accès au serveur sieve se fait sans soucis? La mise au point d'un script se fait bien, il apparaît bien coté serveur, mais il semble ignoré (peut-être parce que l'on utilise procmail ?)

On n'est pas allé plus loin

Troubleshooting:

SQUAT Failed

le message “SQUAT failed to open index file” dans /var/log/mail.log vous enerve ? BR Essayer la commande suivante:

# for user in user1 user2 ... ; do squatter -r user.${user} ; done

createmailbox: permission denied" ou "perl: No worthy mechs found"

vérifier la ligne “admins” dans /etc/imapd.conf“. BR séparer les différentes valeurs par des espaces. Pas de virgule, deux-points, etc

# vim: set filetype=dokuwiki:

cyrus.txt · Dernière modification: 2018/07/03 16:22 (modification externe)