Le but est d'installer sur une machine sous Etch le serveur IMAP Cyrus-imapd (version courante: 2.3.16), avec livraison via postfix et vérification antispam par Spamassassin (configurable par l'utilisateur), le tout pour des utilisateurs locaux (pas des utilisateurs virtuels).
Cette documentation est également valide pour la distribution Lenny, sans aucune modification.
# adduser --system --gid <gid-of-mail-group=8> --home /home/cyrus cyrus
# apt-get install sasl2-bin libsasl2-modulesEditer le fichier /etc/default/saslauthd, mettre la variable START à yes, puis lancer le démon:
# /etc/init.d/saslauthd start
# adduser cyrus sasl
# apt-get install libsasl2-dev libssl-dev
# cd /usr/local/src # wget http://asg3.andrew.cmu.edu/pub/cyrus/cyrus-imapd-2.3.16.tar.gz # tar zxf cyrus-imapd-2.3.16.tar.gz
# cd cyrus-imapd-2.3.13 # patch -p1 < ../0015-Accept-From-header-from-IMAP-clients.patch # patch -p1 < ../0017-Parse-Received-headers-for-internaldate.patch
# ./configure \ --with-cyrus-user=cyrus \ --with-cyrus-group=mail \ --without-afs \ --without-ldap \ --without-krb \ --without-bdb \ --with-syslogfacility=MAIL \ --with-service-path=/usr/local/libexec/cyrus # make # make install
START {
recover cmd="ctl_cyrusdb -r"
}
SERVICES {
imap cmd="imapd" listen="imap" prefork=0
sieve cmd="timsieved" listen="sieve" prefork=0
lmtpunix cmd="lmtpd" listen="/home/cyrus/socket/lmtp" prefork=0
}
EVENTS {
checkpoint cmd="ctl_cyrusdb -c" period=30
delprune cmd="cyr_expire -E 3" at=0400
}
configdirectory: /home/cyrus partition-default: /home/cyrus/spool altnamespace: yes unixhierarchysep: yes lmtp_downcase_rcpt: yes admins: cyrus sievedir: /home/cyrus/sieve hashimapspool: false allowplaintext: yes sasl_mech_list: plain sasl_pwcheck_method: saslauthd duplicatesuppression: yes singleinstancestore: yes reject8bit: no munge8bit: no mboxlist_db: skiplist duplicate_db: skiplist ptscache_db: skiplist tlscache_db: skiplist statuscache_db: skiplist
Dans notre cas, nous utilisons le séparateur de hiérarchie unix (/), avec l'espace de nommage alternatif (les boites au même niveau que INBOX). Le spool se trouvera dans /home/cyrus/spool, la socket de livraison par LMTP dans /home/cyrus/socket (comme indiqué également dans /etc/cyrus.conf), et les scripts sieve dans /home/cyrus/sieve. Nous utilisons aussi exclusivement le format de base skiplist, généralement plus stable que berkeley. Comme vous pouvez le constater, le compte Cyrus va contenir presque (pas la configuration) tout le nécessaire.
# su - cyrus $ /usr/local/src/cyrus-2.3.13/tools/mkimap
Cette commande analyse les fichiers de configuration, et crée les répertoires associés. C'est pourquoi il est important de l'éxecuter après les avoir mis en place.
#!/bin/sh pidfile=/var/run/cyrus-master.pid daemon=/usr/local/libexec/cyrus/master case $1 in start) printf "Starting Cyrus mail system..." if [ ! -f $pidfile ] ; then $daemon -d printf "done\n" else printf "already running (pid=`cat $pidfile`)\n" fi ;; stop) printf "Stopping Cyrus mail system..." if [ -f $pidfile ] ; then kill `cat $pidfile` rm -f $pidfile printf "done\n" else printf "not running\n" fi ;; reload) printf "Reloading Cyrus mail system..." if [ -f $pidfile ] ; then kill -HUP `cat $pidfile` printf "done\n" else printf "not running\n" fi ;; esac
# update-rc.d cyrus defaults 19
# /etc/init.d/cyrus start
# cyradm --user cyrus localhost Password: localhost> cm user/niko localhost> sam user/niko cyrus all localhost> cm user/solene localhost> sam user/solene cyrus all localhost> quit
deb http://volatile.debian.org/debian-volatile etch/volatile main
# apt-get update # apt-get install spamassassin spamc re2c
loadplugin Mail::SpamAssassin::Plugin::Rule2XSBody
# sa-update # sa-compile
ENABLED=1 CRON=1
# /etc/init.d/spamassassin start
La configuration de postfix s'effectue simplement via les fichiers /etc/postfix/main.cf et /etc/postfix/master.cf.
Dans /etc/postfix/main.cf, voici l'extrait correspondant à la livraison locale:
# # delivery # alias_maps = hash:/etc/aliases local_recipient_maps = hash:/etc/postfix/local_recipients, $alias_maps mailbox_transport = cyrus cyrus_destination_recipient_limit = 1 mailbox_size_limit = 0 header_checks = regexp:/etc/postfix/header_checks
Quelques indications:
niko OK unautre OK encoreunautre OKCeci évite le problème du backscatter, car Postfix refusera directement lors du dialogue SMTP la livraison à des utilisateurs inconnus.
/^Message-ID:[[:space:]]*$/ IGNORE
Dans /etc/postfix/master.cf, nous définissions le transport cyrus comme ceci:
#
# cyrus
#
cyrus unix - n n - 1 pipe
user=cyrus argv=/usr/bin/spamc -u ${user} -e /usr/local/libexec/cyrus/deliver -q -r ${sender} ${user}
Ce transport n'est pas chrooté, ne peut être éxecuté qu'un seul à la fois, en tant qu'utilisateur cyrus, et lance via pipe le client SpamAssassin /usr/bin/spamc pour l'utilisateur concerné, qui appelle l'outil Cyrus de livraison pour cet utilisateur, avec les options écrivant le Return-Path:, et le forçage des quotas.
Dernière modification : Sunday May 16, 2010, Nicolas KOWALSKI
|
|
|
|
|