Installation sur une Squeeze d'un serveur mail complet (Postfix Postfixadmin Dovecot Mysql Amavisd-new Spamassassin Clamav Postgrey Squirrelmail Roundcube) avec gestion des filtres Imap et des quotas
Cet article est une ébauche. N'hésitez pas à contribuer ou à en discuter.
Nous allons détailler l'installation sur une squeeze minimale d'un serveur de mail.
La base de notre serveur mail: Postfix avec gestion des domaines et utilisateurs dans une base Mysql. Pourquoi Postfix et non Exim4 (qui est le serveur de mail installé par défaut sur Debian) ? Tout simplement pour la simplicité de configuration et la robustesse de Postfix...
Les programmes :
- Postfix comme serveur de messagerie;
- Dovecot comme interface Imap/Pop3;
- Mysql comme base de donnée;
- Amavisd new comme interface entre le serveur de messagerie et les filtres pourriels et anti-virus;
- Clamav comme anti-virus;
- Spamassassin et Postgrey comme moyens de lutte contre les pourriels;
- Apache2 comme serveur Web (qui nous permettra de supporter Postfixadmin, et notre (nos...) Webmails;
- Postfixadmin comme interface Web pour la gestion des domaines virtuels et des utilisateurs;
- Squirrelmail et Roundcube comme Webmail;
- Vacation - Notification d'absence
Prérequis
Je vous recommande la lecture de ceci avant de vous lancer : Configuration d'un serveur mail avec Postfix - Prérequis
En effet, inutile d'installer un serveur de mails si vous n'avez pas la possibilité de le faire fonctionner.
Il vous faut :
- un nom de domaine
- une IP fixe
- un PC allumé si possible 24h/24
- Accessoirement un DNS local fonctionnel
Installation d'une squeeze minimale
Installez une Debian minimale. A partir d'une ISO au format "carte de visite" (Businesscard) par exemple, installez seulement les utilitaires standard:
Préparation du système
Installation de Rkhunter
Modification du sources.list
# nano /etc/apt/sources.list
deb http://ftp.fr.debian.org/debian/ squeeze main non-free contrib #deb-src http://ftp.fr.debian.org/debian/ squeeze main non-free contrib deb http://security.debian.org/ squeeze/updates main contrib non-free #deb-src http://security.debian.org/ squeeze/updates main contrib non-free deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free #deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
root@facteur:~# apt-get update root@facteur:~# apt-get dist-upgrade
ou: Attention l'option -y lance le dist-upgrade sans vous demander de confirmation!
root@facteur:~# apt-get update && apt-get dist-upgrade -y
Install-Recommends et diminution des priorités debconf
L'installation des paquets "recommandés" et "suggérés" n'est pas nécessaire, nous désactivons donc cette fonctionnalité:
root@facteur:~# nano /etc/apt/apt.conf.d/20norecommends
APT { Install-Recommends "false"; Install-Suggests "false"; };
Les priorités de debconf sont élevées par défaut. Choisir "dialogue", puis "intermédiaire". De cette façon, vous ne manquez aucune question primordiale lors de la configuration des paquets, et le nombre de questions sera "raisonnable".
root@facteur:~# dpkg-reconfigure debconf
Définition du "hostname"
Cette étape est nécessaire, votre machine doit disposer d'un nom de machine et de domaine complet. Editez le fichier hosts pour ajouter votre nom complet de machine :
root@facteur:~# nano /etc/hosts
127.0.0.1 localhost 127.0.1.1 facteur.zehome.org facteur # <= Ligne suivante à ajouter => # 192.168.3.114 facteur.zehome.org facteur # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
root@facteur:~# cat /etc/hostname facteur
root@facteur:~# nano /etc/hostname facteur.zehome.org
root@facteur:~# service hostname.sh start
Testez vos noms de machine et de domaine:
root@facteur:~# hostname -s facteur root@facteur:~# hostname -d zehome.org root@facteur:~# hostname -f facteur.zehome.org
Modification de votre fichier interfaces
Il est préférable pour un serveur d'avoir une IP fixe. Si cela n'a pas été configuré au moment de l'installation, c'est le moment de la faire. Ajoutez aussi les DNS de votre FAI et le domaine de recherche.
root@facteur:~# nano /etc/network/interfaces
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address 192.168.3.114 netmask 255.255.252.0 network 192.168.0.0 broadcast 191.168.3.255 gateway 192.168.0.254 dns-nameservers 41.188.9.130 196.192.32.5 dns-search zehome.org
Installation et configuration des programmes
Le DNS
Un serveur Mail impose des requêtes DNS fréquentes, il est donc fortement conseillé d'en installer un localement.
L'objet ici n'est pas de vous expliquer en profondeur l'installation d'un DNS, nous nous contenterons donc du minimum. Pour de plus amples détails, voir ici: Bind
root@facteur:~# apt-get install bind9
Rien à voir, mais vous aurez à répondre à une question au sujet de man-db...
Modifiez votre fichier interfaces pour prendre en compte votre DNS local:
root@facteur:~# nano /etc/network/interfaces
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address 192.168.3.114 netmask 255.255.252.0 network 192.168.0.0 broadcast 191.168.3.255 gateway 192.168.0.254 dns-nameservers 127.0.0.1 41.188.9.130 196.192.32.5 dns-search zehome.org
Vérifiez votre resolv.conf, il doit contenir l'adresse locale de votre DNS (devant les autres). Si vous avez un dhcp sur votre réseau, pensez à y ajouter votre DNS.
root@facteur:~# cat /etc/resolv.conf
domain zehome.org search zehome.org nameserver 127.0.0.1 nameserver 192.168.0.3 nameserver 41.188.9.130
Un test rapide:
root@facteur:~# nslookup > server Default server: 127.0.0.1 Address: 127.0.0.1#53 Default server: 192.168.0.3 Address: 192.168.0.3#53 Default server: 41.188.9.130 Address: 41.188.9.130#53 > google.com Server: 127.0.0.1 Address: 127.0.0.1#53 Non-authoritative answer: Name: google.com Address: 209.85.143.99 Name: google.com Address: 209.85.143.104 > exit
Rappel: au minimum, votre DNS (et n'importe quel DNS sur le Net si vous voulez qu'on puisse vous envoyer des e-mails...) doit être configuré pour répondre convenablement à cette question:
root@facteur:~# host -t MX zehome.org zehome.org mail is handled by 10 smtp.zehome.org.
Mysql
MySQL est un système de gestion de base de données (SGBD). Sa licence est libre. Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public (applications web principalement) que par des professionnels.
root@facteur:~# apt-get install mysql-server
Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les paquets supplémentaires suivants seront installés : libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl libplrpc-perl mysql-client-5.1 mysql-common mysql-server-5.1 mysql-server-core-5.1 Paquets suggérés : libterm-readkey-perl tinyca Paquets recommandés : mailx libhtml-template-perl Les NOUVEAUX paquets suivants seront installés : libdbd-mysql-perl libdbi-perl libmysqlclient16 libnet-daemon-perl libplrpc-perl mysql-client-5.1 mysql-common mysql-server mysql-server-5.1 mysql-server-core-5.1 0 mis à jour, 10 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de prendre 24,0 Mo dans les archives. Après cette opération, 60,9 Mo d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer [O/n] ? o ...
N'oubliez pas de définir un mot de passe pour l'administrateur du serveur Mysql
Suppression des programmes inutiles et installation de Postfix
Exim4 et consort ne nous servant pas, et afin d'éviter des conflits et de conserver des paquets inutiles, nous enlevons complètement celui-ci:
Depuis quelques jours (entre fin mars et début avril 2011) la suppression des programmes ci-dessus entraîne l'installation de Postfix et ssl-cert:
Les paquets supplémentaires suivants seront installés : postfix ssl-cert
root@facteur:~# apt-get --purge remove exim4 exim4-base exim4-config exim4-daemon-light
Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les paquets suivants seront ENLEVÉS : bsd-mailx* exim4* exim4-base* exim4-config* exim4-daemon-light* 0 mis à jour, 0 nouvellement installés, 5 à enlever et 0 non mis à jour. Après cette opération, 4 391 ko d'espace disque seront libérés. Souhaitez-vous continuer [O/n] ? o (Lecture de la base de données... 36264 fichiers et répertoires déjà installés.) Suppression de bsd-mailx ... Purge des fichiers de configuration de bsd-mailx ... Suppression de exim4 ... Purge des fichiers de configuration de exim4 ... Suppression de exim4-daemon-light ... Stopping MTA: exim4_listener. Purge des fichiers de configuration de exim4-daemon-light ... Suppression de exim4-base ... Purge des fichiers de configuration de exim4-base ... Suppression de exim4-config ... Purge des fichiers de configuration de exim4-config ... dpkg-statoverride : avertissement : Pas de dérogation (« override ») présente. Traitement des actions différées (« triggers ») pour « man-db »...
Postfix/Dovecot/Apache2/sasl/php
Avec la commande ci-dessous, nous installons: apache2 dovecot php5 postfix et sasl2
root@facteur:~# apt-get install php5-mysql php5-imap postfix-mysql dovecot-imapd dovecot-pop3d libsasl2-modules sasl2-bin
Les paquets installés:
Les NOUVEAUX paquets suivants vont être installés : apache2-mpm-prefork{a} apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} db4.8-util{a} dovecot-common{a} dovecot-imapd dovecot-pop3d libapache2-mod-php5{a} libapr1{a} libaprutil1{a} libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a} libc-client2007e{a} libonig2{a} libpq5{a} libqdbm14{a} mlock{a} php5-common{a} php5-imap php5-mysql postfix-mysql sasl2-bin
Vous verrez passer ce message d'avertissement:
update-rc.d: warning: saslauthd stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (1) To enable saslauthd, edit /etc/default/saslauthd and set START=yes ... (warning).
Activons donc saslauthd au démarrage. Remplacez START=no par START=yes dans :
root@facteur:~# nano /etc/default/saslauthd
root@facteur:~# service saslauthd start Starting SASL Authentication Daemon: saslauthd.
Activation du mode SSL de Apache
Afin de sécuriser les échanges entre l'interface Web et le serveur, nous allons activer le mode SSL de Apache. C'est crucial en particulier pour les échanges de noms d'utilisateurs et mots de passe.
Créons un lien symbolique entre site-available et site enabled pour rendre disponible le SSL:
root@facteur:~# ln /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/001-ssl
Vous pouvez éditer et modifier ce fichier pour qu'il soit adapté à votre domaine (nom de domaine, adresse mail du "webmaster"...)
Activons le mode SSL de Apache:
root@facteur:~# a2enmod ssl Enabling module ssl. See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates. Run '/etc/init.d/apache2 restart' to activate new configuration!
Vérifiez que les lignes suivantes sont présentes et dé-commentées dans le fichier /etc/apache2/ports.conf
<IfModule mod_ssl.c> ... Listen 443 </IfModule>
Enfin, redémarrons Apache
root@facteur:~# service apache2 restart Restarting web server: apache2 ... waiting .
Vous aurez désormais accès à vos services (Webmails et Postfixadmin) au travers du https (ce qui est nettement plus sécurisant...).
Testez en vous rendant à cette adresse: https://votre_IP/ ou https://localhost/ si vous travaillez en local. Vous devriez avoir accès à la page d'accueil suivante:
It works! This is the default web page for this server. The web server software is running but no content has been added, yet.
Installation et configuration de Postfixadmin
Création de la base de donnée de Postfixadmin
Nous allons maintenant créer la base de donnée qui centralisera les données utilisée par Postfix et Dovecot. La gestion de cette base se fera au travers de l'interface "WebGui" de Postfixadmin
root@facteur:~# mysql -u root -p Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 40 Server version: 5.1.49-3 (Debian) Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database postfix; Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON postfix.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'monmotdepasse'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT SELECT ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'monmotdepasse2'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye
Postfixadmin
Téléchargez postfixadmin, ici: http://sourceforge.net/projects/postfixadmin/files/postfixadmin/
La dernière version (ce 16 mars 2012) est "postfixadmin-2.3.5" (1,5 Mio)
root@facteur:~# wget http://tenet.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.5/postfixadmin-2.3.5.tar.gz root@facteur:~# tar xzvf postfixadmin-2.3.5.tar.gz -C /var/www/ root@facteur:~# mv /var/www/postfixadmin-2.3.5/ /var/www/postfixadmin/ root@facteur:~# chown -R www-data:www-data /var/www/postfixadmin/ root@facteur:~# cp /var/www/postfixadmin/config.inc.php /var/www/postfixadmin/config.inc.php.sos root@facteur:~# sed -i 's/change-this-to-your.domain.tld/facteur.zehome.org/g' /var/www/postfixadmin/config.inc.php
root@facteur:~# nano /var/www/postfixadmin/config.inc.php
$CONF['configured'] = true; ... $CONF['default_language'] = 'fr'; ... $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfixadmin'; $CONF['database_password'] = 'monmotdepasse'; $CONF['database_name'] = 'postfix'; ... $CONF['encrypt'] = 'md5crypt';
root@facteur:~# service apache2 restart Restarting web server: apache2 ... waiting .
Rendez-vous maintenant à l'adresse suivante: https://votre_IP/postfixadmin/setup.php
Entrez le mot de passe du "setup" afin que le programme génère un HASH de sécurité que vous irez coller dans le fichier /var/www/postfixadmin/config.inc.php
If you want to use the password you entered as setup password, edit config.inc.php and set $CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';
root@serveur:~# nano /var/www/postfixadmin/config.inc.php
Et Remplacez:
$CONF['setup_password'] = 'changeme';
Par:
$CONF['setup_password'] = 'c4861ab90fcf650da20d5d2b6258a7d9:94922063c5569077df0a65dff7ae1e3d349b7732';
Ensuite, retapez le mot de passe de sécurité, choisissez un administrateur et donnez lui un mot de passe:
Vous pouvez maintenant vous rendre à la page d'accueil https://votre_IP/postfixadmin/ :
Postfix admin est maintenant configuré et opérationnel.
Postfix
Passons à la configuration de postfix...
Nous créons tout d'abord notre utilisateur/groupe virtuel
Nous lui donnerons comme GID/UID le numéro 3000
root@facteur:~# groupadd -g 3000 facteur root@facteur:~# useradd -d /home/facteur -m -u 3000 -g 3000 facteur
Sauvegardons la configuration de postfix
root@facteur:~# cp /etc/postfix/main.cf /etc/postfix/main.cf.sos root@facteur:~# cp /etc/postfix/master.cf /etc/postfix/master.cf.sos
Créons maintenant les fichiers qui contiendront les informations de connexions à notre base Mysql
root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_domains.cf
hosts = 127.0.0.1 user = postfix password = monmotdepasse2 dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 0 and active = 1
root@facteur:~# nano /etc/postfix/mysql_virtual_mailbox_maps.cf
hosts = 127.0.0.1 user = postfix password = monmotdepasse2 dbname = postfix query = SELECT maildir FROM mailbox WHERE username='%s' AND active = 1
root@facteur:~# nano /etc/postfix/mysql_virtual_alias_maps.cf
hosts = 127.0.0.1 user = postfix password = monmotdepasse2 dbname = postfix query = SELECT goto FROM alias WHERE address='%s' AND active = 1
root@facteur:~# nano /etc/postfix/mysql_relay_domains.cf
hosts = 127.0.0.1 user = postfix password = monmotdepasse2 dbname = postfix query = SELECT domain FROM domain WHERE domain='%s' and backupmx = 1
Configurons maintenant l'authentification par sasl
root@facteur:~# nano /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd mech_list: PLAIN LOGIN auxprop_plugin: rimap
Mettons à jour /etc/default/saslauthd avec ces paramètres (ne touchez pas au reste...)
Sauvegarde avant modification...
root@facteur:~# cp /etc/default/saslauthd /etc/default/sasauthd.sos
root@facteur:~# nano /etc/default/saslauthd
START=yes MECHANISMS="rimap" #imap server address MECH_OPTIONS="localhost" OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
Ajoutons postfix au groupe sasl:
root@facteur:~# adduser postfix sasl Ajout de l'utilisateur « postfix » au groupe « sasl »... Ajout de l'utilisateur postfix au groupe sasl Fait.
Et redémarrons le service :
root@facteur:~# service saslauthd restart Stopping SASL Authentication Daemon: saslauthd. Starting SASL Authentication Daemon: saslauthd.
Ajoutons ce qui suit au fichier /etc/postfix/main.cf:
root@serveur:~# nano /etc/postfix/main.cf
virtual_uid_maps = static:3000 virtual_gid_maps = static:3000 virtual_mailbox_base = /home/facteur virtual_transport = dovecot virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_mailbox_domains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf relay_domains = mysql:/etc/postfix/mysql_relay_domains.cf smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous
Ajoutez ceci à la fin de votre fichier /etc/postfix/master.cf
dovecot unix - n n - - pipe flags=DRhu user=facteur:facteur argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
Quelques réglages supplémentaires
Postfix est maintenant fonctionnel, mais il mérite encore votre attention. Voici quelques options importantes à ajouter à votre main.cf :
# Obtenir une alerte si les emails ne partent pas # Par défaut cette option est réglée à 4 heures, j'ai réduit cette durée: delay_warning_time = 1h
# Ajoutez votre réseau local ici mynetworks = 10.9.8.0/22 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
# Indiquer à Postfix de livrer à un destinataire à la fois # la réception d'un mail en provenance d'un expéditeur unique avec plusieurs destinataire ne fonctionnerais pas sans cette option dovecot_destination_recipient_limit = 1
C'est tout pour l'instant pour postfix...
Dovecot
Créons le fichier /etc/dovecot/dovecot-mysql.conf (c'est lui qui contiendra les paramètres de connexion à Mysql)
root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
driver = mysql connect = host=127.0.0.1 dbname=postfix user=postfix password=monmotdepasse2 default_pass_scheme = MD5-CRYPT user_query = SELECT '/home/facteur/%d/%n' as home, 3000 AS uid, 3000 AS gid FROM mailbox WHERE username = '%u' password_query = SELECT password FROM mailbox WHERE username = '%u'
Sauvegardons le fichier de configuration de dovecot :
root@facteur:~# cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.sos
Afin d'y voir plus clair (ce fichier est un vrai roman...), voici à quoi il ressemble par défaut, épuré des lignes commentées:
La commande pour voir le fichier sans les lignes commentées:
# grep -v -E "#" /etc/dovecot/dovecot.conf | grep -v -E "^$"
root@serveur:~# cat /etc/dovecot/dovecot.conf
## Dovecot configuration file protocols = imap imaps pop3 pop3s log_timestamp = "%Y-%m-%d %H:%M:%S " mail_privileged_group = mail protocol imap { } protocol pop3 { } protocol managesieve { } auth default { mechanisms = plain passdb pam { } userdb passwd { } user = root } dict { } plugin { }
Nous modifions notre fichier dovecot.conf pour qu'il ressemble à ce qui suit :
nano /etc/dovecot/dovecot.conf
## Dovecot configuration file protocols = imap imaps pop3 pop3s log_timestamp = "%Y-%m-%d %H:%M:%S " mail_privileged_group = mail disable_plaintext_auth = no mail_location = maildir:/home/facteur/%d/%n:INDEX=/home/facteur/%d/%n/indexes protocol imap { } protocol pop3 { } protocol managesieve { } protocol lda { postmaster_address = admin@zehome.org mail_plugin_dir = /usr/lib/dovecot/modules/lda auth_socket_path = /var/run/dovecot/auth-master } auth default { userdb sql { args = /etc/dovecot/dovecot-mysql.conf } passdb sql { args = /etc/dovecot/dovecot-mysql.conf } socket listen { master { path = /var/run/dovecot/auth-master mode = 0600 user = facteur } client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } } dict { } plugin { }
Redémarrons les services :
root@facteur:~# service dovecot restart Restarting IMAP/POP3 mail server: dovecotIf you have trouble with authentication failures, enable auth_debug setting. See http://wiki.dovecot.org/WhyDoesItNotWork This message goes away after the first successful login. . root@facteur:~# service saslauthd restart Stopping SASL Authentication Daemon: saslauthd. Starting SASL Authentication Daemon: saslauthd. root@facteur:~# service postfix restart Stopping Postfix Mail Transport Agent: postfix. Starting Postfix Mail Transport Agent: postfix.
Premiers essais
A partir de maintenant, nous devrions être capables de tester notre serveur de messagerie
Pour commencer, il faut créer un domaine virtuel et un utilisateur avec l'interface de postfixadmin:
Test de l'ensemble de la chaine
Votre serveur mail devrait être dés à présent pleinement fonctionnel; Vous pouvez tester l'ensemble de la chaîne avec la commande suivante: Nous envoyons un email à essai@zehome.org (Le domaine et la boite e-mail doivent évidemment exister...) à partir de root et nous ouvrons les logs.
Il faudra installer mailx pour pouvoir faire des essais d'envois:
root@facteur:~# apt-get install mailutils
root@facteur:~# echo test | mail -s "Premier test SMTP" essai@zehome.org && tail -f /var/log/mail.info
Apr 10 15:14:25 facteur postfix/pickup[11279]: 1B63A6C64D: uid=0 from=<root> Apr 10 15:14:25 facteur postfix/cleanup[11318]: 1B63A6C64D: message-id=<20110410121425.1B63A6C64D@facteur.zehome.org> Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: from=<root@facteur.zehome.org>, size=314, nrcpt=1 (queue active) Apr 10 15:14:25 facteur dovecot: deliver(essai@zehome.org): msgid=<20110410121425.1B63A6C64D@facteur.zehome.org>: saved mail to INBOX Apr 10 15:14:25 facteur postfix/pipe[11326]: 1B63A6C64D: to=<essai@zehome.org>, relay=dovecot, delay=0.06, delays=0.01/0/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service) Apr 10 15:14:25 facteur postfix/qmgr[11280]: 1B63A6C64D: removed
CTRL + C pour sortir.
Test du SMTP AUTH
La première chose que vous devez faire est d'obtenir un codage en base64 de votre nom d'utilisateur et mot de passe. Il y a deux manières de le faire, l'exemple ci-dessous utilise Perl:
$ perl -MMIME::Base64 -e 'print encode_base64("essai\@essai.org");' ZXNzYWkub3Jn
$ perl -MMIME::Base64 -e 'print encode_base64("essai");' ZXNzYWk=
Vous pouvez maintenant vous connecter au serveur de messagerie en utilisant Telnet:
telnet 192.168.3.114 25 Trying 192.168.3.114... Connected to 192.168.3.114. Escape character is '^]'. 220 facteur.zehome.org ESMTP Postfix (Debian/GNU)
Saluons le serveur SMTP...
EHLO facteur.zehome.org
Réponse...
250-facteur.zehome.org 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN
Nous lui faisons savoir que nous voulons nous authentifier:
AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn 334 UGFzc3dvcmQ6 ZXNzYWk= 235 2.7.0 Authentication successful
Maintenant, petit test d'envoi de mail :
mail from:essai@essai.org 250 2.1.0 Ok rcpt to:essai@essai.org 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> Test . 250 2.0.0 Ok: queued as E172752683 quit 221 2.0.0 Bye Connection closed by foreign host.
Avant l'envoi du premier mail :
root@facteur:~# ls -a /home/facteur/ . .. .bash_logout .bashrc .profile
Après :
root@facteur:~# ls -a /home/facteur/ . .. .bash_logout .bashrc essai.org .profile
Le répertoire est bien créé - Un répertoire par domaine sera créé, les utilisateurs des domaines seront rangés dans ces répertoires.
Les logs dans /var/log/mail.log:
Apr 6 11:37:09 facteur postfix/smtpd[1873]: 4463D6C401: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org Apr 6 11:37:17 facteur postfix/cleanup[1882]: 4463D6C401: message-id=<> Apr 6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: from=<essai@essai.org>, size=201, nrcpt=1 (queue active) Apr 6 11:37:17 facteur dovecot: deliver(essai@essai.org): msgid=: saved mail to INBOX Apr 6 11:37:17 facteur postfix/pipe[1883]: 4463D6C401: to=<essai@essai.org>, relay=dovecot, delay=18, delays=18/0.03/0/0.04, dsn=2.0.0, status=sent (delivered via dovecot service) Apr 6 11:37:17 facteur postfix/qmgr[1816]: 4463D6C401: removed Apr 6 11:37:20 facteur postfix/smtpd[1873]: disconnect from sidlol.zehome.org[192.168.0.2]
Test de la connexion IMAP avec telnet
$ telnet 192.168.3.114 143 Trying 192.168.3.114... Connected to 192.168.3.114. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN] Dovecot ready. a1 LOGIN essai@essai.org essai a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in a2 LIST "" "*" * LIST (\HasNoChildren) "." "INBOX" a2 OK List completed. a3 EXAMINE INBOX * FLAGS (\Answered \Flagged \Deleted \Seen \Draft) * OK [PERMANENTFLAGS ()] Read-only mailbox. * 3 EXISTS * 3 RECENT * OK [UNSEEN 1] First unseen. * OK [UIDVALIDITY 1302078677] UIDs valid * OK [UIDNEXT 4] Predicted next UID * OK [HIGHESTMODSEQ 1] Highest a3 OK [READ-ONLY] Select completed. a4 LOGOUT * BYE Logging out a4 OK Logout completed. Connection closed by foreign host.
Install Amavisd-new, SpamAssassin, And Clamav
La commande "tout en un"...
root@facteur:~# apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl p7zip unrar-free
Réglages de Dovecot Postfix et Amavis
Il faut maintenant organiser le "voyage" des mails entre Postfix/Amavis et Dovecot
Lorsque postfix reçoit un mail il va les passer à Amavis qui, à son tour, va envoyer le message à travers les filtres antispam et antivirus. Il repassera ensuite le mail présumé propre à Postfix, pour sa destination finale.
Nous ajoutons donc ce qui suit à la fin du fichier master.cf :
root@facteur:~# nano /etc/postfix/master.cf
amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes 127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_bind_address=127.0.0.1
Ajoutez avec un éditeur les deux lignes suivantes à la fin du fichier /etc/postfix/main.cf
content_filter = amavis:[127.0.0.1]:10024 receive_override_options = no_address_mappings
Ou tapez les deux commandes suivantes dans la console:
root@facteur:~# postconf -e 'content_filter = amavis:[127.0.0.1]:10024' root@facteur:~# postconf -e 'receive_override_options = no_address_mappings'
Rien à faire du côté de Dovecot, nous l'avons déjà configuré.
Activons maintenant les filtres (il suffit de décommenter 4 lignes):
root@facteur:~# nano /etc/amavis/conf.d/15-content_filter_mode
use strict; # You can modify this file to re-enable SPAM checking through spamassassin # and to re-enable antivirus checking. # # Default antivirus checking mode # Please note, that anti-virus checking is DISABLED by # default. # If You wish to enable it, please uncomment the following lines: @bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); # # Default SPAM checking mode # Please note, that anti-spam checking is DISABLED by # default. # If You wish to enable it, please uncomment the following lines: @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); 1; # ensure a defined return
Nous allons maintenant configurer la quarantaine :
root@facteur:~# nano /etc/amavis/conf.d/50-user
use strict; # # Place your configuration directives here. They will override those in # earlier files. # # See /usr/share/doc/amavisd-new/ for documentation and examples of # the directives you can use in this file # $QUARANTINEDIR = '/var/spool/virusmails'; # Quarantine Directory $spam_quarantine_method = 'local:spam-%b-%i-%n'; # Filename in $QUARANTINEDIR $spam_quarantine_to = 'spam-quarantine'; # Put Spam in Quarantine Directory # $spam_quarantine_to = "admin\@$mydomain"; # Send Spam to Adminstrator # $spam_quarantine_to = undef; # Do nothing with Spam $final_spam_destiny = D_DISCARD; $spam_admin = "admin\@$mydomain"; # Where to send Notification #------------ Do not modify anything below this line ------------- 1; # ensure a defined return
Création du répertoire qui va accueillir les mails infectés:
root@facteur:~# mkdir /var/spool/virusmails root@facteur:~# chown amavis:amavis /var/spool/virusmails
Mise à jour des règles de Spamassassin
root@facteur:~# sa-update -D
Activation du "daemon" de Spamassassin et activation de la mise à jour automatique (Cron) des règles de Spamassassin:
root@facteur:~# nano /etc/default/spamassassin
# Change to one to enable spamd ENABLED=1 ... # Cronjob # Set to anything but 0 to enable the cron job to automatically update # spamassassin's rules on a nightly basis CRON=1
root@facteur:~# service spamassassin start Starting SpamAssassin Mail Filter Daemon: spamd.
root@facteur:~# adduser clamav amavis Ajout de l'utilisateur « clamav » au groupe « amavis »... Ajout de l'utilisateur clamav au groupe amavis Fait.
root@facteur:~# service amavis restart Stopping amavisd: amavisd-new. Starting amavisd: amavisd-new.
root@facteur:~# service clamav-daemon restart Stopping ClamAV daemon: clamd. Starting ClamAV daemon: clamd .
root@facteur:~# service postfix restart Stopping Postfix Mail Transport Agent: postfix. Starting Postfix Mail Transport Agent: postfix.
Test de Spamassassin et Clamav
Test Spamassassin
Vous trouverez dans la doc un exemple de Spam: /usr/share/doc/spamassassin/examples/sample-spam.txt Il suffit de coller cette ligne dans un mail et de l'envoyer:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Il sera détecté comme Spam:
telnet 192.168.3.114 25 Trying 192.168.3.114... Connected to 192.168.3.114. Escape character is '^]'. 220 facteur.zehome.org ESMTP Postfix (Debian/GNU) AUTH LOGIN ZXNzYWlAZXNzYWkub3Jn 334 UGFzc3dvcmQ6 ZXNzYWk= 235 2.7.0 Authentication successful mail from:essai@essai.org 250 2.1.0 Ok rcpt to:admin@zehome.org 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> Test Spamassassin XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X . 250 2.0.0 Ok: queued as F19436C405 quit 221 2.0.0 Bye Connection closed by foreign host.
Et effectivement... "facteur amavis[7057]: (07057-01) Blocked SPAM"
Apr 6 17:29:21 facteur postfix/smtpd[7964]: connect from sidlol.zehome.org[192.168.0.2] Apr 6 17:30:13 facteur postfix/smtpd[7964]: F19436C405: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org Apr 6 17:35:40 facteur postfix/cleanup[7970]: F19436C405: message-id=<> Apr 6 17:35:40 facteur postfix/qmgr[7933]: F19436C405: from=<essai@essai.org>, size=281, nrcpt=1 (queue active) Apr 6 17:35:42 facteur postfix/smtpd[8091]: connect from localhost[127.0.0.1] Apr 6 17:35:42 facteur postfix/smtpd[8091]: 6CAEE6C413: client=localhost[127.0.0.1] Apr 6 17:35:42 facteur postfix/cleanup[7970]: 6CAEE6C413: message-id=<SSxt4KviusO2QF@facteur.zehome.org> Apr 6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: from=<>, size=2947, nrcpt=1 (queue active) Apr 6 17:35:42 facteur amavis[7057]: (07057-01) Blocked SPAM, LOCAL [192.168.0.2] [192.168.0.2] <essai@essai.org> -> <admin@zehome.org>, quarantine: x/spam-xt4KviusO2QF.gz, mail_id: xt4KviusO2QF, Hits: 1004.975, size: 281, 1492 ms Apr 6 17:35:42 facteur postfix/smtp[8088]: F19436C405: to=<admin@zehome.org>, relay=127.0.0.1[127.0.0.1]:10024, delay=348, delays=346/0.05/0.04/1.5, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=07057-01, BOUNCE) Apr 6 17:35:42 facteur postfix/qmgr[7933]: F19436C405: removed Apr 6 17:35:42 facteur dovecot: deliver(essai@essai.org): msgid=<SSxt4KviusO2QF@facteur.zehome.org>: saved mail to INBOX Apr 6 17:35:42 facteur postfix/pipe[8092]: 6CAEE6C413: to=<essai@essai.org>, relay=dovecot, delay=0.1, delays=0.02/0.06/0/0.02, dsn=2.0.0, status=sent (delivered via dovecot service) Apr 6 17:35:42 facteur postfix/qmgr[7933]: 6CAEE6C413: removed Apr 6 17:35:43 facteur postfix/smtpd[7964]: disconnect from sidlol.zehome.org[192.168.0.2]
Test de l'anti-virus
Vous procèderez de la même manière, avec le code suivant, récupéré sur www.eicar.org :
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Effectivement le mail est mis en quarantaine: "Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] <essai@essai.org> -> <admin@zehome.org>, quarantine: S/badh-SURoiIuWSpyN"
Apr 6 19:19:24 facteur postfix/smtpd[13605]: A60AA6C416: client=sidlol.zehome.org[192.168.0.2], sasl_method=LOGIN, sasl_username=essai@essai.org Apr 6 19:19:39 facteur postfix/cleanup[13617]: A60AA6C416: message-id=<> Apr 6 19:19:39 facteur postfix/qmgr[7933]: A60AA6C416: from=<essai@essai.org>, size=275, nrcpt=1 (queue active) Apr 6 19:19:40 facteur postfix/smtpd[14385]: connect from localhost[127.0.0.1] Apr 6 19:19:40 facteur postfix/smtpd[14385]: 81CB86C417: client=localhost[127.0.0.1] Apr 6 19:19:40 facteur postfix/cleanup[13617]: 81CB86C417: message-id=<20110406161940.81CB86C417@facteur.zehome.org> Apr 6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: from=<essai@essai.org>, size=956, nrcpt=1 (queue active) Apr 6 19:19:40 facteur amavis[13641]: (13641-01) Passed BAD-HEADER, LOCAL [192.168.0.2] [192.168.0.2] <essai@essai.org> -> <admin@zehome.org>, quarantine: S/badh-SURoiIuWSpyN, mail_id: SURoiIuWSpyN, Hits: 4.975, size: 275, queued_as: 81CB86C417, 608 ms Apr 6 19:19:40 facteur postfix/smtp[13618]: A60AA6C416: to=<admin@zehome.org>, relay=127.0.0.1[127.0.0.1]:10024, delay=21, delays=20/0/0.04/0.59, dsn=2.0.0, status=sent (250 2.0.0 Ok, id=13641-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 81CB86C417) Apr 6 19:19:40 facteur postfix/qmgr[7933]: A60AA6C416: removed Apr 6 19:19:40 facteur postfix/smtp[14386]: 81CB86C417: to=<admin@zehome.org>, relay=smtp.zehome.org[192.168.0.3]:25, delay=0.32, delays=0.02/0.06/0/0.23, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as ED5BC300EDF) Apr 6 19:19:40 facteur postfix/qmgr[7933]: 81CB86C417: removed Apr 6 19:19:41 facteur postfix/smtpd[13605]: disconnect from sidlol.zehome.org[192.168.0.2]
Vous le retrouverez dans le sous-répertoire suivant : /var/spool/virusmails/S/badh-SURoiIuWSpyN (voyez les logs: quarantine: S/badh-SURoiIuWSpyN)
Installation de Postgrey
Postgrey, qu'est-ce que c'est? Postgrey est un moyen simple et efficace de lutter contre les serveurs émettant des pourriels. Le principe est simple: rejeter temporairement un message, par l'envoi d’un code de refus au serveur smtp émetteur (MTA). La plupart du temps, les MTA réessaye d'envoyer les emails après un certain temps, ce que ne font pas (généralement) les serveurs émettant des pourriels...
Bien sur ce système n'est pas infaillible, et certains serveurs émettant des pourriels sont assez malins pour retenter le coup plus tard. Ils sont finalement très peu nombreux et Postgrey s'avère efficace.
Lors de la mise en place de Postgrey vous aurez beaucoup de mails qui ne vous parviendrons pas. Ce problème sera progressivement réglé une fois la première mise en quarantaine effectuée.
root@facteur:~# apt-get install postgrey
root@facteur:~# nano /etc/default/postgrey
POSTGREY_OPTS="--inet=10023 --delay=300 --hostname=facteur.zehome.org --auto-whitelist-clients"
root@facteur:~# nano /etc/postfix/main.cf
... smtpd_recipient_restrictions = ... reject_unauth_pipelining, check_policy_service inet:127.0.0.1:10023, reject_invalid_hostname
root@facteur:~# service postgrey restart root@facteur:~# service postfix restart
root@facteur:~# netstat -tulpen | grep LISTEN ... tcp 0 0 127.0.0.1:10023 0.0.0.0:* LISTEN 0 7338 2271/postgrey.pid - ...
Vous disposez de deux fichiers dans lesquels vous pouvez mettre en "liste blanche" des domaines "amis" ou des adresses de destination:
root@facteur:~# vdir /etc/postgrey/ total 12 -rw-r--r-- 1 root root 7580 12 janv. 00:15 whitelist_clients -rw-r--r-- 1 root root 189 12 janv. 00:15 whitelist_recipients
Le Webmail
Je vous propose deux choix de Webmail :
- Squirrelmail: Simplissime, léger et possédant de multiples plugins;
- Roundcube: Plus lourd mais plus complet;
Squirrelmail
Deux méthodes : Méthode via apt et méthode via le paquet source.
Méthode Debian
root@facteur:~# apt-get install squirrelmail root@facteur:~# ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail.conf
Configurez Squirrelmail:
root@facteur:~# /usr/sbin/squirrelmail-configure
Command >> 2 (Server Settings) Command >> A (Update IMAP Settings) Command >> 8 (Server software) [other]: dovecot Command >> s Command >> q
Créez un domaine avec postfixadmin (si ce n'est pas déjà fait). Créez un utilisateur avec postfixadmin (si ce n'est pas déjà fait).
root@facteur:~# service apache2 restart Restarting web server: apache2 ... waiting .
Testez avec cette adresse:
http://adresse_IP_du_serveur/squirrelmail
Méthode avec les sources
La méthode présentée ici est ce que l'on appelle "quick and durty" - Je ne m'attache pas aux locales et plugins intéressants pas exemple. Téléchargeons tout d'abord les sources (tant qu'a faire, choisissons le dernière "snapshot"). Liste ICI
root@facteur:~# tar xzvf squirrelmail-20110406_0200-SVN.stable.tar.gz -C /var/www/ root@facteur:~# mv /var/www/squirrelmail.stable/squirrelmail/ /var/www/ root@facteur:~# rmdir /var/www/squirrelmail.stable/ root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/
Configuration:
root@facteur:~# /var/www/squirrelmail/configure
Command >> 2 (Server Settings) Command >> A (Update IMAP Settings) Command >> 8 (Server software) [other]: dovecot Command >> s Command >> q
Créons les répertoires qui accueilleront les données personnelles (carnet d'adresses, références...) et les pièces jointes:
root@facteur:~# mkdir /var/local/squirrelmail root@facteur:~# mkdir /var/local/squirrelmail/data root@facteur:~# mkdir /var/local/squirrelmail/attach root@facteur:~# chown -R www-data:www-data /var/local/squirrelmail
root@facteur:~# service apache2 restart Restarting web server: apache2 ... waiting .
Roundcube
Il est conseillé (mais pas indispensable) d'installer préalablement les codes et modules suivants:
root@facteur:~# apt-get install libiconv-hook1 php5-mcrypt php5-intl
Téléchargement des sources ICI :
root@facteur:~# tar xzvf roundcubemail-0.5.1.tar.gz -C /var/www/ root@facteur:~# mv /var/www/roundcubemail-0.5.1/ /var/www/roundcubemail root@facteur:~# chown -R www-data:www-data /var/www/roundcubemail/
php.ini
Deux petites modification à faire:
suhosin
Si le paquet php5-suhosin est installé, il faut modifier la configuration du php.ini d'apache2 à cause d'une incompatibilité avec roundcube:
Modifiez le php.ini de la façon suivante
Ajoutez à la fin du fichier /etc/php5/apache2/php.ini;
suhosin.session.encrypt = Off
Ou passez la commande suivante
echo 'suhosin.session.encrypt = Off' >> /etc/php5/apache2/php.ini
Ou Modifiez le fichier suhosin.ini Remplacez cette valeur:
;suhosin.session.encrypt = on
Par
suhosin.session.encrypt = off
date.timezone
Profitons-en pour régler le fuseau horaire: Toujours dans le fichier /etc/php5/php.ini, cherchez la variable date.timezone, dé commentez, et complétez:
[Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = 'Indian/Antananarivo' ;date.timezone = 'Europe/Paris'
Mysql
Roundcube à besoin d'une base de donnée, il faut maintenant la créer :
root@facteur:~# mysql -u root -p Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 48 Server version: 5.1.49-3 (Debian) Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database roundbase; Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON roundbase.* TO 'roundadmin'@'localhost' IDENTIFIED BY 'monmotdepasse'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.01 sec) mysql> quit Bye
Installation
Rendez-vous maintenant à l'adresse suivante pour la configuration: http://votre_IP/roundcubemail/installer/
Laissez-vous guider, jusqu’à la page de création de la configuration.
Prenez soin de remplir convenablement les questions concernant la base Mysql, le serveur IMAP et SMTP ainsi que les "locales".
L'installeur vous proposera ensuite deux fichiers main.inc.php et db.inc.php qu'il faudra aller copier dans /var/www/roundcube/config/
Cliquez sur "continuer" (en milieu de page) une fois que vous aurez créé les deux fichiers de configuration pour tester.
Initialisez la base de données :
Quand tous les tests sont "Ok", vous pouvez effacer le répertoire /var/www/roundcubemail/installer/ et vous rendre sur: http://votre_IP/roundcubemail/
root@facteur:~# rm -r /var/www/roundcubemail/installer
Un alias pour Apache2
Ajout d'un alias 'webmail' dans Apache. Ainsi Roundcube sera accessible depuis n'importe quel domaine hébergé sur le serveur via l'adresse http://domaine.tld/webmail/.
Editez le fichier apache2.conf
root@facteur:~# nano /etc/apache2/apache2.conf
et ajoutez ceci à la fin du fichier :
Alias /webmail "/var/www/roudcubemail" <Directory /var/www/roundcubemail/config> Options -FollowSymLinks AllowOverride None </Directory> <Directory /var/www/roundcubemail/temp> Options -FollowSymLinks AllowOverride None Order allow,deny Deny from all </Directory> <Directory /var/www/roundcubemail/logs> Options -FollowSymLinks AllowOverride None Order allow,deny Deny from all </Directory>
Puis rechargez apache :
root@facteur:~# service apache2 reload
Activation du SMTPS
La connexion classique se fait sur le port 25 non sécurisée, nous allons ouvrir le port 465 (smtps)
Ajoutons à notre fichier /etc/postfix/master.cf (il suffit de dé-commenter) ceci :
smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
Modifions aussi le fichier /etc/postfix/main.cf, on y ajoute
# SASL parameters # --------------------------------- # Use Dovecot to authenticate. smtpd_sasl_type = dovecot # Referring to /var/spool/postfix/private/auth smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = smtpd_sasl_authenticated_header = yes # TLS parameters # --------------------------------- # Replace this with your SSL certificate path if you are using one. smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key # The snakeoil self-signed certificate has no need for a CA file. But # if you are using your own SSL certificate, then you probably have # a CA certificate bundle from your provider. The path to that goes # here. #smtpd_tls_CAfile=/path/to/ca/file smtpd_use_tls=yes smtp_tls_security_level = may smtpd_tls_security_level = may #smtpd_tls_auth_only = no smtp_tls_note_starttls_offer = yes smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom #smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache #smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
root@facteur:~# service postfix restart
Et vérifions que le port 465 est bien ouvert:
root@facteur:~# netstat -laputen | grep master tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 0 14857 3757/master tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 0 14852 3757/master tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN 108 3408 828/amavisd (master tcp 0 0 127.0.0.1:10025 0.0.0.0:* LISTEN 0 14986 3757/master
Vous pouvez maintenant tester avec roundcube ou squirrelmail (en changeant la configuration évidemment...)
Sur Squirrelmail:
SMTP Settings ------------- 4. SMTP Server : localhost 5. SMTP Port : 465 6. POP before SMTP : false 7. SMTP Authentication : none 8. Secure SMTP (TLS) : true 9. Header encryption key :
Sur Roundcube (dans le fichier /var/www/roundcubemail/config/main.inc.php)
// ---------------------------------- // SMTP // ---------------------------------- $rcmail_config['smtp_server'] = 'ssl://localhost'; $rcmail_config['smtp_port'] = 465; $rcmail_config['smtp_user'] = ''; $rcmail_config['smtp_pass'] = ''; $rcmail_config['smtp_auth_type'] = ''; $rcmail_config['smtp_auth_cid'] = null; $rcmail_config['smtp_auth_pw'] = null;
Plus loin avec Dovecot
Managesieve
Managesieve est un plugin permettant de gérer les filtres directement sur votre serveur Imap, il est inclu à Dovecot à partir des versions 1.2
Ajoutez le dépôt suivant (valable en i386 et amd64) :
root@facteur:~# nano /etc/apt/sources.list
deb http://xi.rename-it.nl/debian/ stable-auto/dovecot-1.2 main
root@facteur:~# apt-get update
Réglez le problème de clef gpg...
root@facteur:~# apt-get dist-upgrade Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Calcul de la mise à jour... Fait Les paquets suivants seront mis à jour : dovecot-common dovecot-imapd dovecot-pop3d 3 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour. Il est nécessaire de prendre 4 102 ko dans les archives. Après cette opération, 7 954 ko d'espace disque seront libérés. Souhaitez-vous continuer [O/n] ?
Conservez votre configuration...
Modifiez la configuration de Dovecot pour activer Managesieve
root@facteur:~# nano /etc/dovecot/dovecot.conf
protocols = imap imaps managesieve pop3 pop3s ... protocol lda { ... mail_plugins = sieve quota } protocol managesieve { listen = *:4190 login_executable = /usr/lib/dovecot/managesieve-login mail_executable = /usr/lib/dovecot/managesieve } ... plugin { ## Sieve sieve_dir = /home/facteur/%d/%n/sieve sieve = /home/facteur/%d/%n/.dovecot.sieve }
root@facteur:~# service dovecot restart
Squirrelmail : ajouter le plugin "avelsieve"
Téléchargement ICI
root@facteur:~# tar xzvf avelsieve-1.9.8.tar.gz -C /var/www/squirrelmail/plugins/ root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins root@facteur:~# cd /var/www/squirrelmail/ root@facteur:/var/www/squirrelmail# cp plugins/avelsieve/config/config_sample.php plugins/avelsieve/config/config.php
Téléchargez aussi la librairie java-script (même page) Vous pouvez, si vous êtes un puriste, vous passer de la librairie javascript, mais toutes les options ne fonctionneront pas...
root@facteur:~# tar xzvf javascript_libs-0.1.2.tar.gz -C /var/www/squirrelmail/plugins/ root@facteur:~# chown -R www-data:www-data /var/www/squirrelmail/plugins
Activez les plugins:
root@facteur:~# /var/www/squirrelmail/configure
Command >> 8 (Plugins) Command >> ? (avelsieve) + (javascript_libs) Command >> s Command >> q
Vous avez maintenant accès à une nouvelle option: Filtres!
Si vous activez le répondeur automatique vous aurez une réponse dans ce genre (en-tête du mail de réponse) :
Return-Path: <MAILER-DAEMON> Delivered-To: essai1@essai.org Received: from localhost (localhost [127.0.0.1]) by facteur.zehome.org (Postfix) with ESMTP id 6EABF6C36A for <essai1@essai.org>; Thu, 7 Apr 2011 19:41:53 +0300 (EAT) X-Virus-Scanned: Debian amavisd-new at facteur.zehome.org Received: from facteur.zehome.org ([127.0.0.1]) by localhost (facteur.zehome.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8L-CWt6ZrQIC for <essai1@essai.org>; Thu, 7 Apr 2011 19:41:53 +0300 (EAT) Received: by facteur.zehome.org (Postfix, from userid 3000) id 206AB6C3B8; Thu, 7 Apr 2011 19:41:53 +0300 (EAT) X-Sieve: Dovecot Sieve 0.1.18 Message-ID: <dovecot-sieve-1302194513-52514-0@facteur.zehome.org> Date: Thu, 07 Apr 2011 19:41:53 +0300 From: <essai@essai.org> To: <essai1@essai.org> Subject: En Vacances! In-Reply-To: <31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114> References: <31730a3411b70b77d45e7e85708c80f9.squirrel@192.168.3.114> Auto-Submitted: auto-replied (vacation) Precedence: bulk MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit
Roundcube : ajouter le plugin "managesieve"
Le plugin est déjà présent dans Roundcube, il suffit de l'activer :
root@facteur:~/trunk# nano /var/www/roundcubemail/config/main.inc.php
Vers la ligne 324...
// ---------------------------------- // PLUGINS // ---------------------------------- // List of active plugins (in plugins/ directory) $rcmail_config['plugins'] = array('managesieve');
Et de le configurer:
root@facteur:~# cp /var/www/roundcubemail/plugins/managesieve/config.inc.php.dist /var/www/roundcubemail/plugins/managesieve/config.inc.php
Remplacez :
$rcmail_config['managesieve_port'] = 2000;
Par :
$rcmail_config['managesieve_port'] = 4190;
Vous avez maintenant accès à la page de configuration des filtres :
Installer le SSL sur Dovecot
Plus loin avec Roundcube
Roundcube + Vacation - Notification d'absence
Forcer l'utilisation de roundcube en https
Plus loin avec Postfixadmin
Fetchmail_sur_postfixadmin
Dovecot - Mise en place de quotas
Dovecot 1.2 supporte la gestion des quotas. Pourquoi ne pas en profiter!
Modification de la configuration de Dovecot:
root@facteur:~# nano /etc/dovecot/dovecot.conf
... protocol imap { mail_plugins = quota imap_quota } protocol pop3 { pop3_uidl_format = %08Xu%08Xv mail_plugins = quota } ... protocol lda { ... mail_plugins = sieve quota } ... dict { quotadict = mysql:/etc/dovecot/dovecot-dict-sql.conf } ... plugin { ... ## quota quota = dict:%u::proxy::quotadict quota_rule = *:storage=10M:messages=1000 quota_warning = storage=75%% /usr/local/bin/quota-warning.sh 75 %u quota_warning2 = storage=90%% /usr/local/bin/quota-warning.sh 90 %u }
Création du fichier en charge d'alimenter la base de donnée concernant les quotas:
root@facteur:~# nano /etc/dovecot/dovecot-dict-sql.conf
connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=monmotdepasse map { pattern = priv/quota/storage table = quota2 username_field = username value_field = bytes } map { pattern = priv/quota/messages table = quota2 username_field = username value_field = messages }
Modification de la requête à la base Mysql:
root@facteur:~# nano /etc/dovecot/dovecot-mysql.conf
driver = mysql connect = host=127.0.0.1 dbname=postfix user=postfixadmin password=Perso2 default_pass_scheme = MD5-CRYPT user_query = SELECT '/home/facteur/%d/%n' AS home, 3000 AS uid, 3000 AS gid, CONCAT('*:bytes=', CAST(quota AS CHAR)) AS quota_rule FROM mailbox WHERE username = '%u' AND active='1' password_query = SELECT password FROM mailbox WHERE username = '%u'
Prise en charge des quotas dans postfixadmin:
root@facteur:~# nano /var/www/postfixadmin/config.inc.php
... // Quota // When you want to enforce quota for your mailbox users set this to 'YES'. $CONF['quota'] = 'YES'; ... // Optional: // Show used quotas from Dovecot dictionary backend in virtual // mailbox listing. // See: DOCUMENTATION/DOVECOT.txt // http://wiki.dovecot.org/Quota/Dict // $CONF['used_quotas'] = 'YES'; // if you use dovecot >= 1.2, set this to yes. // Note about dovecot config: table "quota" is for 1.0 & 1.1, table "quota2" is for dovecot 1.2 and newer $CONF['new_quota_table'] = 'YES';
Création du script chargé d'envoyer les alertes:
root@facteur:~# nano /usr/local/bin/quota-warning.sh
#!/bin/sh PERCENT=$1 FROM="admin@isalo.org" qwf="/tmp/quota.warning.$$" echo "From: $FROM To: $USER To: admin@isalo.org Subject: Votre boite mail est pleine à $PERCENT% Content-Type: text/plain; charset="UTF-8" Votre boite mail est pleine à $PERCENT%+, veuillez effacer des messages et vider le corbeille, ou contactez votre administrateur" >> $qwf cat $qwf | /usr/sbin/sendmail -f $FROM "$USER" rm -f $qwf exit 0
root@facteur:~# chown dovecot:facteur /usr/local/bin/quota-warning.sh root@facteur:~# chmod+x /usr/local/bin/quota-warning.sh
Redémarrage de Dovecot
root@facteur:~# service dovecot restart
Prise en charge dans Roundcube
Rien à faire, la prise en charge des quotas est déjà activée d'office (en bas à gauche).
Prise en charge dans Squirrelmail
Il faut installer 2 plugins :
Procédez de la même façon que vous avez installé le plugin avelsieve.
Pour le plugin "compatibility" rien d'autre à faire. Pour le plugin "Check Quota":
root@facteur:~# cp /var/www/squirrelmail/plugins/check_quota/config.sample.php /var/www/squirrelmail/plugins/check_quota/config.php root@facteur:~# nano /var/www/squirrelmail/plugins/check_quota/config.php
Et passez la variable quota_type de 0 à 1
******************************* * Quota Configuration Options * *******************************/ ... $settings['quota_type'] = 1;
Activez les deux plugins :
root@facteur:~# /var/www/squirrelmail/configure
Visualisation du quota en haut à gauche :
Lien externes
Lol 8 avril 2011 à 11:06 (CDT)