Squirrelmail, WebMail

De Diablotins.org.


Une interface WEB pour votre serveur de courrier
Image:brush.png
SquirrelMail est une interface Web qui permet à vos utilisateurs de consulter et d'envoyer des messages électroniques.

Pour cela, SquirrelMail requiert un serveur de messagerie(MTA) pour transport du courrier(SMTP), un serveur IMAP pour la réception du courrier et évidemment d'un serveur Web équipé de PHP, Apache par exemple.




Sommaire

Relayer l'envois de courrier

Nous allons ici utiliser Sendmail; malgré son grand âge, c'est l'agent par défaut de FreeBSD et je suis un sentimental.
Commençons par stopper le service sendmail(8) si il tourne :

  # cd /etc/mail
  # ps afx|grep sendmail

Si une sortie apparaît:

  # make stop

Configurons Sendmail par défaut :

  # make all
  # make install

Éditons la «relay-list» pour y ajouter le domaine local et le ou les adresses IP du réseau local, par exemple:

  # vi relay-domains
  --
  192.168.1
  192.168.2
  toto.com

On associe l'utilisateur root à un utilisateur. Par exemple «root» à «lecid»:

  # vi aliases
  [...]
  root: lecid
  [...]
  # make alias

ou

  # newaliases

Démarrons Sendmail :

  # make start

Vérifions qu'il fonctionne:

  # ps afx|grep sendmail        Une sortie doit apparaître.

Vérifions qu'il est bien affecté à l'écoute sur le port 25:

  # nmap localhost|grep 25
  # netstat -a|grep '*.smtp'

Essayons d'envoyer un message:

  $ echo 'test' | mail maboite@perso.fr

On constate que le mail est parti :

  # mailq

Après avoir vérifié la réception du message dans la boite demandée, vérifions le journal:

  # tail -f /var/log/maillog

Afin de démarrer le service Sendmail avec le système, précisons l'entrée suivante dans /etc/rc.conf

  sendmail_enable="YES"

Le serveur IMAP

Ici, on trouvera encore des puristes pour dire 'Courier!!' ou 'Qmail !!!' ou 'Cyrus Imapd !!!'. Tsee, les universitaires ne font pas toujours du super boulot et c 'est vrai qu'ils se sont craqué sur le Ftpd, mais bon le B de BSD c'est quand même Berkeley. 'KISS, keep it simple and stupid'. Pas besoin d'une usine à gaz, et Imapd-uw, fait du très bon boulot et ça fait un baille qu'on lui à pas trouvé d'exploit et finalement pas plus que sur les autres.

Si vous faite des maildirs virtuelles en domaines Virtuels alors la oui Courier !! si vous savez pas de quoi je parle, ceci démontre bien l'inutilité de prendre plus complexe que imapd-uw

Seul ombre au tableau, depuis FreeBSD 4.7, l'authentification PAM login n'est plus compilée par défaut dans imapd-uw, encore un mystère ... Donc, avant la version 4.7 de FreeBSD, installez le port mail/imapd-uw sans option. Dans les autres cas, installez le port avec l' argument «WITH_SSL_AND_PLAINTEXT». Précisez aussi l'option dans /etc/make.conf, pour les compilations à venir :

  WITH_SSL_AND_PLAINTEXT=1

On lance les serveurs POP et IMAP via inetd.

  # vi /etc/inetd.conf
  --
  [...]
  pop3 stream tcp nowait root /usr/local/libexec/popd popd
  imap4 stream tcp nowait root /usr/local/libexec/imapd imapd
  [...]

Le POP n'est pas forcément utile, mais il sera bien pratique pour récupérer mon courrier sur mon Outlook le soir. On relance inetd:

  # killall inetd
  # inetd -wW

On vérifie qu'il tourne :

  # ps afx|grep inetd

On vérifie que nos ports POP3 et IMAP4 écoutent

  # nmap localhost | grep 110
  # nmap localhost | grep 143
  # netstat -a|grep '*.imad'
  # netstat -a| grep '*.pop3'

Voila nos serveurs installés.

Récupérer les messages de votre fournisseur

Fetchmail est un outil bien sympa : il permet de récupérer le courrier via POP, POPs, IMAP et IMAPs chez le FAI pour l'insérer au mailbox d'un user UNIX, juste ce qu'il nous faut. Imaginons, j'ai deux comptes POP, chez trucmuche.net et trucbidule.net; toto@trucmuche.net et toto@trucbidule.net avec le mot de passe titi pour les deux.
les serveurs POP sont : pop.trucmuche.net et pop.trucbidule.net.
Le user UNIX cible est lecid : Installez le port mail/fetchmail. La configuration est un peu plus difficile:

  vi /root/.fetchmailrc
  --
  poll pop.trucmuche.net protocol POP3 user toto password titi is lecid
  poll pop.trucbidule.net protocol POP3 user toto password titi is lecid
  fetch all

On test l'affaire :

  # fetchmail -vvv

l'option -vvv active le mode super verbose, si tout se passe bien c'est presque fini. Il ne reste plus qu'à mettre en crontab le fetch des mails, exemple, toutes les 5 minutes.

  # vi /etc/crontab 
  --  
  */5 * * * * root /usr/local/bin/fetchmail -f /root/.fetchmailrc >> /var/log/fetchmail 2>/dev/null

fini pour fetchmail.

Squirrelmail

Si comme moi vous aimez la simplicité, IMP n'est pas fait pour vous.
Squirrelmail est votre ami ! Installez le port mail/squirrelmail.
- Évidement il vous faut aussi installer Apache et PHP. -
Ensuite:

  # ln -s /usr/local/squirrelmail /usr/local/www/data/webmail
  # cd /usr/local/www/data/webmail
  # ./configure

Il suffit de répondre à deux trois questions en fonction de ce qu'on veut, et le tour est joué !
./configure est un joli script perl de menu très simple.
Squirrelmail est super modulable, je l'utilise même comme lecteur de news !!
allez jeter un œil sur les plugins du site officiel.

Reste plus qu'à tester :

  http://localhost/webmail/

Attention : PHP 4.3 ... warning sur les sessions : il faut tuner un peu php

  # vi /usr/local/etc/php.ini
  --
  [...]
  session.bug_compat_42 = 1
  session.bug_compat_warn = 0
  [...]

Sur les versions récentes de PHP, il n'est pas nécessaire de l'adapter comme cela.
Il est également possible d'utiliser un autre serveur HTTP qu'Apache, ça marche très bien avec Nginx par exemple.

En savoir plus

Projets :