Sendmail
Connexion à Internet multi-comptes
Partie 2 : Configuration de la messagerie
Partie 2 : Configuration de la messagerie
Configuration de sendmail et fetchmail
Pour que nous puissions recevoir et envoyer des mails en local, il faut configurer [#install_sendmail sendmail] (ou qmail ou autre... mais je ne les connais pas... Si vous utilisez un autre programme que sendmail, adaptez l'article à votre cas).
Pour que notre machine puisse récupérer des mails sur des comptes pop (ceux de votre provider par exemple) il faut configurer [#fetchmail_alamain fetchmail].
Configurer sendmail et fetchmail avec install-sendmail (conseillé)
Récupérer install-sendmail, décompresser l'archive où vous le souhaitez.
On se place dans le répertoire dans lequel on a décompressé install-sendmail et on lance le programme (attention il ne faut pas être root pour lancer ce programme, par compte il faut connaître le mot de passe du root car le script le demande) :
$ cd install-sendmail-xxxxx
$ ./install-sendmail -c
La première chose que l'on vous demande c'est la langue que vous souhaitez utiliser (parmi 8), choisissez le danois si c'est votre langue maternelle ;).
La plupart des questions sont simples (on vous demande le nom de domaine de votre ISP, i.e. internet service provider, etc... toutes choses que vous a fourni votre provider s'il est poli, sinon demandez-les lui !).
- La première question qu'il nous pose : le nom de domaine dont nous souhaitons que tous email en provenance de notre machine aient ? Il faut répondre le nom de domaine que nous préférons, par exemple, moi je préfère free.fr donc je mets : free.fr.
- Ensuite, est-ce que tous les emails sont stockés sur cette machine ? Bien sûr que non, puisqu'ils proviennent de nos deux providers ainsi que de netcourrier qui nous fournit quelques autres adresses. Donc il faut répondre non !
- Voulez vous que votre mail sortant soit expédié par un serveur de mail extérieur ? Et bien oui, nous utiliserons le serveur smtp de notre provider.
- Quel est votre serveur de mail sortant ? Il nous faut mettre ici le nom du serveur smtp de notre provider, pour moi c'est : smtp.free.fr. (pour ceux qui ont lu la suite : c'est ici qu'il faut préciser {MAILHOST})
- Voulez vous mettre les mails dans la file d'attente ? Comme nous ne sommes pas connecté en permanent à internet, nous répondons oui à cette question.
- Êtes vous le serveur de mail d'un serveur local ? Ce pourrait être le cas, mais dans le cadre de cet article, nous supposerons que non.
- Support pour les domaines virtuels, Avez vous besoins de ça ? A vous de voir, mais je ne détaillerai pas cela, donc : non.
- Voulez vous remapper des adresses locales en d'autres ? Comme notre réseau ne fait pas partie d'internet, il faut répondre oui.
- Pour la section 5 de install sendmail, créer les alias que vous souhaiter, la procédure est suffisamment explicite.
- Voulez vous utiliser le support de Fetchmail ? oui nous utiliserons fetchmail pour récupérer les mails venant de l'extérieur (de tous nos comptes pop3).
- La configuration des différents compte pop3 est suffisamment simple pour ne pas être explicitée. Attention toutefois, dans la partie login entrez bien l'adresse email (sans le @isp.fr) correspondant au serveur pop !
- Ensuite install-sendmail génère les fichiers nécessaires à sendmail et fetchmail : .fetchmailrc, access, access.db, sendmail.mc, sendmail.cf et sendmail.cw. Puis il vous demande le mot de passe du root pour les copier où il faut (dans /etc et /root) ainsi que le login du collecteur de mail : vous devez préciser : root car nous allons récupérer les mails de tous les utilisateurs en même temps, et seul le root peut faire ça.
Voilà. Normalement à partir de maintenant, sendmail fonctionne en local. Vous pouvez même (après l'avoir démarré par /etc/rc.d/init.d/sendmail start) essayer d'envoyer un mail à l'un des utilisateur. Vous devez préciser : localhost comme serveur smtp pour votre gestionnaire de courrier.
Configurer sendmail à la main
Pour ceux qui aiment tout faire à la main (les fous ;)), on peut créer soit même tous les fichiers..., voilà le fichier sendmail.mc généré par install-sendmail (c'est une bonne base de départ) commenté (les commentaires sont en italique, et commencent par "dnl") :
divert(-1)
dnl il faut que le générateur de macro sache où trouver les fichiers de configuration :
include(`/usr/lib/sendmail-cf/m4/cf.m4')
dnl comme identifiant (8:12) vous pouvez sans doute mettre ce que vous voulez :
define(`confDEF_USER_ID',``8:12'')
dnl mon pc s'appelle gros.tux, mettez le nom de votre machine
VERSIONID(`gros.tux nodns')
Cwgros.tux localhost
dnl vous utilisez linux oui ou non ?
OSTYPE(`linux')
dnl on n'utilise pas UUCP (c'est antédiluvien)
undefine(`UUCP_RELAY')
dnl quelqu'un connaît bitnet ?
undefine(`BITNET_RELAY')
dnl autant ajouter automatiquement le nom de domaine qui va bien (celui d'un de nos providers)
FEATURE(always_add_domain)
dnl on utilise un fichier d'alias
FEATURE(use_cw_file)
dnl ????
FEATURE(nocanonify)
dnl ????
define(`confAUTO_REBUILD')
dnl ????
define(`confTO_QUEUEWARN', `')
dnl on ne relaie que les hôtes ????
FEATURE(relay_hosts_only)
dnl on utilise un fichier d'alias
define(`confCW_FILE', `-o /etc/mail/sendmail.cw')
dnl ????
define(`confCON_EXPENSIVE', `True')
dnl ????
define(SMTP_MAILER_FLAGS, e)
dnl les accès smtp sont restreint par ce fichier
FEATURE(access_db, `hash -o /etc/mail/access.db')
dnl les domaines génériques sont dans :
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')
dnl on va changer les adresses venant de chez nous par celle de notre provider
FEATURE(redirect)
dnl si y'a pas de nom de domaine c'est :
MASQUERADE_AS(`free.fr')
dnl tous les mails en provenance de gros.tux sont changés
MASQUERADE_DOMAIN(`gros.tux')
dnl tous les mails on a dit !
FEATURE(masquerade_entire_domain)
dnl donc il faut changer l'enveloppe :
FEATURE(masquerade_envelope)
dnl on va utiliser procmail pour trier les mails des utilisateurs :
FEATURE(`local_procmail',`/usr/bin/procmail')
dnl on mail en local
MAILER(local)
dnl en smtp (??)
MAILER(smtp)
dnl et via procmail
MAILER(procmail)
dnl notre serveur de mail relais est : smtp.free.fr
define(RELAY_HOST, smtp:smtp.free.fr)
define(SMART_HOST, smtp:smtp.free.fr)
dnl il utilise TCP/IP ;)
define(RELAY_MAILER, TCP)
dnl cela n'est utile que pour les portables qui ont des adresses parfois insolubles
FEATURE(`accept_unresolvable_domains')
Ce fichier n'est pas utilisable par sendmail. Mais la lecture (et la rédaction) d'un fichier de configuration de sendmail ayant, paraît-il, causé la folie de plusieurs spécialistes de sendmail, je ne vais pas vous l'imposer. Ce fichier sert justement à créer le véritable fichier de configuration de sendmail : sendmail.cf, qui est créé par :
$ m4 sendmail.mc > /etc/sendmail.cf
(enfantin), évidemment install-sendmail fait tous les choix convenables pour nous, mais au cas ou certains choix serait inappropriés, vous savez quoi faire : éditez sendmail.mc (après avoir lu la doc de sendmail) et régénérez sendmail.cf.
Il n'est absolument pas envisageable de créer de toute pièce un fichier /etc/sendmail.cf complet, par compte, on peut envisager de modifier légèrement celui-ci.
Cas de Sendmail 8.11.6
Cette version de sendmail (et peut-être les précédantes mais ça je n'en suis pas sur) permet de ne pas préciser le relai SMTP en mettant dans sendmail.mc la règle :
FEATURE(`relay_based_on_MX')dnl
et d'enlever les règles :
define(RELAY_HOST,...)
define(SMART_HOST,...)
puis en régénérant sendmail.cf par
m4 /usr/share/sendmail-cf/m4/cf.m4 sendmail.mc > sendmail.cf
de cette façon, sendmail se basera sur le champ MX de votre DNS (ie: celui de votre FAI:fournisseur d'accès internet) pour le relai des mails : c'est très utile dans le cas ou vous avez plusieurs fournisseurs d'accès ça évite d'utiliser un script perl pour rechercher/modifier la ligne fautive dans sendmail.mc.
Configuration de fetchmail à la main
La configuration de fetchmail est beaucoup plus compréhensible. Voilà mon fichier /root/.fetchmailrc (commenté, mots de passe remplacés par xxxx) :
# Configuration created Sat Mar 11 11:52:47 2000 by fetchmailconf
# le postmaster c'est postmaster ;),
# en fait dans /etc/aliases, il y a un alias : postmaster -> root
set postmaster "postmaster"
# pour que les erreurs de distributions aillent à l'envoyeur :
set bouncemail
set properties ""
# pour récupérer les mails sur pop.free.fr en pop3 :
poll pop.free.fr with proto POP3
# le nom du compte sur pop.free.fr est "sympa",
# son mot de passe est xxxxx il s'appelle fred sur ce pc :
user "sympa" there with password "xxxxx" is fred here warnings 3600
# on n'accepte pas les mails repérés comme des spams :
antispam 471 571 550 501 554
# un autre compte sur le même serveur pop :
user "machin" there with password "xxxxx" is bibi here warnings 3600
antispam 471 571 550 501 554
# d'autres comptes sur un autre serveur pop
poll mail.netcourrier.com with proto POP3
user "topsympa" there with password "xxxxx" is fred here warnings 3600
antispam 471 571 550 501 554
user "machin" there with password "xxxxx" is bibi here warnings 3600
antispam 471 571 550 501 554
# d'autres comptes sur un autre serveur pop
poll pop.wanadoo.fr with proto POP3
user "sympa1" there with password "xxxxx" is fred here warnings 3600
antispam 471 571 550 501 554
Pour pouvoir utiliser un tel fichier de configuration, il faut impérativement avoir le droit d'écrire dans le compte mail (/var/spool/mail) de tous les utilisateurs indiquer (ici bibi et fred) : le mieux est d'être root, et donc que le fichier ci-dessus soit en fait : /root/.fetchmailrc !
Il est bien entendu possible à chaque utilisateur de se créer un fichier /home/user/.fetchmailrc (même syntaxe) pour récupérer son courrier sur des comptes non connus du root. Mais il devra récupérer lui-même son mail. On pourrait imaginer, à chaque connexion de créer le fichier /root/.fetchmailrc (pour le compte de root) avec les fichiers .fetchmailrc des différents utilisateurs du système, mais cela permettrait à n'importe qui de mettre des mails sur le compte de n'importe qui d'autre... Une autre solution serait d'utiliser "su user -c fetchmail" pour chaque utilisateur, à chaque connexion (sans doute une bonne solution si l'on a beaucoup d'utilisateurs). La solution proposée ici, est pratique si seulement quelques personnes on accès à un serveur (genre : moins de 10).
Pour ceux que install-sendmail rebute, qui veulent configurer fetchmail séparément, ou qui veulent ajouter des comptes pop, il existe un programme de configuration graphique relativement compréhensible : fetchmailconf (pensez à installer le paquetage correspondant).
Utilisation
Sendmail
C'est très simple. Tant que vous n'êtes pas connecté à Internet, tous vos mails sont mis en attente sans que vous ayez rien de particulier à faire. A la connexion, par contre, vous devez envoyez tous les mails en attente en utilisant la commande :
/usr/sbin/sendmail -q
Avant d'utiliser cette commande, vous pouvez vérifier qu'effectivement vous avez des mails en attente par :
mailq
Fetchmail
Pour recevoir les mails des différents comptes pop que vous avez configuré, depuis le compte de root, faites:
fetchmail -v
(l'option -v n'est pas obligatoire, mais elle permet de voir que tout va bien). Et c'est tout.
Conclusion
Évidemment, tout cela n'est pas très pratique. Nous allons voir dans l'[multi3_ipupdown.php3 article suivant] comment automatiser ce que nous venons d'expliquer.
Copyright
Copyright © 30/05/2000, Frédéric Bonnaud
Ce document est publié sous licence Creative Commons Attribution, Partage à l'identique 4.0 : https://creativecommons.org/licenses/by-sa/4.0/ |