Dovecot 2

Installer Dovecot 2

# cd /usr/ports/mail/dovecot2
# make config
dovecot2
Verifier que les options suivantes soient sélectionnées : MYSQL, SSL
# make install clean && rehash
# echo 'dovecot_enable="YES"' >> /etc/rc.conf

Créer un utilisateur virtuel pour la gestion des boites aux lettres

# pw groupadd vmail -g 5000
# pw useradd vmail -u 5000 -g vmail -s /usr/sbin/nologin -d /nonexistent -c "Virtual Mail Owner"
# mkdir /mail
# chown vmail:vmail /mail

Ajouter un champ à la table mailbox de la base de donnée de postfix.

# mysql -u root -p'motdepasse'
mysql> use postfix;
mysql> ALTER TABLE mailbox ADD allow_nets VARCHAR(150);
mysql> exit;

Configuration

La configuration de Dovecot est scindée à travers plusieurs fichiers.
Copier les modèles d'exemples de configuration du système vers le répertoire hadoc. Editer les fichiers suivants :
Les lignes illustrées ci-dessous representent les modifications à effectuer.

# cp -RL /usr/local/share/doc/dovecot/example-config/ /usr/local/etc/dovecot

/usr/local/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no auth_realms = example1.com example2.fr auth_default_realm = example1.com auth_mechanisms = plain login # !include auth-system.conf.ext !include auth-sql.conf.ext

/usr/local/etc/dovecot/conf.d/auth-sql.conf.ext
passdb { driver = sql } #userdb { # driver = prefetch #} userdb { driver = sql args = /usr/local/etc/dovecot/dovecot-sql.conf.ext }

/usr/local/etc/dovecot/conf.d/10-mail.conf
mail_location =maildir:~/ mail_uid = 5000 mail_gid = 5000 mail_temp_dir = /var/tmp first_valid_uid = 5000 first_valid_gid = 5000 mail_plugins = quota expire mail_log notify

/usr/local/etc/dovecot/conf.d/10-master.conf
unix_listener auth-userdb { mode = 0600 user = vmail group = vmail } # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix }

/usr/local/etc/dovecot/conf.d/15-lda.conf
postmaster_address = Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. hostname = mx.example.com quota_full_tempfail = no sendmail_path = /usr/local/sbin/sendmail lda_mailbox_autocreate = yes

/usr/local/etc/dovecot/conf.d/10-ssl.conf
# ssl_cert= # ssl_key= ssl = no

/usr/local/etc/dovecot/conf.d/20-imap.conf
mail_max_userip_connections = 5 mail_plugins = $mail_plugins imap_quota imap_zlib

/usr/local/etc/dovecot/conf.d/20-pop3.conf
mail_max_userip_connections = 5 pop3_client_workarounds = outlook-no-nuls oe-ns-eoh

Supprimer tout le contenu du fichier 90-quota.conf et le remplacer avec ceci.

/usr/local/etc/dovecot/conf.d/90-quota.conf
plugin { quota = maildir:User quota quota_rule = *:storage=1G quota_rule2 = Trash:storage=+30% quota_rule3 = Sent:storage=+30% quota_warning = storage=90%% quota-warning 90 %u quota_warning2 = storage=75%% quota-warning 75 %u # What message to send to IMAP clients (and SMTP senders) when quota is exceeded? quota_exceeded_message = Votre boite aux lettres est pleine, Veuillez reessayer ulterieurement. } service quota-warning { executable = script /usr/local/bin/quota-warning.sh user = vmail unix_listener quota-warning { user = vmail } }

/usr/local/etc/dovecot/conf.d/90-plugin.conf
plugin { expire = Trash expire2 = Trash/* expire3 = Spam mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename mail_log_fields = uid box msgid size #zlib_save_level = 6 # 1..9 #zlib_save = gz # or bz2 }

/usr/local/etc/dovecot/conf.d/auth-system.conf.ext
#passdb { # driver = pam # [session=yes] [setcred=yes] [failure_show_msg=yes] [max_requests=] # [cache_key=] [] #args = dovecot #}

/usr/local/etc/dovecot/dovecot-dict-expire.conf.ext
connect = host=127.0.0.1 dbname=postfix user=utilisateur_postfix password=mot_de_passe_postfix map { pattern = shared/expire/$user/$mailbox table = expires value_field = expire_stamp fields { username = $user mailbox = $mailbox } }

Création du fichier quota-warnig.sh

/usr/local/bin/quota-warning.sh
#!/bin/sh PERCENT=$1 USER=$2 cat << EOF | /usr/local/libexec/dovecot/dovecot-lda -d $USER -o "plugin/quota=maildir:User quota:noenforcing" From: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. Subject: Avertissement de limtite de quota Votre boite aux lettres a atteind $PERCENT% de sa taille. Vous devriez supprimer quelques messages du serveur. EOF

Rendre le script executable

# chmod +x /usr/local/bin/quota-warning.sh

Creer le fichier de configuration dovecot-sql.conf.ext

/usr/local/etc/dovecot/dovecot-sql.conf.ext
driver = mysql connect = host=127.0.0.1 dbname=postfix user=utilisateur_postfix password=mot_de_passe_postfix default_pass_scheme = MD5-CRYPT user_query = SELECT CONCAT('/mail/', maildir) AS home, 'maildir:~/' as mail, '5000' AS uid, '5000' AS gid,\ concat('*:bytes=', quota) AS quota_rule\ FROM mailbox WHERE username='%u' AND domain='%d' AND active=1 password_query = SELECT password,CONCAT('/mail/', maildir) AS userdb_home,\ '5000' AS userdb_uid, '5000' AS userdb_gid, allow_nets,\ concat('*:bytes=', quota) AS userdb_quota_rule\ FROM mailbox WHERE username='%u' AND domain='%d' AND active=1