2. Configuration

2.1. Configuration de Postfix

2.1.1. Postfix de base

Allez dans le répertoire /etc/postfix puis faites une copie du fichier main.cf. Ce fichier constitue l'essentiel de la configuration de Postfix. Ouvrez-le avec votre éditeur favori. La plupart des options sont correctement positionnées mais il faut en préciser certaines.

  • Pour préciser les noms de machine et de domaine :
    myhostname = serveur.mozart.com
    mydomain = mozart.com

  • Pour préciser l'envoi puis la réception du courrier :
    myorigin = $myhostname
    mydestination = $myhostname, localhost.$mydomain

  • Pour préciser le mode de transport des courriers sortants :
    default_transport = smtp

  • Pour préciser la gestion des alias :
    alias_maps = hash:/etc/postfix/aliases
    alias_database = hash:/etc/postfix/aliases

Pour prendre en compte les changements de configuration, entrez la commande postfix reload.

Pour afficher les différences de votre configuration avec celle par défaut, entrez postconf -n.

Pour vérifier la configuration du serveur, lancez postfix check.

Vérifiez la présence de Postfix et associés par :
$ ps axf
  733 ?        S      0:00 /usr/lib/postfix/master
  738 ?        S      0:00  \_ qmgr -l -t fifo -u
 1900 ?        S      0:00  \_ pickup -l -t fifo

Dès à présent le serveur local de messagerie fonctionne.

2.1.2. Postfix vers l'extérieur

Pour ouvrir le serveur vers l'extérieur, il faut lui indiquer la marche à suivre. Pour cela ajoutez les lignes suivantes au fichier /etc/postfix/main.cf en remplaçant mail.provider.com par l'adresse du serveur SMTP de votre provider (en conservant les crochets) :
relayhost = [mail.provider.com]
defer_transports = smtp

2.1.3. Réécriture des adresses

Enfin, il faut définir la correspondance entre les adresses locales de type utilisateur@serveur.mozart.com qui n'ont aucune valeur pour vos correspondants extérieurs et celles qu'ils connaissent de type identifiant@provider.com. Editez le fichier /etc/postfix/sender_canonical pour que Postfix remplace l'adresse locale de la forme utilisateur@serveur.mozart.com par identifiant@provider.com lorsque utilisateur envoit un message :
utilisateur identifiant@provider.com

De même, un message adressé par un utilisateur local à identifiant@provider.com ne doit pas être dirigé vers l'extérieur car bien que l'adresse identifiant@provider.com corresponde à une adresse non-locale, l'utilisateur dont l'adresse est identifiant@provider.com lui est local. Editez le fichier /etc/postfix/recipient_canonical :
identifant@provider.com utilisateur

Générez alors à partir de ces fichiers les bases DB utilisées par Postfix par les commandes :

postmap /etc/postfix/sender_canonical
postmap /etc/postfix/recipient_canonical

Ajoutez alors dans le fichier /etc/postfix/main.cf :
sender_canonical_maps = hash:/etc/postfix/sender_canonical
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
puis relancez Postfix par postfix reload.

2.1.4. Test de la configuration

  • Envoyez des messages aux utilisateurs locaux par la commande mail
  • Envoyez des messages aux utilisateurs non-locaux par la commande mail
  • Consultez la file d'attente par la commande mailq
  • Affichez les répertoires des files d'attente par la commande tree /var/spool/postfix

2.2. Configuration de Fetchmail

Lancez l'utilitaire fetchmailconf en étant sous root. Choisissez tous les paramètres de vos comptes emails distants dans l'interface. Vous devriez obtenir en sortant du programme un fichier /root/.fetchmailrc de ce type :
poll pop.provider.com with proto POP3
   user 'utilisateur1' there with password 'passe' is utilisateur1 here options fetchall
   user 'utilisateur2' there with password 'passe' is utilisateur2 here options fetchall

2.3. Configuration de la connexion

Un script très pratique est livré avec pppd. Il s'agit de ppp-on. Pour l'installer, il suffit de le copier (/usr/share/doc/ peut-être aussi /usr/doc) :

cp /usr/share/doc/ppp-2.4.0/scripts/ppp-on /etc/ppp/
cp /usr/share/doc/ppp-2.4.0/scripts/ppp-on-dialer /etc/ppp/
cp /usr/share/doc/ppp-2.4.0/scripts/ppp-off /etc/ppp/

Editez le fichier /etc/ppp/ppp-on pour affecter les valeurs aux paramètres TELEPHONE, ACCOUNT et PASSWORD.

Editez le fichier /etc/ppp/ppp-on-dialer pour ajuster le chemin de recherche de la commande chat : remplacez chat par /usr/sbin/chat.

2.4. Assemblage du tout

On établit la connexion régulièrement par une entrée cron. Une fois la connexion établie le fichier /etc/ppp/ip-up.local est exécuté automatiquement par le système ; on y place les commandes pour envoyer et recevoir les messages puis pour raccrocher.

Note

Afin d'éviter d'entrer en concurrence avec le script qui suit, supprimez dans le fichier /etc/ppp/ip-up toute ligne contenant /usr/sbin/sendmail. En effet cette commande est exécutée avec davantage de précaution par le script suivant.

Ajoutez une entrée à cron par la commande crontab -e qui ouvre vi dans lequel vous pouvez taper une ligne comme la suivante qui lance deux fois par heure du lundi au vendredi de 9 heures à 19 heures la connexion donc l'envoi et la récupération du courrier :
0,30 9-19 * * 1-5 /etc/ppp/ppp-on

Ajoutez au script /etc/ppp/ip-up.local les lignes suivantes et rendez-le exécutable par chmod +x /etc/ppp/ip-up.local :
#!/bin/bash
# Récupération des messages
/usr/bin/fetchmail --logfile /root/fetchlog &
fetchid=$!
fetchps=$(ps --no-headers -o pid -p $fetchid)
if [ -z "$fetchps" ]
   then fetchps=0
fi
sleep 10
while [ "$fetchps" -eq "$fetchid"  -a -e "/var/lock/LCK..ttyS0" ]
do
   sleep 20
   fetchps=$(ps --no-headers -o pid -p $fetchid)
   if [ -z "$fetchps" ]
      then fetchps=0
   fi
done
if [ "$fetchps" -ne 0 ]
   then kill $fetchid
fi
# Envoi des messages mis en queue
/usr/sbin/sendmail -q &>/dev/null
sleep 10
mailq=$(/usr/bin/mailq)
while [ "$mailq" != "Mail queue is empty" -a -e "/var/lock/LCK..ttyS0" ]
do
   sleep 20
   mailq=$(/usr/bin/mailq)
done
# On raccroche
/etc/ppp/ppp-off