<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ø Les Carnets Web de Thibaut ø &#187; sendmail</title>
	<atom:link href="http://www.pagasa.net/tag/sendmail/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pagasa.net</link>
	<description>Quand l&#039;espoir vient de l&#039;optimisme</description>
	<lastBuildDate>Fri, 20 Jan 2012 15:57:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Exemple de configuration de Sendmail</title>
		<link>http://www.pagasa.net/exemple-de-configuration-de-sendmail/</link>
		<comments>http://www.pagasa.net/exemple-de-configuration-de-sendmail/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 19:21:50 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[mail]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[Exemple]]></category>
		<category><![CDATA[sendmail]]></category>

		<guid isPermaLink="false">http://mig.pagasa.net/exemple-de-configuration-de-sendmail/</guid>
		<description><![CDATA[Dans cet exemple, nous nous contentons d&#8217;une configuration simple, dans laquelle le serveur SMTP reçoit des messages d&#8217;Internet et du réseau local (192.168.1.0/24). Tous les utilisateurs sont autorisés à envoyer du courrier sur Internet, et le serveur ne gère qu&#8217;un seul domaine, mail.dom.com. Cette architecture correspond à celle d&#8217;une petite entreprise recevant quelques dizaines de [...]]]></description>
			<content:encoded><![CDATA[<p>Dans cet exemple, nous nous contentons d&#8217;une configuration simple, dans laquelle le serveur SMTP reçoit des messages d&#8217;Internet et du réseau local (192.168.1.0/24).<br />
Tous les utilisateurs sont autorisés à envoyer du courrier sur Internet, et le serveur ne gère qu&#8217;un seul domaine, mail.dom.com.<br />
Cette architecture correspond à celle d&#8217;une petite entreprise recevant quelques dizaines de messages électroniques par jour.<br />
La figure ci-dessous illustre la configuration de la messagerie.</p>
<p style="text-align: center">&nbsp;</p>
<p style="text-align: center"><img src="http://www.pagasa.net/mail/exemple-configuration-sendmail.gif" height="100%" width="100%" /></p>
<p>Les adresses électroniques utilisées dans cette organisation correspondent aux comptes des utilisateurs de la machine UNIX mail.dom.com. Ces adresses sont les suivantes :<br />
postmaster@mail.dom.com<br />
jc.charles@mail.dom.com<br />
a.pierre@mail.dom.com</p>
<p>Au vue de l&#8217;organisation du système de messagerie, on suppose que la machine dispose d&#8217;un serveur POP pour les clients du réseau local 192.168.1.0/24.<br />
Pour une telle configuration, nous avons besoin des fichiers suivants dans /etc/mail :<br />
· sendmail.mc<br />
· sendmail.st, créé grâce à # touch sendmail.st<br />
· aliases<br />
· access<br />
· local-host-names ou sendmail.cw</p>
<p>Le fichier sendmail.mc sert à construire le fichier de configuration de Sendmail. Il comporte les éléments suivants :<br />
<strong>divert(-1)<br />
dnl<br />
dnl Configuration élémentaire SMTP<br />
dnl<br />
dnl<br />
divert(0)<br />
include(`/usr/share/sendmail-cf/m4/cf.m4&#8242;)dnl<br />
VERSIONID(`Sendmail pour mail.dom.com&#8217;)dnl<br />
OSTYPE(`linux&#8217;)dnl<br />
define(`confMAX_MESSAGE_SIZE&#8217;, `5000000&#8242;)dnl<br />
define(`STATUS_FILE&#8217;, `/etc/mail/sendmail.st&#8217;)dnl<br />
define(`confDOMAIN_NAME&#8217;, `mail.dom.com&#8217;)dnl<br />
define(`ALIAS_FILE&#8217;, `/etc/mail/aliases&#8217;)dnl<br />
FEATURE(use_cw_file)dnl<br />
FEATURE(`access_db&#8217;,`hash -o /etc/mail/access&#8217;)dnl<br />
FEATURE(always_add_domain)dnl<br />
FEATURE(local_procmail)dnl<br />
MAILER(smtp)dnl</strong></p>
<p>Note : A partir de la version 8.12, vous devez utiliser la syntaxe suivante pour le dispositif access :<br />
<strong>FEATURE(`access_db&#8217;,`hash -T -o /etc/mail/access.db&#8217;)dnl</strong></p>
<p>A partir du fichier sendmail.mc, vous construisez la configuration de Sendmail comme suit :<br />
# cd /etc/mail<br />
# m4 sendmail.mc &gt;sendmail.cf</p>
<p>L&#8217;ordre des instructions M4 a son importance. Terminez toujours par l&#8217;instruction MAILER. Le divert(-1) ignore toutes les lignes qui le suivent, tandis que le divert(0) rétablit le flux standard des sorties. L&#8217;instruction include inclut les macros utilisatrices M4 nécessaires au fonctionnement élémentaire de Sendmail.VERSIONID définit un texte d&#8217;identification, et OSTYPE précise Linux comme système d&#8217;exploitation du serveur. La valeur confMAX_MESSAGE_SIZE est mise à 5 millions. Elle définit la taille maximale des messages transitant sur le relais. Cette valeur est exprimée en octets. Il s&#8217;agit de la taille globale des messages, en-têtes et enveloppes MIME incluses. N&#8217;espérez donc pas transporter une pièce jointe d&#8217;une taille de 5 Mo, et coontentez-vous d&#8217;un peu plus de 4 Mo pour la capacité maximale d&#8217;une pièce jointe.STATUS_FILE précise l&#8217;emplacement du fichier des statistiques de courrier. Ce fichier est utilisable via la commande mailstats. La variable confDOMAIN_NAME définit le nom du serveur. Elle n&#8217;est normalement utilisée que lorsque la machine ne sait pas résoudre son propre nom d&#8217;hôte. Nous ne l&#8217;indiquons que par précaution.</p>
<p>ALIAS_FILE indique l&#8217;emplacement du fichier des aliases. Comme vous trouverez souvent ce fichier dans /etc/, il est préférable de le mettre dans /etc/mail de façon à tout regrouper dans le même répertoire. L&#8217;instruction use_cw_file précise qu&#8217;il faut utiliser le fichier local-host-names pour référencer les nom de domaines locaux.</p>
<p>Le dispositif access_db incorpore les autorisations de relayage à la configuration de Sendmail. Cette base comprend les machines et réseaux autorisés à utiliser le serveur SMTP. Il est donc nécessaire de construire une base de données access.db à partir d.un fichier texte access. Des explications détaillées à ce sujet sont fournies plus loin dans ce chapitre. L&#8217;instruction always_add_domain ajoute le nom du domaine à une adresse, même si celle-ci est livrée localement. Cela se révèle particulièrement pratique pour le courrier généré directement depuis le serveur. FEATURE(local_procmail) demande l&#8217;utilisation de procmail comme agent de livraison local, qui est normalement la configuration par défaut.</p>
<p>MAILER(smtp) indique que vous utilisez le gestionnaire de courrier SMTP. Cette commande doit être la dernière du fichier mc car elle contient des instructions qui remplacent le contenu de certaines des commandes précédentes.</p>
<p>Le fichier aliases sert à faire la correspondance entre les adresses électroniques et le compte UNIX. Il contient les éléments suivants :<br />
postmaster: root<br />
MAILER-DAEMON: root<br />
postmaster@mail.dom.com: root<br />
jc.charles@mail.dom.com: charles<br />
a.pierre@mail.dom.com: pierre<br />
tous: root,charles,pierre</p>
<p>La base aliases.db est construite grâce à /usr/sbin/sendmail -bi -v ou la commande newaliases. A partir du moment où un utilisateur dispose d&#8217;un compte sur la machine, il dispose d&#8217;une adresse électronique de la forme login@fqdn. Par exemple, root@mail.dom.com.</p>
<p>Il est intéressant de créer des aliases, ou synonymes, pour des raisons de clarté ou de simplicité. Les messages système sont toujours redirigés vers le compte superutilisateur root. L&#8217;utilisateur charles dispose de deux adresses e-mail, charles@mail.dom.com, correspondant à sa boîte aux lettres physique, et son synonyme jc.charles@mail.dom.com, plus précis. L&#8217;utilisateur pierre obéit au même schéma.</p>
<p>Finalement, l&#8217;alias tous pointe vers tous les comptes utilisateur du serveur. Cela simplifie grandement l&#8217;envoi groupé. Un message envoyé à tous@mail.dom.com est reçu par l&#8217;ensemble des utilisateurs du serveur.</p>
<p>Le fichier local-host-names définit le domaine de messagerie local, ici mail.dom.com. L&#8217;entrée ci-dessous est insérée dans le fichier local-host-names :<br />
mail.dom.com</p>
<p>Les messages à destination de ce domaine sont délivrés localement via l&#8217;agent de livraison procmail. Pour utiliser ce fichier, il faut disposer de l&#8217;instruction FEATURE(use_cw_file) dans le fichier mc.<br />
Si vous souhaitez gérer la totalité du domaine dom.com, il vous suffit d&#8217;ajouter l&#8217;entrée suivante dans local-host-names :<br />
dom.com</p>
<p>Lorsque vous modifiez ce fichier, vous devez faire relire à Sendmail sa configuration :</p>
<p># kill -HUP `head -1 /var/run/sendmail.pid`</p>
<p>Les anciennes versions de Sendmail utilisent à la place de local-host-names le nom de fichier suivant : sendmail.cw</p>
<p>Pour des raisons de compatibilité, il est parfois utile de conserver ce nom. Il suffit pour cela d&#8217;insérer l&#8217;instruction suivante dans le fichier mc :<br />
<strong> define(`confCW_FILE&#8217;,`/etc/mail/sendmail.cw&#8217;)dnl</strong></p>
<p>N&#8217;oubliez pas de reconstruire le fichier sendmail.cf après modification du fichier mc ni de faire relire à Sendmail sa configuration.</p>
<p>Le fichier access contient la liste des machines et réseaux autorisés à utiliser le serveur SMTP comme relais. Les entrées ci-dessous sont insérées dans ce fichier :<br />
127.0.0.1 RELAY<br />
192.168.1 RELAY<br />
localhost RELAY<br />
localhost.localdomain RELAY</p>
<p>Ce fichier permet de construire la base à accès calculé access.db :<br />
# makemap -v hash access.db &lt;access</p>
<p>Dans le fichier access, vous trouvez la machine locale sous ses trois formes : l&#8217;adresse IP, le nom d&#8217;hôte et le FQDN (Fully Qualified Domain Name). La plupart du temps, il est recommandé d&#8217;autoriser la machine locale à utiliser le serveur SMTP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pagasa.net/exemple-de-configuration-de-sendmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Livre sur Sendmail en francais</title>
		<link>http://www.pagasa.net/livre-sur-sendmail-en-francais/</link>
		<comments>http://www.pagasa.net/livre-sur-sendmail-en-francais/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 21:00:15 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[mail]]></category>
		<category><![CDATA[francais]]></category>
		<category><![CDATA[livre]]></category>
		<category><![CDATA[sendmail]]></category>

		<guid isPermaLink="false">http://mig.pagasa.net/2007/12/13/livre-sur-sendmail-en-francais/</guid>
		<description><![CDATA[Ma première rencontre avec Sendmail remonte alors que je dirigeais le support Internet chez Completel. A l&#8217;époque, la seule véritable référence sur Sendmail était le &#171;&#160;Bat Book&#160;&#187; de Brian Costales, un pavé de plus de 600 pages, certes fort intéressant, mais pas à la portée du premier venue. A côté traînaient deux autres ouvrages dont [...]]]></description>
			<content:encoded><![CDATA[<p>Ma première rencontre avec Sendmail remonte alors que je dirigeais le support Internet chez <a href="http://www.completel.fr/" target="_blank">Completel</a>. A l&#8217;époque, la seule véritable référence sur Sendmail était le &laquo;&nbsp;<a href="http://www.amazon.fr/exec/obidos/redirect?link_code=ur2&amp;tag=pagasa-21&amp;camp=1642&amp;creative=6746&amp;path=ASIN%2F1565928393%2Fqid%3D1152370564%2Fsr%3D1-4%2Fref%3Dsr_1_0_4">Bat Book</a><img src="http://www.assoc-amazon.fr/e/ir?t=pagasa-21&amp;l=ur2&amp;o=8" style="border: medium none  ! important; margin: 0px ! important" border="0" height="1" width="1" />&nbsp;&raquo; de Brian Costales, un pavé de plus de 600 pages, certes fort intéressant, mais pas à la portée du premier venue.</p>
<p>A côté traînaient deux autres ouvrages dont j&#8217;ai oublié le nom mais comme d&#8217;habitude, rien en français. C&#8217;est sur ce constat que j&#8217;ai commencé à jeter les bases de mon livre ; un logiciel qui transporte plus de la moitié des emails sur Internet se devait d&#8217;avoir un minimum de documentation en français.</p>
<p>Il m&#8217;a fallu plus d&#8217;un an et demie pour y arriver, avec ces hauts et ces bas, ses interminables relectures avec mon éditeur, ces passages que personne ne comprenaient, la difficulté à y inculquer un peu de marketing, etc.</p>
<p>Une partie a été écrite dans le TGV entre Lyon et Paris, alors que je me rendais à ma réunion mensuelle des responsables techniques dans un des datacenters parisiens. Je ne remercierai jamais assez la SNCF pour cela :-)</p>
<p>Après des mois d&#8217;efforts, le livre est sorti en février 2003 à 2000 exemplaires. 3 ans plus tard, il continue de se vendre, certes modestement, mais finalement ce genre d&#8217;ouvrage étant réservé à un public de spécialistes, il ne connaîtra jamais un succès immense.</p>
<p>Ecrire un livre est une expérience fabuleuse, mais très difficile : il faut être tenace, se plier aux directives d&#8217;un éditeur et finalement, cela ne rapporte pas beaucoup d&#8217;argent ; mais peu importe, c&#8217;est un grand projet dans une vie, une fierté aussi pour ses proches et c&#8217;est amusant d&#8217;entendre quelqu&#8217;un vous dire qu&#8217;il vous a trouvé un homonyme sur Internet &laquo;&nbsp;qui a écrit un livre sur Sendmail.&nbsp;&raquo;</p>
<p>Voici ce fameux livre:</p>
<p><center> <iframe src="http://rcm-fr.amazon.fr/e/cm?t=pagasa-21&amp;o=8&amp;p=8&amp;l=as1&amp;asins=2212112629&amp;=1&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;lc1=0000ff&amp;bc1=000000&amp;bg1=ffffff&amp;f=ifr" style="width: 120px; height: 240px" marginwidth="0" marginheight="0" frameborder="0" scrolling="no"></iframe> </center></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pagasa.net/livre-sur-sendmail-en-francais/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation de Sendmail par compilation</title>
		<link>http://www.pagasa.net/installation-de-sendmail-par-compilation/</link>
		<comments>http://www.pagasa.net/installation-de-sendmail-par-compilation/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 20:58:47 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[mail]]></category>
		<category><![CDATA[compilation]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://mig.pagasa.net/2007/12/13/installation-de-sendmail-par-compilation/</guid>
		<description><![CDATA[Pour installer rapidement Sendmail, vous devez d&#8217;abord vous procurez ses sources sur le site FTP de Sendmail : ftp.sendmail.org. Commencez par établir une connexion anonyme sur ftp.sendmail.org : ftp ftp.sendmail.org Connected to ftp.sendmail.org (209.246.26.22). 220 services.sendmail.org FTP server (Version 6.00LS) ready. Name (ftp.sendmail.org:stm): anonymous 331 Guest login ok, send your email address as password. Password: [...]]]></description>
			<content:encoded><![CDATA[<p>Pour installer rapidement Sendmail, vous devez d&#8217;abord vous procurez ses sources sur le site FTP de Sendmail : <a href="ftp://ftp.sendmail.org/" target="_blank">ftp.sendmail.org</a>.<br />
Commencez par établir une connexion anonyme sur ftp.sendmail.org :<br />
<strong>ftp ftp.sendmail.org<br />
Connected to ftp.sendmail.org (209.246.26.22).<br />
220 services.sendmail.org FTP server (Version 6.00LS) ready.<br />
Name (ftp.sendmail.org:stm): anonymous<br />
331 Guest login ok, send your email address as password.<br />
Password:<br />
230 Guest login ok, access restrictions apply.<br />
Remote system type is UNIX.<br />
Using binary mode to transfer files.<br />
ftp&gt;<br />
</strong><br />
Les sources de Sendmail se trouvent dans le répertoire /pub/sendmail :<br />
<strong> ftp&gt; cd pub/sendmail<br />
250 CWD command successful.<br />
ftp&gt;<br />
</strong><br />
Ce répertoire contient toutes les archives de Sendmail :<br />
<strong> ls -la<br />
-rw-r&#8211;r&#8211;  1 ca        sendmail  2702118 Jan 18  2004 sendmail.8.12.11.tar.Z<br />
-rw-r&#8211;r&#8211;  1 ca        sendmail      152 Jan 18  2004 sendmail.8.12.11.tar.Z.sig<br />
-rw-r&#8211;r&#8211;  1 ca        sendmail  1899112 Jan 18  2004 sendmail.8.12.11.tar.gz<br />
-rw-r&#8211;r&#8211;  1 ca        sendmail      152 Jan 18  2004 sendmail.8.12.11.tar.gz.sig<br />
-rw-r&#8211;r&#8211;  1 ca        sendmail  2839169 Mar 22 15:59 sendmail.8.13.6.tar.Z<br />
-rw-r&#8211;r&#8211;  1 ca        sendmail      152 Mar 22 15:59 sendmail.8.13.6.tar.Z.sig<br />
-rw-r&#8211;r&#8211;  1 ca        sendmail  1986576 Mar 22 15:59 sendmail.8.13.6.tar.gz<br />
-rw-r&#8211;r&#8211;  1 ca        sendmail      152 Mar 22 15:59 sendmail.8.13.6.tar.gz.sig<br />
-rw-r&#8211;r&#8211;  1 ca        sendmail  2897025 Jun  5 23:06 sendmail.8.13.7.tar.Z<br />
-rw-r&#8211;r&#8211;  1 ca        sendmail      152 Jun 14 03:12 sendmail.8.13.7.tar.Z.sig<br />
-rw-r&#8211;r&#8211;  1 ca        sendmail  2010008 Jun  5 22:53 sendmail.8.13.7.tar.gz<br />
-rw-r&#8211;r&#8211;  1 ca        sendmail      152 Jun 14 03:12 sendmail.8.13.7.tar.gz.sig<br />
</strong><br />
Récupérez la version qui vous intéresse. Ici, nous utiliserons la version 8.13.7 :<br />
<strong> ftp&gt; bin i<br />
200 Type set to I.<br />
ftp&gt; get sendmail.8.11.6.tar.gz<br />
local: sendmail.8.11.6.tar.gz remote: sendmail.8.13.7.tar.gz<br />
227 Entering Passive Mode (209,246,26,22,193,71)<br />
150 Opening BINARY mode data connection for &#8216;sendmail.8.13.7.tar.gz&#8217; (2010008 bytes).<br />
226 Transfer complete.<br />
2010008 bytes received in 7.17 secs (1.9e+02 Kbytes/sec)<br />
</strong><br />
Une fois l&#8217;archive récupérée, vous pouvez quitter la session FTP :<br />
<strong>   ftp&gt; quit<br />
221 Goodbye.<br />
</strong><br />
Décompressez l&#8217;archive :<br />
<strong>    # tar xvfz sendmail.8.11.6.tar.gz<br />
sendmail-8.13.7/<br />
sendmail-8.13.7/Makefile<br />
sendmail-8.13.7Build<br />
sendmail-8.13.7/FAQ<br />
sendmail-8.13.7/INSTALL<br />
sendmail-8.13.7/KNOWNBUGS<br />
sendmail-8.13.7/LICENSE<br />
sendmail-8.13.7/PGPKEYS<br />
sendmail-8.13.7/README<br />
sendmail-8.13.7/RELEASE_NOTES<br />
sendmail-8.13.7/devtools/<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.<br />
</strong><br />
Allez dans le répertoire de Sendmail :<br />
<strong>   # cd sendmail-8.13.7/<br />
</strong><br />
La compilation de Sendmail se fait au moyen de l&#8217;instruction « sh Build ». Prenez garde à ne pas lancer la commande classique de compilation make, et faites attention au « B » majuscule de Build :<br />
<strong>    # sh Build<br />
Making all in:<br />
/tmp/sendmail-8.13.7/libsmutil<br />
Configuration: pfx=, os=Linux, rel=2.4.9-34, rbase=2, rroot=2.4, arch=i586, sfx=, variant=optimized<br />
Using M4=/usr/bin/m4<br />
Creating ../obj.Linux.2.4.9-34.i586/libsmutil using ../devtools/OS/Linux<br />
Making dependencies in ../obj.Linux.2.4.9-34.i586/libsmutil<br />
make[1]: Entre dans le répertoire `/tmp/sendmail-8.13.7/obj.Linux.2.4.9-34.i586/libsmutil&#8217;<br />
cc -M -I. -I../../sendmail -I../../include -DNOT_SENDMAIL debug.c errstring.c lockfile.c safefile.c snprintf.c strl.c &gt;&gt; Makefile<br />
make[1]: Quitte le répertoire `/tmp/sendmail-8.13.7/obj.Linux.2.4.9-34.i586/libsmutil&#8217;<br />
Making in ../obj.Linux.2.4.9-34.i586/libsmutil<br />
make[1]: Entre dans le répertoire `/tmp/sendmail-8.13.7/obj.Linux.2.4.9-34.i586/libsmutil&#8217;<br />
cc -O -I. -I../../sendmail   -I../../include  -DNOT_SENDMAIL -c -o debug.o debug.c<br />
</strong><br />
Si vous obtenez des erreurs sur le répertoire libsmdb, cela signifie soit que vous n&#8217;avez pas installé les bibliothèques DB de Berkeley, soit qu&#8217;elles existent bien mais que le processus de compilation n&#8217;arrive pas à les localiser. Dans ce cas, utilisez la commande de compilation suivante :<br />
<strong>   # sh Build -c -I/usr/local/BerkeleyDB.3.1/include -L/usr/local/BerkeleyDB.3.1/lib </strong></p>
<p>Remarque:<br />
Les chemins et numéros de version peuvent varier d&#8217;un environnement à un autre.<br />
Installez maintenant Sendmail au moyen de l&#8217;instruction « sh Build install » :<br />
<strong>   # sh Build install<br />
Making all in:<br />
/tmp/sendmail-8.13.7/libsmutil<br />
Configuration: pfx=, os=Linux, rel=2.4.18-3, rbase=2, rroot=2.4, arch=i686, sfx=, variant=optimized<br />
Making in ../obj.Linux.2.4.18-3.i686/libsmutil<br />
make[1]: Entre dans le répertoire `/tmp/sendmail-8.13.7/obj.Linux.2.4.18-3.i686/libsmutil&#8217;<br />
cc -O -I. -I../../sendmail   -I../../include  -DNOT_SENDMAIL -c -o debug.o debug.c<br />
</strong><br />
Les programmes sont installés. Il vous reste à construire une configuration minimale qui vous permettra de faire fonctionner Sendmail. Cette configuration se place dans le répertoire /etc/mail :<br />
<strong>  # mkdir /etc/mail<br />
</strong><br />
Des fichiers de configuration préconstruits sont fournis avec l&#8217;archive de Sendmail. Ils sont placés dans le répertoire /cf/cf. Prenez, par exemple, le fichier generic-linux.cf, puis placez-le dans le répertoire /etc/mail, et renommez-le sendmail.cf de façon qu&#8217;il soit interprété par Sendmail :<br />
<strong>   # cd cf/cf<br />
# cp generic-linux.cf /etc/mail/<br />
# cd /etc/mail<br />
# mv generic-linux.cf sendmail.cf<br />
</strong><br />
Toujours dans le répertoire /etc/mail, créez un fichier aliases élémentaire :<br />
<strong>    mailer-daemon:  postmaster<br />
posmaster : root<br />
</strong><br />
Indexez ce fichier de la façon suivante :<br />
<strong>  # /usr/sbin/sendmail -bi -v  </strong></p>
<p>Créez la file d&#8217;attente dans laquelle seront déposés tous les messages de Sendmail :<br />
<strong>  # mkdir /var/spool/mqueue </strong></p>
<p>Démarrez Sendmail comme suit :<br />
<strong>  # /usr/sbin/sendmail -bd -q15m   </strong></p>
<p>Sendmail est désormais prêt à fonctionner, avec un minimum de fonctionnalités.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pagasa.net/installation-de-sendmail-par-compilation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation d&#8217;un Sendmail chrooté</title>
		<link>http://www.pagasa.net/installation-dun-sendmail-chroote/</link>
		<comments>http://www.pagasa.net/installation-dun-sendmail-chroote/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 20:57:49 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[mail]]></category>
		<category><![CDATA[chroot]]></category>
		<category><![CDATA[proteger]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[sendmail]]></category>

		<guid isPermaLink="false">http://mig.pagasa.net/2007/12/13/installation-dun-sendmail-chroote/</guid>
		<description><![CDATA[Les étapes qui suivent détaillent l&#8217;installation d&#8217;un Sendmail chrooté. Récupérez l&#8217;archive de Sendmail (ici la version 8.13.7), et placez-la, par exemple, dans /usr/src. Décompactez l&#8217;archive par : # gzip -dc sendmail.8.13.7.tar.gz &#124; tar xvf - # cd sendmail-8.13.7 Installez Sendmail de façon conventionnelle : # sh Build # sh Build install Une fois Sendmail installé, [...]]]></description>
			<content:encoded><![CDATA[<p>Les étapes qui suivent détaillent l&#8217;installation d&#8217;un Sendmail chrooté.<br />
Récupérez l&#8217;archive de Sendmail (ici la version 8.13.7), et placez-la, par exemple, dans /usr/src.<br />
Décompactez l&#8217;archive par :<br />
<strong> # gzip -dc sendmail.8.13.7.tar.gz | tar xvf -<br />
# cd sendmail-8.13.7<br />
</strong><br />
Installez Sendmail de façon conventionnelle :<br />
<strong> # sh Build<br />
# sh Build install<br />
</strong><br />
Une fois Sendmail installé, lancez la création du sous-environnement :<br />
<strong> # mkdir /sendmail </strong></p>
<p>Sendmail va tourner dans le sous-environnement que vous allez créer dans le répertoire /sendmail, et aucun autre répertoire ne sera visible à l&#8217;extérieur de ce dernier.<br />
Il vous faut maintenant fournir les éléments vitaux au logiciel (bibliothèques, répertoires, fichiers, etc.). Vous devez pour cela créer des fichiers physiques, car les liens symboliques sont proscrits car ils ne peuvent sortir du répertoire prison /sendmail :<br />
<strong>  # cd /sendmail<br />
# mkdir usr<br />
# mkdir usr/sbin<br />
</strong><br />
Sendmail est enfermé dans sa prison, avec des droits restreints :<br />
<strong> # cp /usr/sbin/sendmail /sendmail/usr/sbin<br />
# chown 0:0 /sendmail/usr/sbin/sendmail<br />
# chmod 500 /sendmail/usr/sbin/sendmail<br />
</strong><br />
Des applications, telles que les serveurs Web, utilisent divers raccourcis pour accéder à Sendmail. Vous devez donc créer ces raccourcis :<br />
<strong> # mkdir /sendmail/lib  # cd /sendmail/lib<br />
# ln -s ../sbin/sendmail sendmail<br />
# mkdir /sendmail/bin<br />
# cd /sendmail/bin<br />
# ln -s ../sbin/sendmail sendmail<br />
</strong><br />
Fournissez maintenant à Sendmail les programmes annexes dont il a besoin, en commençant par extraire les bibliothèques dynamiques qu&#8217;il utilise :<br />
<strong> # ldd /sendmail/usr/sbin/sendmail<br />
libdb.so.3 =&gt;      /lib/libdb.so.3 (0&#215;40016000)<br />
libresolv.so.2 =&gt; /lib/libresolv.so.2 (0x4004f000)<br />
libcrypt.so.1 =&gt; /lib/libcrypt.so.1 (0x4005d000)<br />
libnsl.so.1 =&gt; /lib/libnsl.so.1 (0&#215;40060000)<br />
libdl.so.2 =&gt; /lib/libdl.so.2 (0&#215;40075000)<br />
libc.so.6 =&gt; /lib/libc.so.6 (0&#215;40078000)<br />
/lib/ld-linux.so.2 =&gt; /lib/ld-linux.so.2 (0&#215;40000000)<br />
</strong><br />
Le résultat peut varier suivant les options de compilation et les versions des noyaux :<br />
<strong> # cd /sendmail/lib<br />
# cp /lib/libdb.so.3 .<br />
# cp /lib/libresolv.so.2 .<br />
# cp /lib/libcrypt.so.1 .<br />
# cp /lib/libnsl.so.1 .<br />
# cp /lib/libdl.so.2 .<br />
# cp /lib/libc.so.6 .<br />
# cp /lib/ld-linux.so.2 .<br />
</strong><br />
Créez la file d&#8217;attente :<br />
<strong> # mkdir /sendmail/var<br />
# mkdir /sendmail/var/spool<br />
# mkdir /sendmail/var/spool/mqueue<br />
# chmod 700 /sendmail/var/spool/mqueue<br />
</strong><br />
Créez le répertoire /var/run pour que Sendmail y place son numéro de processus  (sendmail.pid) :<br />
<strong> # mkdir /sendmail/var/run  </strong></p>
<p><strong># touch /sendmail/var/run/sendmail.pid </strong></p>
<p>Ajoutez l&#8217;unité /dev/null, dont Sendmail a besoin en interne :<br />
<strong>  # mkdir /sendmail/dev<br />
# mknod /sendmail/dev/null c 1 3<br />
# chown 0:0 /sendmail/dev/null<br />
# chmod 666 /sendmail/dev/null<br />
</strong><br />
La définition du noeud (c 1 3) n&#8217;est valable que sous Linux.<br />
Pour écrire ses historiques, Sendmail communique avec syslog via un socket. Vous devez donc créer ce dernière dans l&#8217;environnement chroot :<br />
<strong>  # /usr/sbin/syslogd -m 0 -p /sendmail/dev/log<br />
</strong><br />
L&#8217;emplacement de syslogd peut différer d&#8217;un système à un autre. Prenez garde à n&#8217;avoir qu&#8217;une seule instance de syslogd dans le système.</p>
<p>A ce stade, vous devez régler le délicat problème de la résolution de noms. Sendmail ne peut fonctionner correctement sans cette résolution. Cette configuration s&#8217;effectue dans le répertoire /etc :<br />
<strong> # mkdir /sendmail/etc<br />
</strong><br />
Créez le fichier d&#8217;aiguillage des services (etc/nsswitch.conf) de façon à renseigner l&#8217;emplacement des fichiers, indispensables à la résolution de noms. Le contenu du fichier /sendmail/etc/nsswitch.conf est le suivant :<br />
<strong> services:   files<br />
</strong><br />
La ligne services renseigne le fichier etc/services, lequel contient la corrélation entre un numéro de port TCP ou UDP et le nom usuel du service.<br />
Pour utiliser ce dispositif, vous devez pouvoir accéder à la bibliothèque libnss_files-2.2.2.so :<br />
<strong> # cd /sendmail/lib<br />
# cp /lib/libnss_files-2.2.2.so .<br />
</strong><br />
Cette bibliothèque est généralement appelée via un autre nom, libnss_files.so.2 :<br />
<strong>  # ln -s libnss_files-2.2.2.so libnss_files.so.2<br />
</strong><br />
Voici la bibliothèque nécessaire à la résolution de noms (DNS) :<br />
<strong> # cp /lib/libnss_dns.so.2 .<br />
</strong>/<br />
et le fichier /sendmail/etc/services :<br />
<strong>  smtp            25/tcp          mail </strong></p>
<p>Puisque le chroot concerne uniquement SMTP, seule cette ligne est nécessaire.<br />
Voici enfin le fichier du client DNS etc/resolv.conf :<br />
<strong> nameserver 127.0.0.1<br />
</strong><br />
Nous supposons ici que vous disposez d&#8217;un serveur DNS local (127.0.0.1). Il est recommandé de mettre celui de votre FAI, car cela simplifie grandement la configuration de votre serveur.<br />
Pour le répertoire /etc/mail contenant les données de configuration, vous disposez d.une alternative :<br />
· Placer les bases de données et le fichier de configuration dans /sendmail/etc/mail par le biais d&#8217;un petit script exécuté à chaque modification du paramétrage. De cette façon, vous isolez et sécurisez les fichiers source (alias, access, etc.) et le fichier mc dans l&#8217;environnement primaire.<br />
·          Créer un lien de /etc/mail vers /sendmail/etc/mail, exposant ainsi les fichiers source dans l&#8217;environnement chroot.<br />
Choisissez ici la seconde possibilité, la plus commode :<br />
<strong> # mkdir /sendmail/etc/mail<br />
# ln -s /sendmail/etc/mail /etc/mail<br />
</strong><br />
Voici le fichier d&#8217;état de Sendmail, sendmail.st :<br />
<strong> # touch /etc/mail/sendmail.st<br />
</strong><br />
et un très simple fichier mc :<br />
<strong> include(`/usr/lib/sendmail-cf/m4/cf.m4&#8242;)<br />
VERSIONID(`Sendmail chrooté <tm-14>&#8216;)dnl<br />
OSTYPE(`linux&#8217;)dnl<br />
define(`confMAX_MESSAGE_SIZE&#8217;, `5000000&#8242;)dnl<br />
define(`STATUS_FILE&#8217;, `/etc/mail/sendmail.st&#8217;)dnl<br />
define(`confDOMAIN_NAME&#8217;, `monserveur.com&#8217;)dnl<br />
define(`ALIAS_FILE&#8217;, `/etc/mail/aliases&#8217;)dnl<br />
define(`SMART_HOST&#8217;,`smtp.monfai.com&#8217;)dnl<br />
define(`confLOG_LEVEL&#8217;,`14&#8242;)dnl<br />
define(`confSEPARATE_PROC&#8217;,`true&#8217;)dnl<br />
FEATURE(`access_db&#8217;,`hash -o /etc/mail/access&#8217;)dnl<br />
FEATURE(always_add_domain)dnl<br />
MAILER(smtp)dnl<br />
</tm-14></strong><br />
qui vous permet de construire votre sendmail.cf :<br />
<strong>  # m4 sendmail.mc &gt;sendmail.cf<br />
</strong><br />
Le niveau d&#8217;enregistrement des événements a été fixé à 14 (define(`confLOG_LEVEL&#8217;,`14&#8242;)). Cette valeur est particulièrement élevée afin de repérer les éventuelles erreurs. Dans cette configuration, tout le courrier est expédié vers le serveur de votre FAI, smtp.fai.com.<br />
Voici le fichier /etc/mail/aliases :<br />
<strong>  MAILER-DAEMON:          postmaster<br />
postmaster:             root<br />
bin:                    root<br />
daemon:                 root<br />
nobody:                 root<br />
system:                 root<br />
root:          monemail@monadresse.com<br />
</strong><br />
que vous créez de la façon suivante :<br />
<strong>  # chroot /sendmail /usr/sbin/sendmail -bi -v</strong></p>
<p>Le root est en fait un alias vers une autre adresse e-mail. Sur le serveur chrooté, vous n&#8217;acceptez, par commodité, aucune livraison de courrier (voir plus haut).<br />
Voici le fichier /etc/mail/access correspondant, qui contrôle les adresses autorisées à utiliser le relais :<br />
<strong>  127.0.0.1               RELAY<br />
10                      RELAY<br />
localhost               RELAY<br />
localhost.localdomain   RELAY<br />
</strong><br />
que vous créez de la manière suivante :<br />
<strong>  # makemap -v hash access.db &lt;access</strong></p>
<p>Seule la machine locale et le réseau IP 10.0.0.0 sont autorisés à utiliser le relais SMTP.<br />
Démarrez Sendmail :<br />
<strong>  # chroot /sendmail /usr/sbin/sendmail -bd -q15m<br />
</strong><br />
Le serveur doit maintenant fonctionner correctement.<br />
L&#8217;utilitaire strace est recommandé pour la mise au point d&#8217;un Sendmail chrooté. Il permet notamment de déterminer les fichiers et bibliothèques manquants.<br />
Désormais, vous disposez d&#8217;un Sendmail parfaitement sécurisé, enfermé dans une prison logique.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pagasa.net/installation-dun-sendmail-chroote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guide de dépannage de Sendmail</title>
		<link>http://www.pagasa.net/guide-de-depannage-de-sendmail/</link>
		<comments>http://www.pagasa.net/guide-de-depannage-de-sendmail/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 20:57:08 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[mail]]></category>
		<category><![CDATA[depannage]]></category>
		<category><![CDATA[depanner]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[probleme]]></category>
		<category><![CDATA[resoudre]]></category>
		<category><![CDATA[sendmail]]></category>

		<guid isPermaLink="false">http://mig.pagasa.net/2007/12/13/guide-de-depannage-de-sendmail/</guid>
		<description><![CDATA[Ce petit guide vous propose de résoudre sous forme de FAQ quelques problèmes fréquents rencontrés lors de l&#8217;utilisation de Sendmail. Question. Lorsque je lance Sendmail en ligne de commandes, j&#8217;obtiens le message ci-dessous. Pourquoi ? daemon invoked without full pathname; kill -1 won&#8217;t work Réponse. Sendmail est exécuté sans précision de chemin d&#8217;accès. En conséquence, [...]]]></description>
			<content:encoded><![CDATA[<p>Ce petit guide vous propose de résoudre sous forme de FAQ quelques problèmes fréquents rencontrés lors de l&#8217;utilisation de <strong>Sendmail</strong>.</p>
<p><u>Question.</u> Lorsque je lance <strong>Sendmail</strong> en ligne de commandes, j&#8217;obtiens le message ci-dessous. Pourquoi ?<br />
<em>daemon invoked without full pathname; kill -1 won&#8217;t work</em></p>
<p><u>Réponse.</u> <strong>Sendmail</strong> est exécuté sans précision de chemin d&#8217;accès. En conséquence, il n&#8217;est pas possible de lui faire déterminer l&#8217;emplacement de son fichier de configuration sendmail.cf. Une tentative de relecture de sa configuration échoue donc. Pour résoudre ce problème, il faut exécuter <strong>Sendmail</strong> en lui précisant son chemin d&#8217;accès absolu :<br />
<strong># /usr/sbin/sendmail -bd -q15m</strong></p>
<p><u>Question.</u> <strong>Sendmail</strong> affiche le message ci-dessous. Pourquoi ?<br />
<em>Jun 21 01:00:47 localhost sendmail[28920]: gethostbyaddr(192.168.1.2) failed: 1</em></p>
<p><u>Réponse.</u> <strong>Sendmail</strong> n&#8217;arrive pas à résoudre l&#8217;adresse locale. Si vous disposez d&#8217;un DNS local, il suffit de renseigner cette adresse :<br />
<strong>mon-serveur-smtp  IN    A      192.168.1.2</strong></p>
<p>Sinon, codez l&#8217;adresse dans le fichier /etc/hosts avec le nom de la machine locale :<br />
<strong>192.168.1.2             localhost.localdomain</strong></p>
<p><u>Question.</u> <strong>Sendmail</strong> affiche le message ci-dessous. Pourquoi ?<br />
<em>Feb 9 04:04:57 s5b sendmail[31844]: h1934vO31844: ruleset=check_rcpt, arg1=&lt;toto@toto.com&gt;, relay=192.168.0.2 [195.242.86.240], reject=550 5.7.1 &lt;toto@toto.com&gt;&#8230; Relaying denied</em></p>
<p><u>Réponse.</u> L&#8217;utilisateur n&#8217;est pas autorisé à utiliser <strong>Sendmail</strong> comme relais. Pour l&#8217;autoriser, il suffit de renseigner le fichier /etc/mail/access:<br />
<strong>192.168.0.2  RELAY<br />
10.1               RELAY<br />
toto.com        RELAY</strong></p>
<p><u>Question.</u> <strong>Sendmail</strong> affiche le message ci-dessous. Pourquoi ?<br />
<em> Aug 24 19:13:17 localhost sendmail[4653]: poststats: /etc/mail/sendmail.st: No such  file or directory</em></p>
<p><u>Réponse.</u> Ce message apparaît lorsque le niveau d&#8217;enregistrement des événements défini par l&#8217;option LogLevel est assez élevé (par exemple 14). Il signifie que <strong>Sendmail</strong> n&#8217;a pas trouvé le fichier contenant ses statistiques de trafic. Il suffit de baisser le niveau d&#8217;enregistrement des événements en insérant dans le fichier sendmail.mc la directive :<br />
<strong>define(`confLOG_LEVEL&#8217;,`9&#8242;)dnl</strong><br />
Vous pouvez également créer le fichier manuellement :<br />
<strong># touch sendmail.st</strong><br />
L&#8217;emplacement de ce fichier est défini par l&#8217;instruction M4 suivante :<br />
<strong>define(`STATUS_FILE&#8217;, `/etc/mail/sendmail.st&#8217;)dnl</strong></p>
<p><u>Question.</u> L&#8217;enregistrement des événements présente la ligne ci-dessous. Pourquoi ?<br />
<em>Aug 22 09:43:51 s5b sendmail[17292]: g7M7hp917292: <noc@s1.fr>&#8230; Invalid route address</noc@s1.fr></em><br />
Le domaine s1.fr est local, et l&#8217;adresse est présente dans la virtusertable.</p>
<p><u>Réponse.</u> Il s&#8217;agit vraisemblablement d&#8217;un problème dans la virtusertable.<br />
Commencez par détruire la base :<br />
<strong> # cd /etc/mail<br />
# rm virtusertable.db<br />
</strong>  Puis reconstruisez la base :<br />
<strong># make</strong><br />
Si le problème persiste, c&#8217;est que la syntaxe n&#8217;est pas correcte dans la virtusertable. Celle-ci doit être utilisée comme suit :<br />
<strong>adresse locale        adresse distante ou alias<br />
</strong>  Par exemple :<br />
<strong>moi@ici.com          toi@labas.com</strong><br />
Une erreur commune est d&#8217;insérer les deux points (&laquo;&nbsp;:&nbsp;&raquo;) entre les deux éléments, comme pour les alias.<br />
L&#8217;adresse locale doit correspondre à un domaine de messagerie géré localement par <strong>Sendmail</strong>. Cela signifie que le domaine doit exister dans le fichier local-host-names. En aucun cas, il ne peut y avoir plusieurs adresses distantes ou aliases, contrairement aux enregistrements contenus dans le fichier des aliases.</p>
<p><u>Question.</u> <strong>Sendmail</strong> est très long lorsqu&#8217;il envoie ses messages. Pourquoi ?</p>
<p><u>Réponse.</u> Il s&#8217;agit sans doute du problème le plus courant qui surgit dans l&#8217;exploitation de <strong>Sendmail</strong>. Il peut s&#8217;agir d&#8217;un problème de requête DNS inversée. Lors d&#8217;une connexion SMTP sur <strong>Sendmail</strong>, ce dernier tente d&#8217;identifier son client en effectuant une requête DNS inversée. Contrairement à une requête DNS standard, par laquelle on cherche à récupérer une adresse IP à partir d&#8217;un nom DNS (s1.d0.com &#8211;&gt; 192.168.1.2), cette opération consiste à chercher un nom DNS depuis l&#8217;adresse IP (192.168.1.2 &#8211;&gt; s1.d0.com) dans le but d&#8217;identifier le client. Pour résoudre ce problème, il faut être sûr que le client dispose d&#8217;une résolution inversée. Les enregistrement DNS suivantes vous montrent comment créer une zone de résolution inversée suivant les recommandations de la RFC 2317 :<br />
<strong>$ORIGIN 1.168.192.IN-ADDR.ARPA.<br />
1       IN PTR          routeur.d0.com.<br />
2       IN PTR          s1.d0.com.<br />
</strong> Il peut aussi s&#8217;agir d&#8217;un problème d&#8217;IDENT. Lors de l&#8217;envoi d&#8217;un message, <strong>Sendmail</strong> génère des requêtes IDENT vers le serveur de destination. Le protocole d&#8217;identification IDENT obéit à la RFC 1413. Il fournit un moyen de déterminer l&#8217;identité d&#8217;un utilisateur sur une connexion TCP. Suivant le port TCP utilisé, le protocole retourne une chaîne de caractères qui identifie le propriétaire de la connexion sur le serveur.<br />
Si <strong>Sendmail</strong> ne réussit pas à récupérer cette information, il tente plusieurs fois la même opération jusqu&#8217;à ce qu&#8217;il dépasse le délai qui lui est imparti pour réussir. Ce délai est fourni par l&#8217;option Timeout.ident. Pour accélérer ce délai, il suffit de lui indiquer une valeur basse ou, plus radicalement, de le désactiver. Cela s&#8217;effectue facilement au moyen de l&#8217;instruction M4 suivante :<br />
<strong> define(`confTO_IDENT&#8217;,`0s&#8217;)dnl </strong><br />
Si vous disposez d&#8217;un firewall, mieux vaut rejeter les requêtes TCP IDENT plutôt que de les ignorer. Un rejet implique l&#8217;émission d&#8217;une réponse ICMP en direction du demandeur. Si le firewall ignore les requêtes IDENT, l&#8217;émetteur tente plusieurs fois l&#8217;envoi de ces requêtes. Ce n&#8217;est qu&#8217;une fois qu&#8217;il a dépassé un certain nombre de tentatives qu&#8217;il considère que l&#8217;opération a échoué. Le nombre de tentatives varie d&#8217;un système à un autre.<br />
Sous Linux, il faut utiliser le filtrage suivant :<br />
<strong> /sbin/iptables -A INPUT -p tcp &#8211;dport $113 -j REJECT </strong></p>
<p><u>Question.</u> Depuis que j&#8217;utilise <strong>Sendmail</strong>, j&#8217;ai remarqué qu&#8217;un service TCP s&#8217;est installé sur le port 587. Pourquoi ?</p>
<p><u>Réponse.</u> Il s.agit de l&#8217;agent de soumission de message, ou MSA (Message Submission Agent), de <strong>Sendmail</strong>, défini par la RFC 2476. Il sert généralement aux utilisateurs locaux protégés par un firewall. Une transaction sur le MSA se veut beaucoup moins contraignante par rapport à ce qui se fait habituellement sur le MTA. Ce dernier autorise que le format des adresses soit simplifié, que certains en-têtes de messages soient outrepassés, etc.<br />
Les soumissions sur le MSA sont différentes des opérations sur le MTA. Elles utilisent d&#8217;autres dispositifs, n&#8217;autorisent pas la commande ETRN et peuvent demander une authentification de l&#8217;utilisateur.<br />
Si vous ne souhaitez pas utiliser cet agent, il suffit de le désactiver via la commande M4 suivante :<br />
<strong>FEATURE(`no_default_msa&#8217;)dnl</strong></p>
<p><u>Question.</u> <strong>Sendmail</strong> affiche le message ci-dessous. Pourquoi ?<br />
<em>&lt;moi@toufaux.com&gt;&#8230; Sender domain must resolve</em></p>
<p><u>Réponse.</u> <strong>Sendmail</strong> est incapable de résoudre le nom de domaine employé dans l&#8217;adresse électronique, ici toufaux.com. Cela signifie que ce nom n&#8217;existe pas sur Internet ou qu&#8217;il a été fabriqué de toute pièce. Pour vérifier l&#8217;intégrité d&#8217;un domaine, il faut employer la commande suivante :<br />
<strong>        # dig ns toufaux.com</strong><br />
Si vous souhaitez malgré tout que <strong>Sendmail</strong> autorise la gestion des domaines non résolus, vous devez employer les commandes M4 suivante :<br />
<strong>FEATURE(`accept_unresolvable_domains&#8217;)<br />
FEATURE(`accept_unqualified_senders&#8217;) </strong></p>
<p><u>Question.</u> <strong>Sendmail</strong> affiche le message ci-dessous. Pourquoi ?<br />
<em> Jan  4 18:10:41 s2 sendmail[9204]: h04HAfP09204: h04HAfQ09204: DSN: Too many hops 26 (25 max): from <cgqvyb@d0.com> s1.d0.com, to &lt;moi@labas.com&gt; </cgqvyb@d0.com></em></p>
<p><u>Réponse.</u> Le message boucle et n&#8217;arrive jamais à destination. Chaque fois qu&#8217;un message est géré par <strong>Sendmail</strong> ou par tout autre MTA, ce dernier ajoute dans l&#8217;en-tête du message le champ SMTP Received:. Ce dernier est apparenté à un TTL (Time-To-Live), ou durée de vie d&#8217;une information réseau. Cela évite qu&#8217;un message boucle, c&#8217;est-à-dire qu&#8217;il transite plusieurs fois par le même tronçon. Lorsque le TTL attend 25 (dans l&#8217;exemple donné), le message est rejeté.<br />
Ce problème provient généralement d&#8217;un mauvais routage du courrier. Il passe bien une première fois par <strong>Sendmail</strong> mais revient par la suite, d&#8217;où le message d&#8217;erreur. Pour corriger le problème, il faut s&#8217;assurer que le domaine est bien routé en sortie, via la mailertable ou un SMART_HOST, ou qu&#8217;il est présent dans le fichier des domaines locaux (fichier local-host-names). En l&#8217;absence de l&#8217;un de ces fichiers, <strong>Sendmail</strong> effectue une requête MX et réexpédie le message vers le MX de poids fort.</p>
<p><u>Question.</u> <strong>Sendmail</strong> affiche le message ci-dessous. Pourquoi ?<br />
<em> relay=s1.d0.com [10.1.1.2] (may be forged) </em></p>
<p><u>Réponse.</u> <strong>Sendmail</strong> constate qu&#8217;il n&#8217;y a pas de concordance entre le nom DNS de l&#8217;expéditeur (s1.d0.com) et son adresse IP (10.1.1.2). <strong>Sendmail</strong> considère que l&#8217;émetteur a fabriqué l&#8217;adresse de toute pièce. Pour contourner ce problème, il faut que l&#8217;adresse IP du relais et son nom DNS concordent.</p>
<p><u>Question. </u>Que signifie le message suivant ?<br />
<em> NOQUEUE: Null connection from &lt;NULL&gt;. </em></p>
<p><u>Réponse.</u> Cela signifie qu&#8217;une machine s&#8217;est bien connectée sur <strong>Sendmail</strong> mais qu&#8217;elle n&#8217;a initié aucune transmission de message (via la commande MAIL). Cela peut correspondre à d&#8217;éventuels problèmes réseau. Il peut aussi s&#8217;agir d&#8217;un plaisantin qui tente des connexions sur le port 25 du serveur.</p>
<p><u>Question.</u> <strong>Sendmail</strong> affiche le message ci-dessous. Pourquoi ?<br />
<em> dec 29 19:52:14 s1 sendmail[29024]: gBTIqEA29024: SYSERR: putoutmsg ([210.204.118.194]): error on output channel sending &laquo;&nbsp;220 s1.d0.com ESMTP Sendmail 8.11.1/8.11.1; Sun, 29 Dec 2002 19:52:14 +0100&#8243;: Broken pipe </em></p>
<p><u>Réponse.</u> Lors de la transmission de l&#8217;en-tête SMTP de bienvenue, et après que l&#8217;émetteur a envoyé la commande HELO, la communication s&#8217;interrompt. Il s&#8217;agit d&#8217;un problème réseau.</p>
<p><u>Question. </u>Que signifient les messages suivants ?</p>
<p><em> &laquo;&nbsp;MX list for hostname points back to hostname&nbsp;&raquo; </em><br />
ou :<br />
<em> &laquo;&nbsp;config error: mail loops back to myself&nbsp;&raquo; </em></p>
<p><u>Réponse.</u> Le message boucle. Il ne peut être livré à destination et revient toujours sur la même machine, le MX du domaine de messagerie. Cela signifie que ce dernier existe bien dans le fichier access mais qu&#8217;aucun routage, via la mailertable ou la directive SMART_HOST, n&#8217;est défini.<br />
Pour résoudre ce problème, il faut router correctement le domaine de messagerie vers le serveur de destination ou créer le domaine localement en l&#8217;entrant dans le fichier local-host-names.</p>
<p><u>Question.</u> <strong>Sendmail</strong> n&#8217;envoie pas sur les MX  lorsque l&#8217;adresse de destination est un sous-domaine</p>
<p><u>Réponse.</u> <strong>Sendmail</strong> doit considérer le domaine comme local, sans doute par le fait qu&#8217;il a trouvé sur une de ses interfaces réseau, une référence au domaine. Dans ce cas, le mieux est de désactiver la recherche de référence sur les interfaces. Ceci se fait au moyen de l&#8217;instruction M4 confDONT_PROBE_INTERFACES. Si cette instruction est vraie alors <strong>Sendmail</strong> ne va pas insérer les noms et adresses des interfaces locales dans la classe {w} ; le sous-domaine sera alors considéré comme distant et routé via une requête MX, une mailertable, un SMART_HOST, ou tout autre dispositif de sortie.<br />
Utilisez donc l&#8217;instruction suivante :<br />
<strong> define(`confDONT_PROBE_INTERFACES&#8217;,`true&#8217;) </strong></p>
<p><u>Question.</u> Lorsque j&#8217;appelle <strong>Sendmail</strong> au moyen d&#8217;un script PHP, il utilise toujours l&#8217;adresse d&#8217;expédition « apache@localhost.localdomain »</p>
<p><u>Réponse.</u> <strong>Sendmail</strong> ne sait pas déterminer automatiquement l&#8217;adresse d&#8217;expédition et utilise donc une adresse par défaut : l&#8217;utilisateur apache sur la première interface d&#8217;écoute de <strong>Sendmail</strong>, ici la boucle locale (127.0.0.1). La façon la plus facile est de préciser à <strong>Sendmail</strong> une adresse d&#8217;expédition via le paramètre « -f ».<br />
Exécutez votre script PHP en appelant <strong>Sendmail</strong> comme ceci :<br />
<strong> /usr/sbin/sendmail -ftoto@tutu.com </strong></p>
<p><u>Question.</u> J&#8217;ai modifié la configuration de <strong>Sendmail</strong> et rien n&#8217;a changé</p>
<p><u>Réponse.</u> C&#8217;est vraisemblablement le mauvais fichier sendmail.cf qui a été reconstruit. Ce fichier est généralement placé dans /etc/mail, mais on peut aussi le trouver dans /etc. Pour savoir quel est le bon fichier à utiliser, il suffit d&#8217;employer la commande suivante:<br />
<strong># strings /usr/sbin/sendmail | grep sendmail.cf</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pagasa.net/guide-de-depannage-de-sendmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Surveiller un serveur Sendmail</title>
		<link>http://www.pagasa.net/surveiller-un-serveur-sendmail/</link>
		<comments>http://www.pagasa.net/surveiller-un-serveur-sendmail/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 20:56:18 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[mail]]></category>
		<category><![CDATA[mrtg]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[snmp]]></category>
		<category><![CDATA[surveillance]]></category>
		<category><![CDATA[surveiller]]></category>

		<guid isPermaLink="false">http://mig.pagasa.net/2007/12/13/surveiller-un-serveur-sendmail/</guid>
		<description><![CDATA[Du fait de sa criticité, un serveur Sendmail doit être surveillé afin de pouvoir agir rapidement. Les programmes présentés ci-dessous s&#8217;appuient sur des scripts Perl, couplés à MRTG et à SNMP. Le but est de pouvoir prévenir toute panne et agir proactivement. Surveiller la partition /var d&#8217;un serveur Sendmail Le petit script PERL ci-dessous récupère [...]]]></description>
			<content:encoded><![CDATA[<p>Du fait de sa criticité, un serveur Sendmail doit être surveillé afin de pouvoir agir rapidement. Les programmes présentés ci-dessous s&#8217;appuient sur des scripts <a href="http://www.perl.org/" target="_blank">Perl</a>, couplés à <a href="http://oss.oetiker.ch/mrtg/" target="_blank">MRTG</a> et à <a href="http://net-snmp.sourceforge.net/" target="_blank">SNMP</a>. Le but est de pouvoir prévenir toute panne et agir proactivement.</p>
<p><u>Surveiller la partition /var d&#8217;un serveur Sendmail</u><br />
Le petit script PERL ci-dessous récupère la taille maximale de la partition /var (index 3) ainsi que l&#8217;espace utilisé. Il calcule le pourcentage utilisé et prépare les résultats pour les passer à MRTG :<br />
<strong>    #!/usr/bin/perl<br />
# getdisk.pl<br />
$max=`snmpget 192.168.10.2 mdp host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageSize.3`;<br />
$used=`snmpget 192.168.10.2 mdp host.hrStorage.hrStorageTable.hrStorageEntry.hrStorageUsed.3`;<br />
$max =~ s/.*\:(.*)/$1/g;<br />
$used =~ s/.*\:(.*)/$1/g;<br />
if($max==0)<br />
{<br />
$pct=0;<br />
}<br />
else<br />
{<br />
$pct = ($used * 100) / $max;<br />
}<br />
$pct =~ s/(.*)\..*/$1/g;<br />
print &laquo;&nbsp;$pct\n$pct\n\n\n&nbsp;&raquo;;</strong></p>
<p>Le chapitre MRTG ci-dessous crée un graphique du pourcentage de l&#8217;espace utilisé sur la partition /var :<br />
<strong>    Target[sendmail.diskvar]: `/home/mrtg/bin/getdisk.pl`<br />
Directory[sendmail.diskvar]: sendmail<br />
MaxBytes[sendmail.diskvar]: 100<br />
Unscaled[sendmail.diskvar]: dwmy<br />
Options[sendmail.diskvar]: gauge<br />
Title[sendmail.diskvar]: Charge du disque /var<br />
XSize[sendmail.diskvar]: 580<br />
YSize[sendmail.diskvar]: 100<br />
YLegend[sendmail.diskvar]: %<br />
ShortLegend[sendmail.diskvar]: %<br />
PageTop[sendmail.diskvar]:&lt;H1&gt; Charge du disque /var &lt;/H1&gt;<br />
Legend1[sendmail.diskvar]: Espace disque utilisé en pourcentage<br />
LegendI[sendmail.diskvar]: Volumetrie<br />
LegendO[sendmail.diskvar]: Volumetrie<br />
</strong><br />
<u>Surveiller le nombre de connexions sur un serveur Sendmail</u><br />
Le petit script PERL ci-dessous extrait le nombre de connexions sur le serveur Sendmail et le prépare dans un format compréhensible par MRTG :<br />
<strong> # !/usr/bin/perl<br />
# gestestab.pl<br />
$cnx=` snmpget 192.168.10.2 mdp tcp.tcpCurrEstab.0`;<br />
chomp($cnx);<br />
($cnx) = ($cnx =~ /= Gauge32: (.+)/);<br />
if($cnx eq &laquo;&nbsp;&nbsp;&raquo;)<br />
{<br />
print &laquo;&nbsp;0\n0\n&nbsp;&raquo;;<br />
}<br />
else<br />
{<br />
print &laquo;&nbsp;$cnx \n$cnx \n&nbsp;&raquo;;<br />
}<br />
</strong><br />
Voici le chapitre MRTG servant à afficher le nombre de connexions :<br />
<strong>    Target[sendmail.estab]: `/home/mrtg/bin/getestab.pl`<br />
Directory[sendmail.estab]: sendmail<br />
Options[sendmail.estab]: gauge,nopercent<br />
MaxBytes[sendmail.estab]: 50<br />
Unscaled[sendmail.estab]: d<br />
XSize[sendmail.estab]: 580<br />
YSize[sendmail.estab]: 100<br />
YLegend[sendmail.estab]: Nombre de connexions<br />
ShortLegend[sendmail.estab]: Connexions<br />
Title[sendmail.estab]: Connexions sur Sendmail<br />
PageTop[sendmail.estab]: &lt;H1&gt;Nombre de connexions sur le serveur Sendmail&lt;/H1&gt;<br />
</strong><br />
<u>Surveiller la charge moyenne d&#8217;un serveur Sendmail</u><br />
Le petit script PERL ci-dessous récupère la charge sur la dernière minute, l&#8217;arrondit et affiche le résultat sous une forme compréhensible par MRTG :<br />
<strong>     #!/usr/bin/perl<br />
# getlat.pl<br />
$charge=`snmpget 192.168.10.2 mdp enterprises.ucdavis.laTable.laEntry.laLoad.1`;<br />
chomp($charge);<br />
($charge) = ($charge =~/= (.+)/);<br />
$charge=int($charge);<br />
if($charge eq &laquo;&nbsp;&nbsp;&raquo;)<br />
{<br />
print &laquo;&nbsp;0\n0\n&nbsp;&raquo;;<br />
}<br />
else<br />
{<br />
print &laquo;&nbsp;$charge\n$charge\n&nbsp;&raquo;;<br />
}<br />
</strong><br />
Voici le chapitre MRTG utilisé pour tracer la charge moyenne du serveur Sendmail :    <strong>  Target[sendmail.charge]: `/home/mrtg/bin/getlat.pl`<br />
Directory[sendmail.charge]:sendmail<br />
Options[sendmail.charge]: gauge,nopercent<br />
MaxBytes[sendmail.charge]: 5<br />
Unscaled[sendmail.charge]: dwmy<br />
XSize[sendmail.charge]: 580<br />
YSize[sendmail.charge]: 100<br />
YLegend[sendmail.charge]: Charge<br />
ShortLegend[sendmail.charge]: Charge<br />
Title[sendmail.charge]: Charge du serveur Sendmail<br />
PageTop[sendmail.charge]: &lt;H1&gt; Charge du serveur Sendmail &lt;/H1&gt;<br />
</strong><br />
<u>Surveiller la quantité de messages passant sur un serveur Sendmail </u><br />
Tout d&#8217;abord voici un petit script Perl permettant la récupération des informations du fichier sendmail.st via la commande mailstats:<br />
<strong>   open (FD,&nbsp;&raquo;mailstats |&nbsp;&raquo;);<br />
while (my $li = <fd>)<br />
{<br />
if($li =~ /===/)<br />
{<br />
$li=&lt;FD&gt;;<br />
$li=~ s/ +/ /g;<br />
@l0= split (/ /,$li);<br />
($l0[3])=($l0[3] =~ /(.+)K/);<br />
($l0[5])=($l0[5] =~ /(.+)K/);<br />
if($l0[2] eq &laquo;&nbsp;&nbsp;&raquo;)<br />
{<br />
print &laquo;&nbsp;0 &laquo;&nbsp;;<br />
}<br />
else<br />
{<br />
print &laquo;&nbsp;$l0[2] &laquo;&nbsp;;<br />
}<br />
if($l0[4] eq &laquo;&nbsp;&nbsp;&raquo;)<br />
{<br />
print &laquo;&nbsp;0 &laquo;&nbsp;;<br />
}<br />
else<br />
{<br />
print &laquo;&nbsp;$l0[4] &laquo;&nbsp;;<br />
}<br />
}<br />
}<br />
close (FD);<br />
</fd></strong><br />
Il ne faut pas oublier de supprimer le fichier /etc/mail/sendmail.st pour réinitialiser les informations de statistiques.<br />
Le résultat du script est appelé au moyen d&#8217;une requête SNMP via la définition suivante dans le fichier snmpd.conf (exemple ucd-snmp) :<br />
<strong> exec .1.3.6.1.4.1.2021.61       msg_geres /usr/bin/perl /usr/bin/pl/mlstat.pl </strong></p>
<p>Le script ci-dessous reprend l&#8217;ensemble de la requête ainsi que le formatage pour MRTG :<br />
<strong>    #!/usr/bin/perl<br />
# getmsg.pl<br />
$etat=`snmpget 192.168.10.2 mdp enterprises.ucdavis.61.101.1`;<br />
chomp($etat);<br />
($etat, $etat2) = ($etat =~ /= &laquo;&nbsp;(.+) (.+)&nbsp;&raquo;/);<br />
if($etat eq &laquo;&nbsp;&nbsp;&raquo;)<br />
{<br />
print &laquo;&nbsp;0\n&nbsp;&raquo;;<br />
}<br />
else<br />
{<br />
print &laquo;&nbsp;$etat\n&nbsp;&raquo;;<br />
}<br />
if($etat2 eq &laquo;&nbsp;&nbsp;&raquo;)<br />
{<br />
print &laquo;&nbsp;0\n&nbsp;&raquo;;<br />
}<br />
else<br />
{<br />
print &laquo;&nbsp;$etat2\n&nbsp;&raquo;;<br />
}<br />
</strong><br />
Voici le chapitre MRTG permettant de tracer la volumétrie des messages :<br />
<strong>   Target[sendmail.msg]: `/home/mrtg/bin/getmsg.pl`<br />
Directory[sendmail.msg]: sendmail<br />
Options[sendmail.msg]: gauge,nopercent<br />
MaxBytes[sendmail.msg]: 250<br />
Unscaled[sendmail.msg]: d<br />
XSize[sendmail.msg]: 580<br />
YSize[sendmail.msg]: 100<br />
YLegend[sendmail.msg]: Nbre de messages<br />
ShortLegend[sendmail.msg]: msg<br />
Legend1[sendmail.msg]: Messages entants<br />
Legend2[sendmail.msg]: Messages sortants<br />
LegendI[sendmail.msg]: Messages entants<br />
LegendO[sendmail.msg]: Messages sortants<br />
Title[sendmail.msg]: Volumétrie de la messagerie<br />
PageTop[sendmail.msg]: &lt;H1&gt;Messages entrants / sortants Sendmail&lt;/H1&gt; </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pagasa.net/surveiller-un-serveur-sendmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Surveiller la file d&#8217;attente de Sendmail</title>
		<link>http://www.pagasa.net/surveiller-la-file-dattente-de-sendmail/</link>
		<comments>http://www.pagasa.net/surveiller-la-file-dattente-de-sendmail/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 20:53:02 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[mail]]></category>
		<category><![CDATA[file d'attente]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[spool]]></category>
		<category><![CDATA[surveillance]]></category>
		<category><![CDATA[surveiller]]></category>

		<guid isPermaLink="false">http://mig.pagasa.net/2007/12/13/surveiller-la-file-dattente-de-sendmail/</guid>
		<description><![CDATA[Lorsque Sendmail reçoit un message, il tente de le livrer à destination immédiatement. Si cela n&#8217;est pas possible alors il le dépose dans sa file d&#8217;attente et tente une nouvelle livraison par la suite. Le délai entre deux livraisons est fixé grâce au paramètre « -q » de Sendmail. Par exemple : # /usr/sbin/sendmail -q15m [...]]]></description>
			<content:encoded><![CDATA[<p>Lorsque Sendmail reçoit un message, il tente de le livrer à destination immédiatement. Si cela n&#8217;est pas possible alors il le dépose dans sa file d&#8217;attente et tente une nouvelle livraison par la suite. Le délai entre deux livraisons est fixé grâce au paramètre « -q » de Sendmail. Par exemple :<br />
<strong>  # /usr/sbin/sendmail -q15m </strong></p>
<p>fixera à 15 minutes le délai entre deux tentatives de livraison. Idéalement, une file d&#8217;attente devrait être toujours vide ; mais bien entendu, cela n&#8217;est pas possible : le serveur de destination n&#8217;est pas disponible, la charge moyenne du serveur est trop importante, il n&#8217;y a pas assez de place sur le disque, etc.</p>
<p>Il est intéressant de surveiller le nombre de messages contenus dans la file d&#8217;attente ; ceci permet d&#8217;anticiper les pannes et aussi d&#8217;isoler certains problèmes récurrents tels que les serveurs en difficulté. Lorsqu&#8217;une file d&#8217;attente croît régulièrement sans se stabiliser alors il arrive un moment où il faut se poser des questions : est-ce que mon serveur est suffisamment bien calibré, ai-je assez de bande passante, etc.</p>
<p>Pour surveiller cette file, nous allons utiliser une combinaison de scripts que nous passerons à <a href="http://oss.oetiker.ch/mrtg/" target="_blank">MRTG</a> via <a href="http://net-snmp.sourceforge.net/" target="_blank">SNMP</a>.</p>
<p>Tout d&#8217;abord, nous devons extraire le nombre de requêtes contenues dans la file. Ceci se fait via la commande « mailq ». Les informations résultantes de cette dernière ressemblent à ceci :<br />
<strong>    h9GFItZ2020003    95399 Thu Oct 16 17:18 <marketing@xyz.com><br />
8BITMIME   (host map: lookup (toulouse.xyz.fr): deferred)<br />
&lt;123@toulouse.xyz.fr&gt;<br />
h9GEvdZ2017358    95399 Thu Oct 16 16:57 <marketing@xyz.com><br />
8BITMIME   (host map: lookup (xyz.fr): deferred)<br />
&lt;5432@xyz.fr&gt;<br />
h9GEEgZ2012871     4567 Thu Oct 16 16:14 &lt;&gt;<br />
8BITMIME   (Deferred: Connection refused by m5.labas.com.)<br />
<fs6@m5.labas.com><br />
h9GCYYZ2007297    13646 Thu Oct 16 14:34 &lt;&gt;<br />
8BITMIME   (Deferred: Connection refused by newton.vanpiperzen.fr.)<br />
<apache@newton.vanpiperzen.fr><br />
Total requests: 708<br />
</apache@newton.vanpiperzen.fr></fs6@m5.labas.com></marketing@xyz.com></marketing@xyz.com></strong><br />
La dernière ligne nous intéresse directement; ici, il y a donc 708 messages bloqués dans la file d&#8217;attente. Afin d&#8217;extraire le nombre, une simple combinaison de commandes et un script <a href="http://www.shellunix.com/awk.html" target="_blank">Awk</a> suffit :<br />
<strong>    # /usr/bin/mailq | /usr/bin/tail -1 | /usr/bin/awk &#8216;BEGIN {} { j= $3} END {printf &laquo;&nbsp;%s &laquo;&nbsp;,j }&#8217; </strong></p>
<p>* La première instruction (mailq) déclenche l&#8217;affichage de la file d&#8217;attente<br />
* La deuxième passe le résultat dans la commande « tail » qui n&#8217;affiche que la dernière ligne ( Total requests: 708)<br />
* Le script awk n&#8217;affiche que le dernier mot (708)</p>
<p>Ceci fait, nous allons désormais passer ces informations à MRTG; la façon la plus commode est d&#8217;utiliser SNMP.<br />
Pour ce faire, il faut rajouter un OID propriétaire dans le snmpd.conf ; ici, nous travaillons avec ucd-snmp. Voici cet OID :<br />
<strong>    exec .1.3.6.1.4.1.2021.61       queue     /home/s/queue.sh </strong></p>
<p>Avec le script queue.sh contenant:<br />
<strong>    # !/bin/sh<br />
# /usr/bin/mailq | /usr/bin/tail -1 | /usr/bin/awk &#8216;BEGIN {} { j= $3} END {printf &laquo;&nbsp;%s &laquo;&nbsp;,j }&#8217; </strong></p>
<p>Ceci terminé, il faut relancer le SNMP : <strong>    # service snmpd restart  (Sous RedHat)<br />
# /etc/init.d/snmpd restart (Autre)<br />
</strong><br />
Essayons d&#8217;extraire les différents OID depuis la NMS (Network Management Server) :<br />
<strong>    # snmpwalk serveur-sendmail communaute enterprises.ucdavis.61<br />
enterprises.ucdavis.61.1.1 = 1<br />
enterprises.ucdavis.61.2.1 = &laquo;&nbsp;queue&nbsp;&raquo;<br />
enterprises.ucdavis.61.3.1 = &laquo;&nbsp;/home/s/queue.sh&nbsp;&raquo;<br />
enterprises.ucdavis.61.100.1 = 0<br />
enterprises.ucdavis.61.101.1 = &laquo;&nbsp;522&#8243;<br />
enterprises.ucdavis.61.102.1 = 0 </strong></p>
<p>Ca fonctionne, et nous allons donc travailler avec l&#8217;OID enterprises.ucdavis.61.101.1<br />
La prochaine étape est de créer une entrée MRTG afin de grapher régulièrement les entrées obtenues par notre script. La seule difficulté est que notre script Awk renvoie l&#8217;information sous forme de caractères; MRTG, quand à lui, attend un nombre. Nous allons donc devoir encore développer un script pour convertir la chaîne de caractères en nombre. Voici ce script, écrit en PERL, nous l&#8217;appellerons queue.pl :<br />
<strong>    #!/usr/bin/perl<br />
$ip = shift @ARGV;<br />
$com = shift @ARGV;<br />
$mib1 = shift @ARGV;<br />
$etat=`snmpget $ip $com $mib1`;<br />
chomp($etat);<br />
($etat) = ($etat =~ /= &laquo;&nbsp;(.+)&nbsp;&raquo;/);<br />
if($etat eq &laquo;&nbsp;&nbsp;&raquo;)<br />
{<br />
print &laquo;&nbsp;0\n0\n&nbsp;&raquo;;<br />
}<br />
else<br />
{<br />
print &laquo;&nbsp;$etat\n$etat\n&nbsp;&raquo;;<br />
}<br />
</strong><br />
Le script commence par récupérer l&#8217;OID au moyen de l&#8217;instruction « snmpget », puis il nettoie la chaîne des guillemets et finalement affiche le nombre en deux exemplaires, car MRTG attend toujours un minimum de deux nombres.<br />
Pour utiliser notre script, il faudra donc taper :<br />
<strong> # ./queue.pl<br />
522<br />
522 </strong></p>
<p>Il ne nous reste plus qu&#8217;à créer le chapitre MRTG :<br />
<strong>    Target[sendmail.queue]: `/home/s/queue.pl 192.168.0.2 com enterprises.ucd avis.61.101.1`<br />
Directory[sendmail.queue]: sendmail<br />
Options[sendmail.queue]: gauge,nopercent<br />
MaxBytes[sendmail.queue]: 3500<br />
XSize[sendmail.queue]: 580<br />
YSize[sendmail.queue]: 100<br />
YLegend[sendmail.queue]: Nbre de messages en attente<br />
ShortLegend[sendmail.queue]: msg<br />
Legend1[sendmail.queue]: Messages en attente<br />
Legend2[sendmail.queue]: Messages en attente<br />
LegendI[sendmail.queue]: Messages en attente<br />
LegendO[sendmail.queue]: Messages en attente<br />
Title[sendmail.queue]:Messages dans la file d&#8217;attente<br />
PageTop[sendmail.queue]: &lt;H1&gt;Messages dans la file d&#8217;attente sur Sendmail&lt;/H1&gt; </strong></p>
<p><em>Note:</em> des problèmes peuvent survenir avec SNMP et la commande mailq en cas de surcharge du serveur ; il est tout à fait envisageable que MRTG soit dans l&#8217;incapacité de récupérer les informations. Pour pallier à ce problème, le mieux est de faire tourner le script qui va chercher le nombre de messages dans la file d&#8217;attente directement sur le serveur SMTP ; ce script devra être lancé régulièrement via une entrée dans la crontab et le résultat placé dans un fichier. Après, ce nombre pourra être récupéré par SNMP par un simple « cat ».</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pagasa.net/surveiller-la-file-dattente-de-sendmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transformer des adresses grâce à Sendmail</title>
		<link>http://www.pagasa.net/transformer-des-adresses-grace-a-sendmail/</link>
		<comments>http://www.pagasa.net/transformer-des-adresses-grace-a-sendmail/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 20:51:48 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[mail]]></category>
		<category><![CDATA[adresse]]></category>
		<category><![CDATA[convertir]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[transformer]]></category>

		<guid isPermaLink="false">http://mig.pagasa.net/2007/12/13/transformer-des-adresses-grace-a-sendmail/</guid>
		<description><![CDATA[Dans un environnement de messagerie, il est parfois intéressant de pouvoir transformer des adresses email: Lorsqu&#8217;une entreprise change de dénomination sociale, une personne se marie et change de nom, pour des raisons de sécurité, etc. Sendmail offre un dispositif standard de réécriture d&#8217;adresses: la genericstable. Ce dispositif est destiné à transformer une adresse en une [...]]]></description>
			<content:encoded><![CDATA[<p>Dans un environnement de messagerie, il est parfois intéressant de pouvoir transformer des adresses email:<br />
Lorsqu&#8217;une entreprise change de dénomination sociale, une personne se marie et change de nom, pour des raisons de sécurité, etc.</p>
<p>Sendmail offre un dispositif standard de réécriture d&#8217;adresses: la genericstable.<br />
Ce dispositif est destiné à transformer une adresse en une autre durant l&#8217;expédition d&#8217;un message. Malheureusement, ceci ne fonctionne qu&#8217;avec les domaines locaux, ceux qui sont gérés via le local-host-name. Le problème se pose donc lorsque l&#8217;on veut modifier une adresse distante, celle d&#8217;un FAI par exemple.</p>
<p>Heureusement, la grande force de Sendmail est justement de pouvoir réécrire n&#8217;importe quelle adresse. Il suffit donc de créer une nouvelle règle et de l&#8217;insérer dans le fichier sendmail.mc. Néanmoins pour des raisons de clarté, il est préférable de mettre la règle dans un fichier satellite.</p>
<p>J&#8217;ai appelé celui-ci &laquo;&nbsp;rewrite&nbsp;&raquo;, et en voici son contenu:</p>
<p>LOCAL_RULE_3<br />
D{DOMAINE}mon-domaine.com         #` mon-domaine.com&#8217;<br />
D{WANAGOO}wanagoo.fr    #`wanagoo.fr&#8217;<br />
Rlaurent&lt;@${DOMAINE}&gt;$*    laurent.baloche&lt;@${WANAGOO}&gt;$1<br />
Rcharles&lt;@${DOMAINE}&gt;$*    charles.vanpiperzen&lt;@${WANAGOO}&gt;$1</p>
<p>Et en voici les explications:</p>
<p>Tout d&#8217;abord, la règle sera placée dans le groupe numéro 3 (LOCAL_RULE_3) en charge du prétraitement des adresses.<br />
La lettre D définit la macro &laquo;&nbsp;DOMAINE&nbsp;&raquo; et y affecte le domaine, ici mon-domaine.com.<br />
La lettre D définit la macro &laquo;&nbsp;WANAGOO&nbsp;&raquo; et y affecte le domaine distant, ici wanagoo.fr.<br />
L&#8217;instruction suivante utilise la réécriture, la lettre &laquo;&nbsp;R&nbsp;&raquo; pour transformer l&#8217;adresse initiale  lauren@mon-domaine.com en laurent.baloche@wanagoo.fr.<br />
Idem pour charles@mon-domaine.com qui est transformée en charles.vanpiperzen@wanagoo.fr</p>
<p>Ceci fait, il suffit d&#8217;inclure les règles dans le fichier sendmail.mc:</p>
<p>include(`/etc/mail/rewrite&#8217;)</p>
<p>Puis de reconstruire le sendmail.cf:</p>
<p>#m4 sendmail.mc &gt;sendmail.cf</p>
<p>et enfin faire relire à sendmail sa configuration:</p>
<p>#kill -HUP `head -1 /var/run/sendmail.pid&#8217;</p>
<p>Attention, cette opération doit être exécutée à chaque fois que l&#8217;on insère une nouvelle entrée dans le fichier rewrite.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pagasa.net/transformer-des-adresses-grace-a-sendmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le SMTP spoolé</title>
		<link>http://www.pagasa.net/le-smtp-spoole/</link>
		<comments>http://www.pagasa.net/le-smtp-spoole/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 20:49:51 +0000</pubDate>
		<dc:creator>Thibaut</dc:creator>
				<category><![CDATA[mail]]></category>
		<category><![CDATA[dsmtp]]></category>
		<category><![CDATA[ETRN]]></category>
		<category><![CDATA[isdn]]></category>
		<category><![CDATA[rnis]]></category>
		<category><![CDATA[rtc]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[spool]]></category>

		<guid isPermaLink="false">http://mig.pagasa.net/2007/12/13/le-smtp-spoole/</guid>
		<description><![CDATA[Même si la plupart d&#8217;entre nous possède désormais une connexion permanente à Internet comme l&#8217;ADSL ou le câble, il existe encore des situations où l&#8217;on utilise des connexions intermittentes comme le RNIS, l&#8217;ISDN ou le RTC: liens de secours, lieux non-couverts par l&#8217;ADSL, etc. Celui qui utilise une connexion intermittente se retrouve généralement face à [...]]]></description>
			<content:encoded><![CDATA[<p>Même si la plupart d&#8217;entre nous possède désormais une connexion permanente à Internet comme l&#8217;ADSL ou le câble, il existe encore des situations où l&#8217;on utilise des connexions intermittentes comme le RNIS, l&#8217;ISDN ou le RTC: liens de secours, lieux non-couverts par l&#8217;ADSL, etc.</p>
<p>Celui qui utilise une connexion intermittente se retrouve généralement face à la problématique suivante: Comme la connexion n&#8217;est pas permanente, il n&#8217;est à priori pas possible d&#8217;avoir son propre serveur SMTP gérant la réception du courrier en provenance de l&#8217;Internet. On doit alors laisser la gestion de tout le courrier électronique au FAI (Fournisseur d&#8217;Accès Internet), ce qui est somme toute dommage, surtout si l&#8217;on dispose d&#8217;un service informatique capable de gérer les services Internet.</p>
<p>Il est toutefois possible de contourner ce problème grâce aux extensions du protocole SMTP, défini par le ESMTP (Extended Simple Mail Protocol).</p>
<p>L&#8217;idée est la suivante:<br />
- le courrier arrive sur le serveur SMTP du FAI,<br />
- le FAI stocke le courrier dans une file d&#8217;attente,<br />
- le client récupère toute la file d&#8217;attente lorsqu&#8217;il se connecte.</p>
<p>Attention, ici il n&#8217;est nullement question d&#8217;accéder à des boites aux lettres via POP mais bien de récupérer toute la file d&#8217;attente SMTP d&#8217;un domaine sans se soucier d&#8217;éventuelles erreurs de destinataires. Ces mêmes erreurs seront gérées par la suite par le serveur SMTP de destination; le FAI n&#8217;a qu&#8217;un rôle d&#8217;intermédiaire: il est serveur-relais, tout simplement.</p>
<p>Le mécanisme de récupération de la file d&#8217;attente SMTP se fait via la commande ETRN; c&#8217;est cette même commande qui sera étudiée plus tard et un petit programme en C illustrera son utilisation.</p>
<p>Voici la trame d&#8217;un message transitant depuis l&#8217;émetteur du message jusqu&#8217;au destinataire final, au-delà de la connexion intermittente:</p>
<p>Le client envoie son message vers son serveur de courrier via une transaction SMTP. Ce même serveur extrait le MX (Mail Exchanger) de son DNS et l&#8217;expédie via une autre requête SMTP sur le serveur relais. Ce dernier se contente de stocker le message dans la file d&#8217;attente; à ce stade, il n&#8217;y a plus aucune notion de délai de livraison: c&#8217;est le client lui même qui va récupérer le courrier quand bon lui semble. Lorsque la connexion intermittente monte, le serveur SMTP de destination exécute la commande ETRN et toute la file d&#8217;attente est récupérée. Le destinataire du message n&#8217;a plus qu&#8217;à récupérer son courrier via POP.</p>
<p>Une commande ETRN consiste en fait à accéder au port 25 d&#8217;un serveur SMTP, et à envoyer cette même commande. Le serveur SMTP tente alors d&#8217;accéder au port 25 de l&#8217;émetteur de la transaction et déclenche un dialogue SMTP entre les deux serveurs.<br />
Le dialogue suivant vous montre comment se passe une transaction ETRN:<br />
<strong> telnet mx.mondomaine.fr 25<br />
220 mx.mondomaine.fr ESMTP Sendmail 8.10.0/8.10.0;<br />
ehlo mx.tondomaine.fr<br />
250-mx.mondomaine.fr Hello mx.tondomaine.fr [192.168.0.1] (may be forged),<br />
etrn @tondomaine.fr<br />
250 2.0.0 Queuing for node @tondomaine.fr started<br />
quit<br />
221 2.0.0 mx.mondomaine.fr closing connection<br />
</strong><br />
La commande &laquo;&nbsp;etrn @mx.tondomaine.fr&nbsp;&raquo; déclenche la transaction SMTP entre les deux serveurs. Il y a deux façons d&#8217;utiliser la commande ETRN:<br />
soit par domaine (@tondomaine.fr), soit par file d&#8217;attente (#file),  cela dépend du fournisseur et  de sa façon de procéder.<br />
Attention, la commande ETRN ne fonctionne qu&#8217;avec des serveurs ESMTP, d&#8217;où le &laquo;&nbsp;ehlo&nbsp;&raquo; qui est là pour tester la nature du serveur.</p>
<p>Dans la plupart des cas, le serveur utilisé est un Sendmail 8.10 ou plus doté d&#8217;une mailertable pour rediriger le courrier grâce à un mailer particulier appelé DSMTP.<br />
Ci-dessous, un exemple de configuration pour sendmail:<br />
<u>Sendmail.mc</u><br />
<strong> divert(-1)<br />
dnl<br />
dnl Configuration sendmail côté FAI<br />
dnl<br />
divert(0)<br />
include(`/usr/lib/sendmail-cf/m4/cf.m4&#8242;)<br />
VERSIONID(`Sendmail pour mx0.d0.com&#8217;)dnl<br />
OSTYPE(`linux&#8217;)dnl<br />
define(`confMAX_MESSAGE_SIZE&#8217;, `5000000&#8242;)dnl<br />
define(`STATUS_FILE&#8217;, `/etc/mail/sendmail.st&#8217;)dnl<br />
define(`confDOMAIN_NAME&#8217;, `mx0.d0.com&#8217;)dnl<br />
define(`ALIAS_FILE&#8217;, `/etc/mail/aliases&#8217;)dnl<br />
define(`confTO_QUEUEWARN&#8217;, `72h&#8217;)dnl<br />
define(`confTO_QUEUERETURN&#8217;, `7d&#8217;)dnl<br />
FEATURE(`access_db&#8217;,`hash -o /etc/mail/access&#8217;)dnl<br />
FEATURE(`mailertable&#8217;,`hash -o /etc/mail/mailertable&#8217;)dnl<br />
FEATURE(always_add_domain)dnl<br />
MAILER(smtp)dnl </strong></p>
<p><u>Mailertable</u><br />
<strong> d1.com               dmstp:[mail.d0.com]<br />
d2.com               dmstp:[mail.d0.com]<br />
d3.com               dmstp:[mail.d0.com]<br />
d4.com               dmstp:[mail.d0.com] </strong></p>
<p><u>Sendmail.mc</u><br />
<strong> divert(-1)<br />
dnl<br />
dnl Configuration sendmail sur une ligne RNIS/ISDN<br />
dnl<br />
divert(0)<br />
include(`/usr/lib/sendmail-cf/m4/cf.m4&#8242;)<br />
VERSIONID(`Sendmail pour mail.d0.com&#8217;)dnl<br />
OSTYPE(`linux&#8217;)dnl<br />
define(`confMAX_MESSAGE_SIZE&#8217;, `5000000&#8242;)dnl<br />
define(`STATUS_FILE&#8217;, `/etc/mail/sendmail.st&#8217;)dnl<br />
define(`confDOMAIN_NAME&#8217;, `mail.d0.com&#8217;)dnl<br />
define(`SMART_HOST&#8217;,`esmtp:[mx0.d0.com]&#8216;)dnl<br />
define(`confCON_EXPENSIVE&#8217;, `true&#8217;)dnl<br />
define(`ALIAS_FILE&#8217;, `/etc/mail/aliases&#8217;)dnl<br />
define(`confTO_QUEUEWARN&#8217;, `72h&#8217;)dnl<br />
define(`confTO_QUEUERETURN&#8217;, `7d&#8217;)dnl<br />
MODIFY_MAILER_FLAGS(`SMTP&#8217;,`+e&#8217;)dnl<br />
FEATURE(`access_db&#8217;,`hash -o /etc/mail/access&#8217;)dnl<br />
FEATURE(`virtusertable&#8217;,`hash -o /etc/mail/virtusertable&#8217;)dnl<br />
FEATURE(always_add_domain)dnl<br />
FEATURE(local_procmail)dnl<br />
FEATURE(use_cw_file)dnl<br />
MAILER(smtp)dnl<br />
</strong><br />
Pour lancer l&#8217;ETRN, placez <a href="http://www.pagasa.net/telecharge/dq.tgz">ce petit programme</a> dans votre crontab sur la machine au delà de la connexion intermittente.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pagasa.net/le-smtp-spoole/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

