<?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>Le Blog du grand loup Zeur &#187; smtp</title>
	<atom:link href="http://blog.gaetan-grigis.eu/tag/smtp/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gaetan-grigis.eu</link>
	<description>Le blog qui vous fait connaitre ce que vous savez déjà</description>
	<lastBuildDate>Tue, 17 Jan 2012 08:43:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Alerte d&#8217;ossec en notification sur le bureau</title>
		<link>http://blog.gaetan-grigis.eu/python-2/alerte-dossec-en-notification-sur-le-bureau/</link>
		<comments>http://blog.gaetan-grigis.eu/python-2/alerte-dossec-en-notification-sur-le-bureau/#comments</comments>
		<pubDate>Thu, 21 Apr 2011 19:06:02 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[notification]]></category>
		<category><![CDATA[ossec]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[telnet]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=1046</guid>
		<description><![CDATA[Aujourd&#8217;hui, Encore un script useless, fait pour passer le temps en cours &#8230; Le but étant d&#8217;avoir un IDS ossec sur l&#8217;ordi local configuré pour détecter et répondre plus ou moins comme il faut aux attaques basiques et SURTOUT rendre compte à l&#8217;utilisateur des problèmes rencontrés de façon orienté &#8216;desktop&#8217;. A l&#8217;heure actuelle seul deux [...]]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui,</p>
<p>Encore un script useless, fait pour passer le temps en cours &#8230; </p>
<p>Le but étant d&#8217;avoir un IDS ossec sur l&#8217;ordi local configuré pour détecter et répondre plus ou moins comme il faut aux attaques basiques et SURTOUT rendre compte à l&#8217;utilisateur des problèmes rencontrés de façon orienté &#8216;desktop&#8217;.</p>
<p>A l&#8217;heure actuelle seul deux systèmes de notifications (officiels) de l&#8217;utilisateur existent sur ossec : soit une notification par mail, soit par twitter (qui ne fonctionne plus).<br />
<span id="more-1046"></span></p>
<p>L&#8217;intêret de ce procédé était surtout de plugger snort avec ossec pour détecter des attaques sur le réseau sans avoir à laisser de console sur les logs de l&#8217;ids (des p&#8217;tits rigolo qui s&#8217;amuse sur le réseau de l&#8217;école :s).</p>
<p>Histoire de limiter le développement du logiciel, j&#8217;ai juste créée un serveur de mail qui via plusieurs regexp  chope la règle qui a detecté l&#8217;attaque et le sujet du mail pour l&#8217;afficher en belle bulle de notification linuxienne.</p>
<p><img src="http://blog.gaetan-grigis.eu/wp-content/uploads/2011/04/infobulleossec.png" alt="" title="infobulleossec" width="402" height="107" class="aligncenter size-full wp-image-1050" /></p>
<p>La règle iptable qui renvoit les paquets du port 25 au port 8025 pour l&#8217;interface lo seulement, comme ça on lance le soft avec les droits utilisateurs, on est jamais trop prudent.</p>
<div class="geshi no iptable">
<ol>
<li class="li1">
<div class="de1">/sbin/iptables -t nat -A OUTPUT -o lo -p tcp &#8211;dport 25 -j REDIRECT &#8211;to-port 8025</div>
</li>
</ol>
</div>
<p>Ne pas oublier de modifier le fichier /etc/ossec.conf en mettant l&#8217;adresse du serveur smtp a 127.0.0.1, le serveur de mail chopant tout les adresses, on s&#8217;en fout donc de l&#8217;adresse de destination et d&#8217;émission.</p>
<p>IL faut aussi installer les dépendances :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">apt-get <span class="kw2">install</span> python-notify</div>
</li>
</ol>
</div>
<p>Une copie du mail est sauvegarder dans le fichier .mails_ossec, histoire de ne pas perdre le mail. (Au pire il est possible de mettre plusieurs adresses mail dans la conf ossec).</p>
<p>Le script à mettre au lancement de la session (Système -> Préférences -> Application au Démarrage) : </p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="co1">#!/usr/bin/env python</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">from</span> <span class="kw3">smtpd</span> <span class="kw1">import</span> PureProxy</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">asyncore</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">asynchat</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">smtplib</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">re</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">sys</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">os</span>.<span class="me1">path</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">pwd</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">grp</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> pynotify</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> mySMTP <span class="br0">&#40;</span>PureProxy<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> <span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span>,s<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; PureProxy.<span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span>,s,<span class="kw2">None</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> process_message <span class="br0">&#40;</span><span class="kw2">self</span>, peer, mailfrom, rcpttos, data<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">if</span> <span class="kw1">not</span> pynotify.<span class="me1">init</span><span class="br0">&#40;</span><span class="st0">&quot;Default Action Test&quot;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">sys</span>.<span class="me1">exit</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;filout = <span class="kw2">open</span><span class="br0">&#40;</span><span class="st0">&#39;.mails_ossec&#39;</span>, <span class="st0">&#39;a&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;filout.<span class="me1">write</span><span class="br0">&#40;</span>data<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;filout.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;title=<span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;rule =<span class="st0">&quot;&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;m = <span class="kw3">re</span>.<span class="me1">search</span><span class="br0">&#40;</span><span class="st0">&quot;Subject:(.*)&quot;</span>,data,<span class="kw3">re</span>.<span class="me1">I</span>|re.<span class="me1">M</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> m:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; title=m.<span class="me1">group</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;m= <span class="kw2">None</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;m = <span class="kw3">re</span>.<span class="me1">search</span><span class="br0">&#40;</span><span class="st0">&quot;(Rule:.*)&quot;</span>,data,<span class="kw3">re</span>.<span class="me1">I</span>|re.<span class="me1">M</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> m:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; rule=m.<span class="me1">group</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">#print data</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> title==<span class="st0">&quot;&quot;</span> <span class="kw1">and</span> rule==<span class="st0">&quot;&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> <span class="kw2">None</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;n = pynotify.<span class="me1">Notification</span><span class="br0">&#40;</span>title, rule<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;n.<span class="me1">show</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">None</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> __name__ == <span class="st0">&quot;__main__&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">#in case of root : drop rights &#8230; </span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">#but will not be able to access</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">#glibnotify &#8230; useless</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="kw3">os</span>.<span class="me1">getuid</span><span class="br0">&#40;</span><span class="br0">&#41;</span> == <span class="nu0">0</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; running_uid = <span class="kw3">pwd</span>.<span class="me1">getpwnam</span><span class="br0">&#40;</span><span class="st0">&quot;nobody&quot;</span><span class="br0">&#41;</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; running_gid = <span class="kw3">grp</span>.<span class="me1">getgrnam</span><span class="br0">&#40;</span><span class="st0">&quot;nogroup&quot;</span><span class="br0">&#41;</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">os</span>.<span class="me1">setgid</span><span class="br0">&#40;</span>running_gid<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">os</span>.<span class="me1">setuid</span><span class="br0">&#40;</span>running_uid<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#/sbin/iptables -t nat -A OUTPUT -o lo -p tcp &#8211;dport 25 -j REDIRECT &#8211;to-port 8025</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; serv = mySMTP <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="st0">&quot;127.0.0.1&quot;</span>, <span class="nu0">8025</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">try</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">asyncore</span>.<span class="me1">loop</span> <span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">except</span> <span class="kw2">KeyboardInterrupt</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">pass</span></div>
</li>
</ol>
</div>
<p>Histoire de pouvoir tester le script, sans attendre une attaque ou une erreur système :<br />
Le petit script qui envoi un mail type au serveur de mail</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0">#!/bin/bash</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#40;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;mail from:frommail&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sleep</span> <span class="nu0">0.5</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;rcpt to:tomail&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sleep</span> <span class="nu0">0.5</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;data&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sleep</span> <span class="nu0">0.5</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;To: &lt;someone@127.0.0.1&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">From: OSSEC HIDS &lt;ossecm@kikoo&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">Date: Thu, 21 Apr 2011 11:31:40 +0200</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">Subject: OSSEC Notification &#8211; kikoo &#8211; Alert level 10</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">OSSEC HIDS Notification.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">2011 Apr 21 11:31:28</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">Received From: kikoo-&gt;/var/log/auth.log</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">Rule: 5401 fired (level 10) -&gt; &#39;Three failed attempts to run sudo&#39;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">Portion of the log(s):</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="st0">Apr 21 11:31:28 kikoo sudo: &nbsp; &nbsp;kikoo : 3 incorrect password attempts ; TTY=pts/1 ; PWD=/home/kikoo/Documents ; USER=root ; COMMAND=/usr/bin/who&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sleep</span> <span class="nu0">0.5</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;.&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">sleep</span> <span class="nu0">0.5</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;QUIT&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="br0">&#41;</span> <span class="sy0">|</span> telnet <span class="nu0">127.0</span><span class="nu0">.0</span><span class="nu0">.1</span> <span class="nu0">25</span></div>
</li>
</ol>
</div>
<p>Et hop &#8230; dès qu&#8217;une attaque à lieu, ou un problème apparaît, une notification apparaît dans les secondes qui suivent. ça peut être sympa en lan, avec un bon NIDS, pour découvrir les scripts kiddies.</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1046">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/mes-applicationsscripts/" rel="bookmark" title="Permanent Link: Mes Applications/Scripts">Mes Applications/Scripts</a></li><li><a href="http://blog.gaetan-grigis.eu/android/application-android-pour-le-telechargement-des-versions-de-cyanogen/" rel="bookmark" title="Permanent Link: Application android pour le téléchargement des versions de Cyanogen">Application android pour le téléchargement des versions de Cyanogen</a></li><li><a href="http://blog.gaetan-grigis.eu/ubuntu/gnome-desactiver-la-previsualisation-de-medias/" rel="bookmark" title="Permanent Link: Gnome : Désactiver la prévisualisation de medias">Gnome : Désactiver la prévisualisation de medias</a></li><li><a href="http://blog.gaetan-grigis.eu/securite/souhaiter-de-joyeuses-fetes-en-piratant-les-dns-de-sa-boite/" rel="bookmark" title="Permanent Link: Souhaiter de joyeuses fêtes en piratant ses DNS ^^.">Souhaiter de joyeuses fêtes en piratant ses DNS ^^.</a></li><li><a href="http://blog.gaetan-grigis.eu/android/android-application-de-controle-a-distancebackupinfo/" rel="bookmark" title="Permanent Link: [Android] application de contrôle à distance/backup/info">[Android] application de contrôle à distance/backup/info</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/python-2/alerte-dossec-en-notification-sur-le-bureau/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Envoyer des mails dans le passé</title>
		<link>http://blog.gaetan-grigis.eu/programmation/envoyer-des-mails-dans-le-passe/</link>
		<comments>http://blog.gaetan-grigis.eu/programmation/envoyer-des-mails-dans-le-passe/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 15:05:34 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[back to the future]]></category>
		<category><![CDATA[fake]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[temps]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=762</guid>
		<description><![CDATA[Plop à tous &#8230; Aujourd&#8217;hui, une astuce de &#171;&#160;gros noob&#160;&#187;, le but est d&#8217;envoyer un mail à une date passée ou future, genre pour le rendu d&#8217;un devoir à 23h59m59s alors qu&#8217;on vient de le terminer à 2h42 du mat, tout en sachant que le prof ne le lira pas avant 7 ou 8 heures [...]]]></description>
			<content:encoded><![CDATA[<p>Plop à tous &#8230;</p>
<p>Aujourd&#8217;hui, une astuce de &laquo;&nbsp;gros noob&nbsp;&raquo;, le but est d&#8217;envoyer un mail à une date passée ou future, genre pour le rendu d&#8217;un devoir à 23h59m59s alors qu&#8217;on vient de le terminer à 2h42 du mat, tout en sachant que le prof ne le lira pas avant 7 ou 8 heures du mat&#8217; &#8230; le truc totalement useless quoi, mais souvent on perd des points pour des trucs de ce genre, &#8230; (quoi ?? ça vous est jamais arrivé ?? bande de lèche-*** &#8230;.)<br />
<span id="more-762"></span><br />
Les plus futés sauront qu&#8217;en modifiant la date de leur machine, on peut fausser les dates d&#8217;envoi (genre en reculant la date de deux jours, la plupart des mailers/logiciels de récupération de mails vont afficher le mail comme étant reçu il y a deux jours &#8230;).</p>
<p>Mais nous sommes informaticiens, et ce genre de méthode, c&#8217;est pour les noobs &#8230; nous on va coder un bon gros serveur SMTP pour envoyer des mails dans le temps xD&#8230;</p>
<p>En fait en python, ça consiste en 40 lignes de codes &#8230; (et encore &#8230; c&#8217;est crade comme d&#8217;hab <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</p>
<p>L&#8217;utilisation du script suivant ce fait comme suit :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">.<span class="sy0">/</span>nomDuScript <span class="st0">&#39;adresse serveur smtp du fai&#39;</span> <span class="st0">&#39;25&#39;</span> <span class="st0">&quot;date d&#39;envoi&quot;</span></div>
</li>
</ol>
</div>
<p>Ou, si l&#8217;on veut rajouter des faux headers (histoire d&#8217;expliquer le retard du mails, ou rajouter de faux relais &#8230;)</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">.<span class="sy0">/</span>nomDuScript <span class="st0">&#39;adresse serveur smtp du fai&#39;</span> <span class="st0">&#39;25&#39;</span> <span class="st0">&quot;date d&#39;envoi&quot;</span> <span class="st0">&#39;/chemin/du/fichier contenant/les/headers&#39;</span></div>
</li>
</ol>
</div>
<p>Un fichier d&#8217;exemples de (fake) headers à rajouter :</p>
<div class="geshi no smtp">
<ol>
<li class="li1">
<div class="de1">Received: from [1.3.3.7] (helo=lol.kikoo.rox)
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; by leskikoolol.attaqu.ent with esmtp id m4573r-573417-00
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; for lolmaster@kikoo.rox; Sat, 20 mar 2010 01:02:03 +0000
</div>
</li>
<li class="li1">
<div class="de1">Received: from kikoo.lol.rox (kikoo.lol.rox [10.3.3.7])
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; by lol.kikoo.rox with ESMTP id f7O1Sci1337
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; for lolmaster@kikoo.rox; Sat, 20 Mar 2010 00:00:00 +0000</div>
</li>
</ol>
</div>
<p>et l&#8217;exemple d&#8217;utilisation pour le header en question :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">.<span class="sy0">/</span>nomDuScript <span class="nu0">127.0</span><span class="nu0">.0</span><span class="nu0">.1</span> <span class="nu0">25</span> <span class="st0">&quot;Fri, 19 Mar 2010 23:59:58 +0000&quot;</span> headers</div>
</li>
</ol>
</div>
<p>Qui permettra de faire croire à votre correspondant ici lolmaster@kikoo.rox :</p>
<ul>
<li>que vous avez envoyé votre mail vendredi 19 mars 2010 à 23h59, par votre machine nommée &laquo;&nbsp;kikoo.lol.rox&nbsp;&raquo; à l&#8217;ip 10.3.3.7</li>
<li>que le mail a été reçu à minuit par le serveur smtp à l&#8217;ip 1.3.3.7 nommé &laquo;&nbsp;lol.kikoo.rox&nbsp;&raquo;</li>
<li>puis, que le mail a été relayé à 01h02 par le serveur smtp nommé &laquo;&nbsp;leskikoolol.attaqu.ent&nbsp;&raquo;</li>
</ul>
<p>Ce qui expliquera au correspondant le temps de latence entre l&#8217;envoi du mail et sa réception. (Faudra bien sûr changer les infos pour coller à la réalité ^^)</p>
<p>Le script, qui créé un serveur SMTP sur le port 8025 (il faudra configurer votre client mail pour utiliser le serveur SMTP 127.0.0.1 sur le port 8025) :</p>
<div class="geshi no python">
<div class="head">#!/usr/bin/env python</div>
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">from</span> <span class="kw3">smtpd</span> <span class="kw1">import</span> PureProxy</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">asyncore</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">asynchat</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">smtplib</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">re</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">sys</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> mySMTP <span class="br0">&#40;</span>PureProxy<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> <span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span>,s,n,d,f=<span class="st0">&quot;&quot;</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">date</span> = d</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">self</span>.<span class="me1">serv</span> = n</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">self</span>.<span class="me1">fich</span> = f</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; PureProxy.<span class="kw4">__init__</span><span class="br0">&#40;</span><span class="kw2">self</span>,s,<span class="kw2">None</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> process_message <span class="br0">&#40;</span><span class="kw2">self</span>, peer, mailfrom, rcpttos, data<span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp;p = <span class="kw3">re</span>.<span class="kw2">compile</span><span class="br0">&#40;</span><span class="st0">&quot;Date: .*&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;data = p.<span class="me1">sub</span><span class="br0">&#40;</span><span class="st0">&quot;Date: &quot;</span>+<span class="kw2">self</span>.<span class="me1">date</span>,data<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> <span class="kw2">self</span>.<span class="me1">fich</span> <span class="sy0">!</span>=<span class="st0">&quot;&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f = <span class="kw2">open</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">fich</span>,<span class="st0">&#39;r&#39;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;t = f.<span class="me1">read</span><span class="br0">&#40;</span><span class="nu0">1024</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;f.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;data = t + data</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">print</span> <span class="st0">&quot;Message + header: &quot;</span>+data</div>
</li>
<li class="li1">
<div class="de1">&nbsp;smtpSender = <span class="kw3">smtplib</span>.<span class="me1">SMTP</span><span class="br0">&#40;</span> <span class="kw2">self</span>.<span class="me1">serv</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>, <span class="kw2">self</span>.<span class="me1">serv</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;smtpSender.<span class="me1">sendmail</span><span class="br0">&#40;</span> mailfrom, rcpttos, data <span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;smtpSender.<span class="me1">quit</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> <span class="kw2">None</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> __name__ == <span class="st0">&quot;__main__&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="kw2">len</span><span class="br0">&#40;</span><span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#41;</span><span class="sy0">&lt;</span><span class="nu0">4</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">print</span> <span class="st0">&quot;Il manque des arguments : &quot;</span>+<span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>+<span class="st0">&quot; &#39;serveur smtp&#39;,&#39;port&#39;,&#39;date&#39;[, &#39;fichier header&#39;]&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">sys</span>.<span class="me1">exit</span><span class="br0">&#40;</span><span class="nu0">2</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="kw2">len</span><span class="br0">&#40;</span><span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#41;</span> == <span class="nu0">4</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; serv = mySMTP <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="st0">&quot;127.0.0.1&quot;</span>, <span class="nu0">8025</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>,<span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="br0">&#41;</span>,<span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="kw2">len</span><span class="br0">&#40;</span><span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#41;</span> == <span class="nu0">5</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; serv = mySMTP <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="st0">&quot;127.0.0.1&quot;</span>, <span class="nu0">8025</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span>,<span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="br0">&#41;</span>,<span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span>,<span class="kw3">sys</span>.<span class="me1">argv</span><span class="br0">&#91;</span><span class="nu0">4</span><span class="br0">&#93;</span><span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">try</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">asyncore</span>.<span class="me1">loop</span> <span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">except</span> <span class="kw2">KeyboardInterrupt</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">pass</span></div>
</li>
</ol>
</div>
<p>Amusez-vous bien <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=762">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/programmation/php-programmation/envoyer-des-sms-via-google-calendar-et-php-socket-party/" rel="bookmark" title="Permanent Link: Envoyer des sms via google calendar et php &#8230; socket party ^^">Envoyer des sms via google calendar et php &#8230; socket party ^^</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/php-programmation/fork-et-php-utile/" rel="bookmark" title="Permanent Link: Fork et PHP utile ??">Fork et PHP utile ??</a></li><li><a href="http://blog.gaetan-grigis.eu/mes-applicationsscripts/" rel="bookmark" title="Permanent Link: Mes Applications/Scripts">Mes Applications/Scripts</a></li><li><a href="http://blog.gaetan-grigis.eu/non-classe/ossec-et-iptables-ban-a-duree-variable/" rel="bookmark" title="Permanent Link: Ossec et Iptables : ban à durée variable">Ossec et Iptables : ban à durée variable</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/php-programmation/marre-du-spam-sur-wordpress/" rel="bookmark" title="Permanent Link: Marre du spam sur wordpress ??">Marre du spam sur wordpress ??</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/programmation/envoyer-des-mails-dans-le-passe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Checker la validité d&#8217;une adresse mail en PHP via SMTP</title>
		<link>http://blog.gaetan-grigis.eu/programmation/checker-la-validite-dune-adresse-mail-en-php-via-smtp/</link>
		<comments>http://blog.gaetan-grigis.eu/programmation/checker-la-validite-dune-adresse-mail-en-php-via-smtp/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 18:16:24 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[checker mail]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[protocole]]></category>
		<category><![CDATA[rfc 821]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[socket]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=627</guid>
		<description><![CDATA[plopinou &#8230; Il arrive toujours un jour où l&#8217;on doit checker la validité d&#8217;une adresse mail de façon sûr (plus qu&#8217;une simple vérification sur la validité du nom de domaine). Pour ce faire il faut directement se connecter sur le SMTP du domaine de l&#8217;adresse mail via un socket en PHP et envoyer l&#8217;adresse mail [...]]]></description>
			<content:encoded><![CDATA[<p>plopinou &#8230;</p>
<p>Il arrive toujours un jour où l&#8217;on doit checker la validité d&#8217;une adresse mail de façon sûr (plus qu&#8217;une simple vérification sur la validité du nom de domaine).<br />
Pour ce faire il faut directement se connecter sur le SMTP du domaine de l&#8217;adresse mail via un socket en PHP et envoyer l&#8217;adresse mail à checker.<br />
<span id="more-627"></span></p>
<p>Le petit script :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/*</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">Error Code</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;-1 not an adress mail</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;-2 can&#39;t connect to SMTP</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;-3 no mx server found</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;-4 connection rejected</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;-5 our adress has been rejected</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;-6 this adress isn&#39;t valid</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">&nbsp;-7 problem with EHLO command</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">*/</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> mailTester<span class="br0">&#40;</span><span class="re1">$mail</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">preg_match</span><span class="br0">&#40;</span><span class="st0">&quot;#^(.*)@(.*<span class="es0">\.</span>[a-z]{2,4})$#i&quot;</span><span class="sy0">,</span><span class="re1">$mail</span><span class="sy0">,</span><span class="re1">$ret</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$socket</span> <span class="sy0">=</span> <span class="kw3">socket_create</span><span class="br0">&#40;</span>AF_INET<span class="sy0">,</span> SOCK_STREAM<span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">getmxrr</span><span class="br0">&#40;</span><span class="re1">$ret</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">,</span><span class="re1">$r</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">count</span><span class="br0">&#40;</span><span class="re1">$r</span><span class="br0">&#41;</span><span class="sy0">==</span><span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#123;</span><span class="co1">//try to connect directly to the server</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sy0">@</span><span class="kw3">fsockopen</span><span class="br0">&#40;</span><span class="re1">$ret</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">,</span><span class="st0">&quot;25&quot;</span><span class="sy0">,</span><span class="re1">$er1</span><span class="sy0">,</span><span class="re1">$er2</span><span class="sy0">,</span><span class="nu0">0.5</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//can&#39;t use it with socket :s</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$er1</span><span class="sy0">&gt;</span><span class="nu0">0</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">-3</span><span class="sy0">;</span><span class="co1">//no mx server and no smtp server</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="re1">$r</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re1">$ret</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="kw3">socket_connect</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$r</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">,</span><span class="st0">&quot;25&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">-2</span><span class="sy0">;</span><span class="co1">//can&#39;t connect</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_recv</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$retour</span><span class="sy0">,</span><span class="nu0">1024</span><span class="sy0">,</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$ret</span><span class="sy0">=</span>getCodeMsg<span class="br0">&#40;</span><span class="re1">$retour</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$ret</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">!=</span><span class="nu0">220</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">-4</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_write</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="st0">&quot;EHLO google.com<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_recv</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$retour</span><span class="sy0">,</span><span class="nu0">1024</span><span class="sy0">,</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$ret</span><span class="sy0">=</span>getCodeMsg<span class="br0">&#40;</span><span class="re1">$retour</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$ret</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">!=</span><span class="nu0">250</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">-7</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_write</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="st0">&quot;MAIL FROM: &lt;mailchecker@gmail.com&gt;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_recv</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$retour</span><span class="sy0">,</span><span class="nu0">1024</span><span class="sy0">,</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$ret</span><span class="sy0">=</span>getCodeMsg<span class="br0">&#40;</span><span class="re1">$retour</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$ret</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">!=</span><span class="nu0">250</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">-5</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_write</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="st0">&quot;RCPT TO: &lt;&quot;</span><span class="sy0">.</span><span class="re1">$mail</span><span class="sy0">.</span><span class="st0">&quot;&gt;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_recv</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="re1">$retour</span><span class="sy0">,</span><span class="nu0">1024</span><span class="sy0">,</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_write</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="sy0">,</span><span class="st0">&quot;quit<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="co1">//bisou</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re1">$ret</span> <span class="sy0">=</span>getCodeMsg<span class="br0">&#40;</span><span class="re1">$retour</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">socket_close</span><span class="br0">&#40;</span><span class="re1">$socket</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re1">$ret</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">==</span><span class="nu0">250</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">1</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="kw1">return</span> <span class="nu0">-6</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> <span class="nu0">-1</span><span class="sy0">;</span><span class="co1">//not an adress mail</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> getCodeMsg<span class="br0">&#40;</span><span class="re1">$ret</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">preg_match</span><span class="br0">&#40;</span><span class="st0">&quot;#^([0-9]+) (.*)$#im&quot;</span><span class="sy0">,</span><span class="re1">$ret</span><span class="sy0">,</span><span class="re1">$tab</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw3">array_shift</span><span class="br0">&#40;</span><span class="re1">$tab</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">return</span> <span class="re1">$tab</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>et hop, c&#8217;est tout, y&#8217;a pas besoin de plus d&#8217;explication en plus je pense, au pire, il y a pas mal de doc sur le procotole SMTP. (Le domaine google.com et l&#8217;adresse mailchecker sont des fakes, mais il faut fournir des domaines existants et une adresse mail pour certain serveurs SMTP, google m&#8217;a semblé être le bon choix ^^).</p>
<p>Si c&#8217;est lent, c&#8217;est normal, suivant les serveurs SMTP, la vérification peut prendre entre 5secs et 30secs voir plus, pour des traitements sur des lots de mail (genre des newsletters), il est possible de faire une boucle sur les RCPT TO: pour les adresses mail d&#8217;un même domaine, ce qui permet d&#8217;utiliser la connexion courrantes et évite d&#8217;ouvrir un trop grand nombre de connexion sur le serveur en question.</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=627">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/mes-applicationsscripts/" rel="bookmark" title="Permanent Link: Mes Applications/Scripts">Mes Applications/Scripts</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/petit-serveur-dadresse-mail-de-diffusion/" rel="bookmark" title="Permanent Link: Petit serveur d&#8217;adresse mail de diffusion">Petit serveur d&#8217;adresse mail de diffusion</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/envoyer-des-mails-dans-le-passe/" rel="bookmark" title="Permanent Link: Envoyer des mails dans le passé">Envoyer des mails dans le passé</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/creer-son-propre-service-de-mail-jetable-avec-appengine/" rel="bookmark" title="Permanent Link: Créer son propre service de mail jetable avec appengine">Créer son propre service de mail jetable avec appengine</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/utiliser-google-app-pour-gerer-son-domaine/" rel="bookmark" title="Permanent Link: Utiliser Google App pour gérer son Domaine">Utiliser Google App pour gérer son Domaine</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/programmation/checker-la-validite-dune-adresse-mail-en-php-via-smtp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Configurer un serveur SMTP et cacher sa bannière (Exim4)</title>
		<link>http://blog.gaetan-grigis.eu/systeme/configurer-un-serveur-smtp-et-cacher-sa-banniere-exim4/</link>
		<comments>http://blog.gaetan-grigis.eu/systeme/configurer-un-serveur-smtp-et-cacher-sa-banniere-exim4/#comments</comments>
		<pubDate>Sat, 01 Aug 2009 09:46:32 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[cacher bannière]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[exim4]]></category>
		<category><![CDATA[smtp]]></category>
		<category><![CDATA[spam]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=523</guid>
		<description><![CDATA[Bijour à vous &#8230; Today, la configuration d&#8217;un serveur de mail exim4 (le serveur smtp par défaut de Debian &#8230; ), à la base je voulais juste m&#8217;amuser à filer une astuce pour cacher la bannière du serveur (Il est fufu mon serveur smtp!!! Gaffe au backstab ), et pis, prendre des screenshots, c&#8217;est pas [...]]]></description>
			<content:encoded><![CDATA[<p>Bijour à vous &#8230;</p>
<p>Today, la configuration d&#8217;un serveur de mail exim4 (le serveur smtp par défaut de Debian &#8230; ), à la base je voulais juste m&#8217;amuser à filer une astuce pour cacher la bannière du serveur (Il est fufu mon serveur smtp!!! Gaffe au backstab <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), et pis, prendre des screenshots, c&#8217;est pas compliqué, donc ben vous aurez droits à la version complète du Grand LoupZeur &#8230; si c&#8217;est pas la lose ça <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . (Mon but est seulement de configurer le smtp, pas de truc anti-spam et &#8230;, y&#8217;a plein de tutos pour ça)</p>
<p>Sinon, quelques liens sur des tutos d&#8217;installation d&#8217;exim4 :</p>
<ul>
<li><a href="http://forum.ubuntu-fr.org/viewtopic.php?id=8099" target="_blank">forum ubuntu</a> (2005) simple install d&#8217;exim4</li>
<li><a href="http://didier.misson.net/blog/2006/11/18/exim-4-sur-un-serveur-debian-config-et-essais/" target="_blank">blog intéressant</a> exim 4 + securité + virtual</li>
</ul>
<p>Pour l&#8217;installation, la démarche à suivre est simple &#8230;</p>
<pre>apt-get install exim4
dpkg-reconfigure exim4-config</pre>
<p>Pour un dédié j&#8217;ai choisit la config internet (comme j&#8217;ai une ip fixe, je n&#8217;ai pas besoin de smarthost):<br />
<img class="aligncenter size-medium wp-image-533" title="config-internet" src="http://blog.gaetan-grigis.eu/wp-content/uploads/2009/08/config-internet-300x110.png" alt="config-internet" width="300" height="110" /><br />
Ensuite, le nom de domaine utilisé :<br />
<img class="aligncenter size-medium wp-image-532" title="fqdn-exim4" src="http://blog.gaetan-grigis.eu/wp-content/uploads/2009/08/fqdn-exim4-300x137.png" alt="fqdn-exim4" width="300" height="137" /><br />
L&#8217;ip sur laquelle on écoute :<br />
<img class="aligncenter size-medium wp-image-531" title="ip-exim4" src="http://blog.gaetan-grigis.eu/wp-content/uploads/2009/08/ip-exim4-300x137.png" alt="ip-exim4" width="300" height="137" /><br />
Les domaines pour lesquelles on acceptes les mails (noté la séparation des domaines par <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  :<br />
<img class="aligncenter size-medium wp-image-530" title="mail-destination-accepte" src="http://blog.gaetan-grigis.eu/wp-content/uploads/2009/08/mail-destination-accepte-300x122.png" alt="mail-destination-accepte" width="300" height="122" /><br />
Les relais que l&#8217;on autorise à envoyer des mails (NE JAMAIS AUTORISER TOUT LES DOMAINES, c&#8217;est le principal vecteur de spam)<br />
<img class="aligncenter size-medium wp-image-529" title="relay-autorise-exim4" src="http://blog.gaetan-grigis.eu/wp-content/uploads/2009/08/relay-autorise-exim4-300x111.png" alt="relay-autorise-exim4" width="300" height="111" /><br />
et la même choses pour les ip (autorisé les ips local, si vous êtes dans un réseau local).<br />
<img class="aligncenter size-medium wp-image-528" title="relay-ip" src="http://blog.gaetan-grigis.eu/wp-content/uploads/2009/08/relay-ip-300x122.png" alt="relay-ip" width="300" height="122" /><br />
Les requêtes DNS (pour ma part j&#8217;ai mis non comme j&#8217;ai un serveur DNS local normalement, ça ne pose pas de problème, à part si le DNS tombe, tous les mails seront mis dans la queue &#8230; ça m&#8217;est arrivé suite à la &laquo;&nbsp;sécurisation&nbsp;&raquo; de mon serveur DNS <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  j&#8217;ai oublié d&#8217;autoriser 127.0.0.1 à faire des requêtes DNS :p ololz le Jean-Kevin!!!! ).<br />
<img class="aligncenter size-medium wp-image-527" title="dns-exim4" src="http://blog.gaetan-grigis.eu/wp-content/uploads/2009/08/dns-exim4-300x130.png" alt="dns-exim4" width="300" height="130" /><br />
Le maildir (pour ma part, /var étant plus petit que /home, pour gagner de la place je l&#8217;ai mis dans le repertoire utilisateur).<br />
<img class="aligncenter size-medium wp-image-526" title="le-maildir" src="http://blog.gaetan-grigis.eu/wp-content/uploads/2009/08/le-maildir-300x123.png" alt="le-maildir" width="300" height="123" /><br />
et c&#8217;est la fin ^^, on demande le split config, c&#8217;est plus simple pour le noob comme moi de comprendre la configuration du soft :<br />
<img class="aligncenter size-medium wp-image-525" title="split-config-exim4" src="http://blog.gaetan-grigis.eu/wp-content/uploads/2009/08/split-config-exim4-300x138.png" alt="split-config-exim4" width="300" height="138" /></p>
<p>Bon donc voilà, l&#8217;ennui, c&#8217;est que lorsque l&#8217;on se connecte en telnet sur le port 25 de mon serveur, exim donne directement le nom du logiciel et sa version (sacrilège!!!).</p>
<p>Après avoir cherché un petit moment &#8230; voici l&#8217;astuce du Père GG :<br />
Ouvrir le fichier /etc/exim4/conf.d/main/02_exim4-config_options (avec un éditeur plein de charme genre vi ^^).<br />
et modifier les dernières lignes :</p>
<pre>MAIN_SMTP_BANNER = "${primary_hostname} ESMTP Exim ${version_number} (Debian package MAIN_PACKAGE_VERSION) ${tod_full}"
smtp_banner = $smtp_active_hostname ESMTP Exim $version_number $tod_full</pre>
<p>pour quelles ressemblent à ceci :</p>
<pre>MAIN_SMTP_BANNER = "${primary_hostname}"
smtp_banner = $smtp_active_hostname</pre>
<p>Et désormais lors de la connexion en telnet à la bête, ça retourne seulement le nom de ma machine (comme c&#8217;est le seul truc que les spammeurs/hackers connaissent déjà, on ne lui apprend donc rien) :</p>
<pre>kikoo@WillOwnDaWorld:~$ telnet gaetan-grigis.eu 25
Trying mon.ip.a.moi...
Connected to gaetan-grigis.eu.
Escape character is '^]'.
220 r22686.ovh.net
quit
221 r22686.ovh.net closing connection
Connection closed by foreign host.</pre>
<p>Et voilà, sinon, pour les petits désagrément, les stats de tentatives d&#8217;utilisation de mon serveur en tant que relais publique :<br />
<img class="aligncenter size-medium wp-image-524" title="spam-exim4" src="http://blog.gaetan-grigis.eu/wp-content/uploads/2009/08/spam-exim4-300x140.png" alt="spam-exim4" width="300" height="140" /><br />
En rouge, ce sont les mails bloqués qui n&#8217;appartiennent pas à mon domaine &#8230; je vais peut-être créer une liste d&#8217;ip à bannir ^^.</p>
<p>Et c&#8217;est la fin &#8230; go spam Da Worldz <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=523">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/securite/lien-utile-pour-le-datamining/" rel="bookmark" title="Permanent Link: Lien utile pour le datamining">Lien utile pour le datamining</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/modifier-les-headers-de-firefox-user-agent/" rel="bookmark" title="Permanent Link: Modifier les headers de firefox (user-agent, &#8230;)">Modifier les headers de firefox (user-agent, &#8230;)</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/cacher-des-surprises-dans-votre-site-web/" rel="bookmark" title="Permanent Link: Cacher des surprises dans votre site web ^^">Cacher des surprises dans votre site web ^^</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/envoyer-des-mails-dans-le-passe/" rel="bookmark" title="Permanent Link: Envoyer des mails dans le passé">Envoyer des mails dans le passé</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/checker-la-validite-dune-adresse-mail-en-php-via-smtp/" rel="bookmark" title="Permanent Link: Checker la validité d&#8217;une adresse mail en PHP via SMTP">Checker la validité d&#8217;une adresse mail en PHP via SMTP</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/systeme/configurer-un-serveur-smtp-et-cacher-sa-banniere-exim4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

