Vue d'ensemble
Recherche de mots-clés
Historique
Versions
Catégories
Tous les articles
Deutsch
English
SuSE Linux: Version à partir de 5.0
userdb
que nous présentons ici s'applique surtout aux adresses Email
ayant la forme suivante
<Prénom.Nom@Fournisseur.fr
>. Une résolution
à l'aide des tables normales genericstable
,
virtusertable
et aliases
auquelles
il convient de donner la préférence est souvent ici insatisfaisante
voire impossible.
Depuis SuSE 5.1, tous les fichiers
supplémentaires spécifiques au courrier électronique ont été
déplacés, pour plus de clarté, du répertoire/etc/
vers /etc/mail/
.
Le fichier /etc/aliases
et le fichier de configuration
proprement dit de Sendmail /etc/sendmail.cf
ne sont
pas ici concernés car ils doivent être déterminés avec une option
de compilation ou sont lus directement par d'autres programmes qui
risqueraient de ne pas les retrouver.
Je vais tenter tout au long de cet article de mettre en évidence les
points essentiels. Vous devriez aussi absolument lire le guide
succinct concernant Sendmail sous /etc/mail
.
S'il s'agit uniquement de mettre en place une file d'attente
et s'il n'est pas nécessaire de recourir aux services de la
userdb
, il suffit à partir de SuSE 5.1,
de positionner les variables suivantes dans le fichier
/etc/rc.config
et d'invoquer ensuite
SuSEconfig
:
SMTP="yes" SENDMAIL_TYPE="yes" SENDMAIL_SMARTHOST="mail.provider.de" SENDMAIL_LOCALHOST="localhost" SENDMAIL_RELAY="" SENDMAIL_ARGS="-bd -om" SENDMAIL_EXPENSIVE="yes" SENDMAIL_NOCANONIFY="yes"
userdb
, il est possible d'apporter une extension
appropriée au script de configuration de sendmail
/sbin/conf.d/SuSEconfig.sendmail
. Il convient toutefois
d'agir avec prudence! Certains caractères doivent être masqués!
Depuis la version 8.9.x qui est incluse dans SuSE Linux 6.1,
Sendmail ne permet plus le relayage - cette fonction doit être
explicitement configurée. Pour cela, ajoutez toutes vos adresses
Email, noms d'hôtes et domaines dans /etc/mail/access
,
par exemple sous cette forme:
jules.tartempion@provider.fr OKou dans le fichier
/etc/mail/relay-domains
. Voir aussi
à ce sujet la documentation Sendmail, particulièrement dans le fichier
/usr/share/sendmail/README
.
En outre, Sendmail interroge le serveur de noms de domaines à chaque
envoi de courrier établissant ainsi une connexion. Utilisez la
configuration mentionnée plus haut à l'aide des variables
SENDMAIL_*
de /etc/rc.config
,
ajoutez dans le fichier les lignes marquées d'une croix +
:
FEATURE(\`always_add_domain')dnl + FEATURE(\`accept_unresolvable_domains')dnl + FEATURE(\`accept_unqualified_senders')dnl FEATURE(\`local_procmail')dnlCeci incite Sendmail à ignorer l'expéditeur du message et ne devrait pas être utilisé pour des machines connectées en permanance!
Les préliminaires consistent à éditer le script de démarrage
de Sendmail /sbin/init.d/sendmail
et à supprimer,
s'il est présent, le paramètre "-q30m"
car la
file d'attente serait alors vidée automatiquement toutes les
30 minutes.
à partir de SuSE 5.1 il existe une variable
SENDMAIL_ARGS
dans le fichier /etc/rc.config où les
paramètres de démarrage de Sendmail peuvent être positionnés.
Il convient également d'en tenir compte, sinon (au cas où la
la variable est absente ou vide) les paramètres par défaut du
fichier /sbin/init.d/sendmail
entreront en jeu.
On crée tout d'abord une macro m4
qui représente
un modèle pour le fichier de configuration proprement dit de
Sendmail.
Depuis SuSE 5.1, vous disposez d'un modèle de
macro m4 sous /etc/mail/linux.mc
qui vous permet de réaliser une copie du fichier
(par exemple /etc/mail/linux.smtp-off.mc
) et de la
modifier de la manière mentionnée plus bas. Pour cela, vous
devriez ajouter la ligne avec l'instruction include
au début du fichier.
Vous avez aussi l'alternative d'adapter
directement le script de configuration
/sbin/conf.d/SuSEconfig.sendmail
de telle manière
qu'il puisse s'intégrer automatiquement dans la nouvelle procédure
de configuration adoptée dans la version 5.1.
Jusqu'à la version SuSE Linux 5.0, créez un fichier de
/etc/sendmail.config/cf/linux.smtp-off.mc
avec le
contenu suivant:
include(`../m4/cf.m4') VERSIONID(`linux for smtp-only(offline) setup')dnl OSTYPE(linux)dnl define(`confDEF_USER_ID', `daemon:daemon')dnl define(`confTRUSTED_USERS', `uucp mdom wwwrun')dnl define(`QUEUE_DIR', `/var/mqueue')dnl define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl define(`confSERVICE_SWITCH_FILE',`/etc/service.switch')dnl define(`confUSERDB_SPEC',`/etc/userdb.db')dnl define(`confHOSTS_FILE',`/etc/hosts')dnl define(`confSAFE_QUEUE',`True')dnl define(`confCON_EXPENSIVE',`True')dnl define(`SMTP_MAILER_FLAGS',`e')dnl FEATURE(local_procmail)dnl FEATURE(nocanonify)dnl FEATURE(nouucp)dnl FEATURE(nodns)dnl FEATURE(always_add_domain)dnl FEATURE(masquerade_envelope)dnl MAILER(local)dnl MAILER(procmail)dnl MAILER(smtp)dnlVous pourrez trouver la signification des différents mots-clés dans la documentation. Il n'en sera défini ici que quelques-uns:
confCON_EXPENSIVE
:
SMTP_MAILER_FLAGS
:
confSAFE_QUEUE
:
confUSERDB_SPEC
:
/etc/mail/userdb.db
.
always_add_domain, masquerade_envelope
:
confSERVICE_SWITCH_FILE
:
/etc/mail/service.switch
.
nocanonify, nodns
:
confTRUSTED_USERS
: Avec l'aide de la macro, on génère ici un modèle de configuration ou bien on le convertit vers un format compréhensible pour Sendmail.
Comme jusqu'à la version SuSE 5.0 le modèle SMTP du paquetage Sendmail serait écrasé par celui du CD-ROM, il est judicieux de le sauvegarder auparavant:
mv /etc/sendmail.smtp.cf /etc/sendmail.smtp.cf.SuSEet de créer ensuite un nouveau modèle:
cd /etc/sendmail.config/cf m4 < linux.smtp-off.mc > /etc/sendmail.smtp.cfÀ partir de SuSE 5.1 il est possible de créer directement un modèle (utilisé seulement comme "fallback").
cd /etc/mail/ m4 < linux.smtp-off.mc > /etc/sendmail.smtp.cfIl est en outre nécessaire de désactiver le nouveau mode de configuration afin que le modèle soit pris en compte - on utilise donc le "mode compatibilité". Ceci se fait par le déplacement du script
/sbin/conf.d/SuSEconfig.sendmail
.
/etc/mail/
afin qu'il soit possible de le retrouver
plus tard...:
mv /sbin/conf.d/SuSEconfig.sendmail /etc/mail/
On crée tout d'abord le fichier /etc/service.switch
(ou /etc/mail/service.switch
) avec le contenu suivant
(voir aussi l'article
sendmail avec SMTP mais sans DNS):
hosts files aliases filesUtilisez des
tabulations
pour la séparation.
La phase suivante consiste à créer la base de données servant
à associer les adresses Email aux noms d'utilisateurs locaux
et vice versa. Pour chaque utilisateur, il est défini deux lignes
dans le fichier texte /etc/userdb
/etc/mail/userdb) avec la syntaxe suivante:
:nom de mail
Adresse Email
:maildrop
Nom de login
jules:mailname jules.tartempion@provider.fr jules.tartempion@provider.fr:maildrop julesOn effectue de nouveau une conversion vers un format compréhensible par Sendmail.
makemap btree /etc/userdb.db < /etc/userdbet de façon analogue, à partir de SuSE 5.1:
makemap btree /etc/mail/userdb.db < /etc/mail/userdb
Administration du système -> Modifier le fichier de configurationC'est dans les variables suivantes qu'est déterminé le comportement de Sendmail qui intéresse cet article. J'insère ici directement les valeurs adéquates - vous pouvez voir la définition et les valeurs possibles dans YaST ou sous forme de commentaires dans
/etc/rc.config
:
SENDMAIL_TYPE="smtp"
:
SENDMAIL_SMARTHOST="relay:mail.provider.de"
:
Il est spécifié ici l'hôte du fournisseur qui va recevoir les
messages.
L'ajout relay:
spécifie une messagerie dans la
configuration de Sendmail. Il peut être omis ou être remplacé
aussi par une autre messagerie par exemple smtp:
.
Le nom d'hôte mail.provider.fr
devrait être connu
dans le fichier /etc/hosts
bien qu'il ne soit nécessaire
que pour l'envoi proprement dit des messages.
Il est également possible de spécifier ici le nom du domaine
c'est-à-dire provider.fr
. Il sera demandé le nom du
serveur de messagerie par une requête DNS auprès du serveur de noms
- ceci n'a lieu toutefois qu'au moment de l'envoi définitif.
SENDMAIL_LOCALHOST="localhost"
: localhost
.
SENDMAIL_RELAY=""
:
SMTP="yes"
: =
et "
ne sont évidemment pas spécifiés dans YaST.
Après modification du fichier /etc/rc.config
,
le script de configuration SuSEconfig
devra toujours
être exécuté sinon les nouvelles configurations ne seront pas
prises en compte - YaST le fait automatiquement.
/sbin/init.d/sendmail stop /sbin/init.d/sendmail start
D'abord un petit essai avec Sendmail - bien sûr en tant qu'utilisateur de la Userdb, donc jules:
/usr/sbin/sendmail -bv jules.tartempion@provider.frLa sortie devrait avoir cet aspect:
jules.tartempion@provider.fr... deliverable: mailer relay, host mail.provider.fr,user jules.tartempion@provider.frSi l'on spécifie encore le paramètre -d, on peut voir sendmail se frayer un chemin au travers de la configuration. Il est intéressant de savoir s'il va aussi faire un tour dans la Userdb. Il est facile de le suivre avec
grep
:
/usr/sbin/sendmail -bv -d jules.tartempion@provider.fr | grep udbmatchIl apparaît ce qui suit:
udbmatch(jules, mailname) udbmatch ==> jules.tartempion@provider.frSi cela ne marche pas, il y a une erreur :
go to point I.
;-)
On peut maintenant faire un lancement d'essai. Dans un premier temps,
seul le petit programme mail
ou mailx
devrait être utilisé.
Nous envoyons ici un fichier qui n'a rien de compromettant ou,
dans ce cas particulier, une simple sortie redirigée de
uname -a
.
On redémarre comme utilisateur dont le nom de login a été spécifié dans la Userdb. Nous nous envoyons ici un message à nous-mêmes:
uname -a | mailx -s "TEST Nr.1" jules.tartempion@provider.fr
Cette commande crée dans le répertoire de Sendmail
/var/mqueue
(ou à l'avenir /var/spool/mqueue)
deux fichiers.
Le fichier qui commence par df contient le corps
du message qui est donc notre sortie de uname -a
.
L'autre fichier qui commence par qf
contient par contre
la partie cruciale - les informations d'en-tête.
Les lignes suivantes sont essentielles:
$_jules@localhost Sjules RPFD:jules.tartempion@provider.fr H?P?Return-Path: <jules.tartempion@provider.fr> H?F?From: "Jules T." <jules.tartempion@provider.fr> HTo: jules.tartempion@provider.frSi tout est exact, on peut prendre le risque d'envoyer pour de bon un message ou même plusieurs (le cas échéant après avoir établi une connexion):
sendmail -qDans les fichiers log
/var/log/mail
ou
/var/log/messages
, on peut maintenant trouver
des messages d'état faisant connaître le résultat de
l'envoi. On peut obtenir le message avec le programme
Fetchmail.
Il convient de noter que ce simple programme mail
se prête assez mal à l'expédition s'il est utilisé en relation
avec la Userdb car au moment où la file d'attente est vidée, l'en-tête
du message est apparemment reconverti et comme chemin de retour
(return path) il est enregistré les noms de login et d'hôte locaux.
Il vaudrait donc mieux utiliser un programme de messagerie plus
intelligent comme par exemple xfmail
, pine
,
tkmail
ou même le nouveau programme tkrat
.
Ces programmes sont en mesure de transmettre à sendmail les données
correctes et ce problème n'apparaît pas.
Lorsque l'on utilise certains programmes de messagerie spéciaux,
par exemple pine
, il faut faire savoir aux programmes
qu'ils ne doivent pas remplir eux-même les en-têtes des messages
(la ligne From).
Le plus simple est d'enregistrer localhost
comme
hôte SMTP.
Avec pine 4.x, on peut positionner allow-changing-from
et adapter customized-hdrs
par exemple à:
From: prénom.nom@provider.frpour spécifier l'adresse Email à utiliser.
Il est également possible, comme alternative, de définir les
utilisateurs spécifiés dans la Userdb comme utilisateurs de
confiance.
Ceci peut se faire soit dans la macro m4 avec
confTRUSTED_USERS
, soit dans le fichier
/etc/sendmail.smtp.cf
:
##################### # Trusted users # ##################### # this is equivalent to setting class "t" #Ft/etc/sendmail.ct Troot Tdaemon Tuucp mdom wwwrun TjulesIl n'est guère efficace de modifier soi-même le fichier de configuration Sendmail
/etc/sendmail.cf
car il est recréé à chaque exécution de YaST ou de SuSEconfig
ce qui provoque la perte de toutes les modifications./etc/sendmail.smtp.cf
avec SMTP ou, de façon
analogue, /etc/sendmail.uucp.cf
avec UUCP.
/etc/service.switch
) afin de séparer les colonnes.
Même lorsque ce n'est pas vraiment nécessaire! Dans les cas où elles sont impératives, on recherche très très longtemps l'erreur :-)
Mots-clés: MAIL, SENDMAIL, SMTP, OFFLINE
Catégories:
Linux
, Messagerie
Vue d'ensemble
Recherche de mots-clés
Historique
Versions
Catégories
Tous les articles
Deutsch
English