<?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>Emile "iMil" Heitor 's home &#187; TLS</title>
	<atom:link href="http://imil.net/wp/tag/tls/feed/" rel="self" type="application/rss+xml" />
	<link>http://imil.net/wp</link>
	<description>life, unix and stuff</description>
	<lastBuildDate>Wed, 08 Feb 2012 22:31:28 +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>SMTP AUTH sous NetBSD, vite fait</title>
		<link>http://imil.net/wp/2011/11/11/smtp-auth-sous-netbsd-vite-fait/</link>
		<comments>http://imil.net/wp/2011/11/11/smtp-auth-sous-netbsd-vite-fait/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 12:15:56 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Blogroll]]></category>
		<category><![CDATA[NetBSD]]></category>
		<category><![CDATA[SASL]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[TLS]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=659</guid>
		<description><![CDATA[Heureux possesseur d&#8217;un téléphone Android, j&#8217;utilise comme bon nombre de mes compères le logiciel K9-mail, probablement le meilleur MUA disponible sur cette plateforme, et qui a le bon goût d&#8217;être Libre, au contraire des centaines de milliers d&#8217;applis merdiques à 0.99€.
Jusqu&#8217;à présent, je n&#8217;utilisais K9 que pour lire mon mail, essentiellement dans le metro, &#8220;on [...]]]></description>
			<content:encoded><![CDATA[<p>Heureux possesseur d&#8217;un téléphone Android, j&#8217;utilise comme bon nombre de mes compères le logiciel <a href="https://github.com/k9mail/k-9/wiki/">K9-mail</a>, probablement le meilleur MUA disponible sur cette plateforme, et qui a le bon goût d&#8217;être Libre, au contraire des centaines de milliers d&#8217;applis merdiques à 0.99€.<br />
Jusqu&#8217;à présent, je n&#8217;utilisais K9 que pour lire mon mail, essentiellement dans le metro, &#8220;on the go&#8221;. Et puis finalement, je suis dit qu&#8217;il serait fort convivial de pouvoir utiliser mon serveur mail perso depuis un peu partout.<br />
Mon serveur mail, est-il besoin de le préciser, est un domU NetBSD sur lequel sont executés <a href="http://www.sendmail.com/sm/open_source/">Sendmail</a> et <a href="http://dovecot.org/">dovecot</a>.<br />
Il y a <a href="http://imil.net/wp/2005/09/18/chula-chupala/">un certain temps de cela</a>, j&#8217;avais documenté la méthode pour FreeBSD, et assez étrangement, jamais pour NetBSD. Je vais donc corriger le tir de ce pas.</p>
<p>La première chose à faire est de préciser que nous souhaitons bénéficier du support TLS et SASL dans sendmail. Ceci est réalisé dans le fichier <code>/etc/mk.conf</code>:</p>
<pre>
PKG_OPTIONS.sendmail=   tls sasl
</pre>
<p>Je ne sais pas si cela est lié au fait que la machine sur laquelle j&#8217;ai mené l&#8217;opération est &#8220;encore&#8221; en 5.0.2, mais la compilation de <i>cyrus-sasl</i> a misérablement échoué dans sa configuration par défaut. Ceci:</p>
<pre>
db_ndbm.c: In function '_sasldb_getdata':
db_ndbm.c:95: warning: passing argument 3 of 'utils->getcallback' from incompatible pointer type
</pre>
<p>M&#8217;a mis sur la voie, et j&#8217;ai donc ajouté dans mon <code>/etc/mk.conf</code> la ligne suivante:</p>
<pre>
SASL_DBTYPE=            berkeley
</pre>
<p>Un <code>make update clean</code> plus loin, tout était installé. Il est à noter que, par défaut, <i>cyrus-sasl</i> ne fournit aucun plugin, aussi, il sera nécessaire d&#8217;en installer au moins un, par exemple:</p>
<pre>
# cd /usr/pkgsrc/security/cy2-login
# make install clean
</pre>
<p>Qui nous permettra d&#8217;utiliser le couple <i>login/password</i> de notre système. Deux étapes sont nécessaires pour utiliser cette méthode, tout d&#8217;abord, il faut installer le démon <code>saslauthd</code>, en charge des échange d&#8217;authentification <i>plain text</i>:</p>
<pre>
# cd /usr/pkgsrc/security/cyrus-saslauthd/
# make install clean
# cp /usr/pkg/share/examples/rc.d/saslauthd /etc/rc.d
# echo "saslauthd=YES" >> /etc/rc.conf
# /etc/rc.d/saslauthd start
</pre>
<p>Puis de préciser au <i>plugin SASL</i> qu&#8217;il devra utiliser le démon <code>saslauthd</code> pour l&#8217;authentification en provenance de <i>sendmail</i>.</p>
<pre>
# cat /usr/pkg/lib/sasl2/Sendmail.conf
pwcheck_method:saslauthd
</pre>
<p>Nous ajoutons maintenant à <i>sendmail</i> la gestion de ces deux nouvelles fonctionnalités:</p>
<pre>
# cd /usr/pkg/share/sendmail/cf
# cat monserveur.mc
[...]
dnl ### SMTP AUTH
define(`confAUTH_MECHANISMS', `LOGIN')dnl
TRUST_AUTH_MECH(`LOGIN')dnl
dnl ### STARTTLS
dnl ### Ces sertificats sont en provenance de CACert.org. Il ne s'agit pas de certificats auto-signés
define(`confCACERT_PATH',`/etc/mail/certs/')dnl
define(`confCACERT', `/etc/mail/certs/cacert.crt')
define(`confSERVER_CERT',`/etc/mail/certs/certificat_serveur.pem')dnl
define(`confSERVER_KEY',`/etc/mail/certs/certificat_privatekey.pem')dnl
[...]
</pre>
<p>Puis nous compilons et installons la nouvelle configuration:</p>
<pre>
# make install-cf CF=monserveur
rm -f monserveur.cf
m4 ../m4/cf.m4 monserveur.mc > monserveur.cf || ( rm -f monserveur.cf &#038;&#038; exit 1 )
echo "### monserveur.mc ###" >>monserveur.cf
sed -e 's/^/# /' monserveur.mc >>monserveur.cf
chmod 444 monserveur.cf
/usr/bin/install -c -o root -g wheel -m 0444 monserveur.cf /etc/mail/sendmail.cf
/usr/bin/install -c -o root -g wheel -m 0444 monserveur.cf /etc/mail/submit.cf
</pre>
<p>À l&#8217;issue d&#8217;un <code>/etc/rc.d/sendmail restart</code>, nous devrions constater les choses suivantes:</p>
<pre>
# sendmail -d0.1 -bv root | grep SASL
                SASLv2 SCANF SOCKETMAP STARTTLS TCPWRAPPERS USERDB XDEBUG
</pre>
<p>Et également:</p>
<pre>
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220monserveur ESMTP Sendmail 8.14.5/8.14.5; Fri, 11 Nov 2011 13:13:17 +0100 (CET)
ehlo localhost
250-monserveur Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE 5000000
250-DSN
250-ETRN
250-AUTH LOGIN
250-STARTTLS
250-DELIVERBY
250 HELP
</pre>
<p>Ne reste alors qu&#8217;à configurer votre MUA pour qu&#8217;il utilise votre serveur SMTP sur le port 587 <b>en TLS</b> avec la méthode LOGIN, avec les <i>login/passwd</i> de l&#8217;utilisateur souhaité.</p>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2011/11/11/smtp-auth-sous-netbsd-vite-fait/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ce ne sont pas ces dro&#xEF;des que vous recherchez.</title>
		<link>http://imil.net/wp/2007/05/26/ce-ne-sont-pas-ces-drodes-que-vous-recherchez/</link>
		<comments>http://imil.net/wp/2007/05/26/ce-ne-sont-pas-ces-drodes-que-vous-recherchez/#comments</comments>
		<pubDate>Sat, 26 May 2007 19:35:15 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[lighttp]]></category>
		<category><![CDATA[TLS]]></category>

		<guid isPermaLink="false">http://imil.net/wp/?p=133</guid>
		<description><![CDATA[Sur mon serveur perso, par d&#xE9;finition, y&#8217;a des trucs perso. De plus, &#xE0; l&#8217;approche d&#8217;une soci&#xE9;t&#xE9; nouvelle, il n&#8217;est pas superflu de prendre quelques mesures afin de pr&#xE9;server un semblant d&#8217;intimit&#xE9;.
Pour cela, les bons g&#xE9;nies de l&#8217;Internet on cr&#xE9;&#xE9;, il y a bien longtemps, SSL.
Mais voila, il y a d&#8217;autres trucs et bidules que je [...]]]></description>
			<content:encoded><![CDATA[<p>Sur mon serveur perso, par d&#xE9;finition, y&#8217;a des trucs perso. De plus, <a href="http://www.lemonde.fr/web/article/0,1-0@2-651865,36-915090@51-886229,0.html">&#xE0; l&#8217;approche d&#8217;une soci&#xE9;t&#xE9; nouvelle</a>, il n&#8217;est pas superflu de prendre quelques mesures afin de pr&#xE9;server un semblant d&#8217;intimit&#xE9;.<br />
Pour cela, les <a href="http://wp.netscape.com/eng/security/SSL_2.html">bons g&#xE9;nies de l&#8217;Internet</a> on cr&#xE9;&#xE9;, il y a bien longtemps, <a href="http://fr.wikipedia.org/wiki/SSL">SSL</a>.<br />
Mais voila, il y a d&#8217;autres trucs et bidules que je souhaite pouvoir exposer en place publique. J&#8217;entreprend donc de jouer avec les directives de <a href="http://trac.lighttpd.net/trac/wiki/Docs%3AConfigurationOptions">lighttpd</a> pour cr&#xE9;er des exclusions et autres redirections.<br />
Le lien qui eclaire tout, c&#8217;est <a href="http://trac.lighttpd.net/trac/wiki/HowToRedirectHttpToHttps">celui l&#xE0;</a>. En substance, nous allons rediriger tout ce qui matche <i>mon.host.magique</i> et faire passer ce traffic en SSL.<br />
Voici la conf :</p>
<p>On d&#xE9;clare le serveur TLS :</p>
<pre>
$SERVER["socket"] == "mon.host.magique:443" {
  ssl.engine = "enable"
  ssl.pemfile = "/etc/ssl/certs/lighttpd.pem"
  server.document-root = "/vers/www/magique"
  server.name = "mon.host.magique"
  auth.backend.htpasswd.userfile = "/path/vers/lighttpd-htpasswd.user"
  auth.require = ( "/" =>
    (
       "method" => "basic",
       "realm" => "ce ne sont pas ces dro&#xEF;des que vous recherchez.",
       "require" => "valid-user"
    )
  )
}
</pre>
<p>Puis la redirection, tout ce qui arrive sur le port 80 du host &#8220;mon.host.magique&#8221; sera redirig&#xE9; vers son &#xE9;quivalent en HTTPS. On note les regexps compatibles Perl qui nous permettent de r&#xE9;cup&#xE9;rer l&#8217;URL compl&#xE8;te.</p>
<pre>
$SERVER["socket"] == "mon.host.magique:80" {
  $HTTP["host"] == "mon.host.magique" {
    url.redirect = ( "^/(.*)" => "https://mon.host.magique/$1" )
    server.name = "mon.host.magique"
  }
}
</pre>
<p>Et enfin les restrictions gentilles, on n&#8217;applique pas de restrictions &#xE0; host1.host.magique, unautre.host.magique et blip.host.magique car ils ont leur propre d&#xE9;claration dans le fichier <code>lighttpd.conf</code>. Pour le reste, seuls la racine, le repertoire <code>public</code> ainsi que les fichiers .php et .jpg sont autoris&#xE9;s.</p>
<pre>
$HTTP["host"] !~ "(host1|unautre|blip).host.magique" {
  server.document-root = "/var/ou/c/est/mignon"
  $HTTP["url"] !~ "(^/$|^/public|php$|jpg$)" { url.access-deny = ( "" ) }
}
</pre>
<p>C&#8217;est quand m&#xEA;me un peu bien.<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2007/05/26/ce-ne-sont-pas-ces-drodes-que-vous-recherchez/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>chula, chupala</title>
		<link>http://imil.net/wp/2005/09/18/chula-chupala/</link>
		<comments>http://imil.net/wp/2005/09/18/chula-chupala/#comments</comments>
		<pubDate>Sun, 18 Sep 2005 10:14:54 +0000</pubDate>
		<dc:creator>iMil</dc:creator>
				<category><![CDATA[Ma vie, mon oeuvre]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[Ma vie. mon oeuvre]]></category>
		<category><![CDATA[OpenLDAP]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[TLS]]></category>

		<guid isPermaLink="false">http://imil.net/wp/archives/51</guid>
		<description><![CDATA[note: cette nouvelle est sujette à modifications en fonction de mon avancement dans la mise en place et la configuration de ma plateforme
Quelques liens glânés de-ci de-la pour monter une plate-forme mail couillue :
. SMTP Auth avec sendmail et FreeBSD
. SMTP Auth, la doc officielle de sendmail.org
. Un overview de l&#8217;integration SASL par l&#8217;ami asyd
. [...]]]></description>
			<content:encoded><![CDATA[<p><em>note: cette nouvelle est sujette à modifications en fonction de mon avancement dans la mise en place et la configuration de ma plateforme</em></p>
<p>Quelques liens glânés de-ci de-la pour monter une plate-forme mail couillue :</p>
<p>. <a href="http://docs.snake.de/smtp-auth.html">SMTP Auth avec sendmail et FreeBSD</a><br />
. <a href="http://www.sendmail.org/~ca/email/auth.html">SMTP Auth, la doc officielle de sendmail.org</a><br />
. <a href="http://www.asyd.net/docs/sasl.html">Un overview de l&#8217;integration SASL par l&#8217;ami asyd</a><br />
. <a href="http://www.minivisp.org/docs/install_minivisp_freeebsd_5.html">l&#8217;excellent projet MiniVisp de l&#8217;ami Hug</a><br />
. <a href="http://www.onlamp.com/pub/a/onlamp/excerpt/sendmailckbk_chap01/">FABULEUSE doc sur l&#8217;interfacage sendmail / LDAP</a><br />
. <a href="http://www.falkotimme.com/howtos/sendmail_smtp_auth_tls/">Sendmail + Auth + TLS</a><br />
. <a href="http://www.sendmail.org/m4/starttls.html">Utilisation de STARTTLS avec sendmail et l&#8217;accessdb</a><br />
. <a href="http://www.sendmail.org/~gshapiro/8.10.Training/LDAPConfig.html">la liste des parametres compris par confLDAP_DEFAULT_SPEC (binddn, password&#8230;)</a><br />
. <a href="http://netfrag.org/docs/topics/caesar/howto-sendmail_tls-imap_sasl-ldap-kerberosV.html">à la fin de ce tuto vous trouverez de bons exemples de virtuser LDAP</a><br />
. <a href="http://www.puresimplicity.net/~hemi/freebsd/sendmail.html">FreeBSD fast and secure mail server using sendmail and imap-uw (eeeet si)<br />
. </a><a href="http://www.doorbot.com/guides/sendmail/securemail/">Secure Email Using Cyrus IMAP, Sendmail, and SASLv2</a><br />
. <a href="http://www.openldap.org/doc/admin23/quickstart.html">Le classique mais toujours efficace OpenLDAP QuickStart Guide</a><br />
. <a href="http://www.cultdeadsheep.org/FreeBSD/docs/Quick_and_dirty_FreeBSD_5_x_and_nss_ldap_mini-HOWTO.html">Le NSS / PAM LDAP HOWTO pour FreeBSD 5.x</a><br />
. <a href="http://wiki.bsd-crew.de/index.php/Cyrus-saslauthd_LDAP-Konfiguration">saslauthd + LDAP</a><br />
. <a href="http://www.acme.com/mail_filtering/sendmail_config_frameset.html">Des astuces pour rendre sendmail plus agressif</a><br />
. <a href="http://www.padl.com/OSS/MigrationTools.html">les migration tools de padl.com</a><br />
. <a href="http://www.openldap.org/pub/ksoper/OpenLDAP_TLS_howto.html">OpenLDAP TLS HOWTO</a><br />
. <a href="http://www.technoids.org/dk-milter.html">Installer le milter DomainKey</a><br />
. <a href="http://www.elandsys.com/resources/sendmail/domainkeys.html">Encore une doc sur domainkey</a></p>
<p>Voici la partie relative de mon /etc/make.conf<br />
<code><br />
SENDMAIL_CFLAGS=-I/usr/local/include -DSASL=2 -DLDAPMAP -DSTARTTLS<br />
SENDMAIL_LDFLAGS=-L/usr/local/lib<br />
SENDMAIL_LDADD=-lsasl2 -lldap -llber<br />
</code><br />
Et les parties reliées de mon sendmail.mc<br />
<code><br />
define(`confLDAP_DEFAULT_SPEC', ` -h localhost -b dc=imil,dc=net')<br />
FEATURE(ldap_routing)<br />
LDAPROUTE_DOMAIN(`mail.imil.net')<br />
</code><br />
[...]<br />
<code><br />
TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 LOGIN')<br />
define(`confDEF_AUTH_INFO',   `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')<br />
define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 LOGIN')<br />
dnl p: uniquement TLS pour l'authentification type Login<br />
dnl A: Use the AUTH= parameter for the MAIL FROM command only when authentication succeeded.<br />
define(`confAUTH_OPTIONS', `A p')<br />
</code><br />
[...]<br />
<code><br />
define(`confCACERT_PATH', `/etc/mail/ssl')dnl<br />
define(`confCACERT', `/etc/mail/ssl/cacert.pem')dnl<br />
define(`confSERVER_CERT', `/etc/mail/ssl/sendmail.pem')dnl<br />
define(`confSERVER_KEY', `/etc/mail/ssl/sendmail.pem')dnl<br />
define(`confCLIENT_CERT', `/etc/mail/ssl/sendmail.pem')dnl<br />
define(`confCLIENT_KEY', `/etc/mail/ssl/sendmail.pem')dnl<br />
</code></p>
<p>Quelques trucs :</p>
<p>Dans le saslauthd.conf, ne pas oublier :<br />
<code><br />
ldap_search_base: dc=domaine,dc=com<br />
ldap_filter: uid=%u<br />
# pour activer TLS<br />
ldap_start_tls: yes<br />
</code></p>
<p>Pour bénéficier de toutes les propriétés nécessaires, s&#8217;assurer d&#8217;avoir les includes suivants dans son slapd.conf :<br />
<code><br />
include         /usr/local/etc/openldap/schema/core.schema<br />
include         /usr/local/etc/openldap/schema/cosine.schema<br />
include         /usr/local/etc/openldap/schema/inetorgperson.schema<br />
include         /usr/local/etc/openldap/schema/nis.schema<br />
include         /usr/local/etc/openldap/schema/misc.schema<br />
</code></p>
<p>Le module ldap_routing de sendmail communique par defaut en LDAPv2, il faut ajouter l&#8217;option &#8220;-w 3&#8243; à votre confLDAP_DEFAULT_SPEC pour le faire communiquer en LDAPv3.</p>
<p>Mon /etc/ldap.conf, linké à /usr/local/etc/ldap.conf et à /usr/local/etc/nss_ldap.conf<br />
<code><br />
host 127.0.0.1<br />
base dc=imil,dc=net<br />
uri ldap://127.0.0.1/<br />
ldap_version 3<br />
binddn cn=user,dc=imil,dc=net<br />
bindpw unpass<br />
port 389<br />
pam_password clear<br />
# activer le TLS<br />
ssl start_tls<br />
</code></p>
<p>J&#8217;utilise dovecot pour l&#8217;acces pop / imap, j&#8217;ai eu l&#8217;agréable surprise de voir qu&#8217;il créait seul les mailboxes des utilisateurs à leur premier login, de fait, en settant &#8220;/repertoire_en_777/utilisateur&#8221; comme homedir dans l&#8217;entrée LDAP de l&#8217;utilisateur, on se retrouve avec un systeme de provisionning automatique du meilleur gout.</p>
<p><strong>Addon</strong></p>
<p>Après avoir migré l&#8217;ensemble des services en TLS, j&#8217;ai constaté que dovecot ne permettait malheureusement pas de réaliser l&#8217;authentification LDAP sur TLS. Sur les conseils de mon ami Eric, j&#8217;ai pondu un <a href="http://imil.net/stuff/dovecot-tls-ldap.patch">rapide patch</a> qui rend ce fonctionnement possible après avoir ajouté :</p>
<p><code>start_tls = 1</code></p>
<p>dans le dovecot-ldap.conf</p>
<p><strong>Add-on</strong></p>
<p>Au sujet de domainkey et DKIM, ne pas oublier d&#8217;ajouter l&#8217;option -i /path/vers/les/hosts/locaux (man dkim-milter), le cas échéant seuls les les mails en provenance de 127.0.0.1 seront signés.</p>
<p>Pour finir, la seule application &#8220;standalone&#8221; (comprendre, qui n&#8217;a pas besoin d&#8217;apache / php et tous leurs amis) convenable pour manipuler une database LDAP reste &#8220;gq&#8221;. J&#8217;aurais imaginé que les choses avaient un peu évolué depuis 5 ans mais finalement non.</p>
<p><strong>Add-on</strong></p>
<p><strong>N&#8217;oubliez pas de placer la directive :</strong><br />
<code><br />
define(`confLDAP_CLUSTER', `nom-convivial')<br />
</code><br />
Et de renseigner le champs &#8220;sendmailMTACluster&#8221; dans toutes vos entrées LDAP.</p>
<p>le cas échéant les queries LDAP sont tout simplement ignorées.</p>
<p>De plus, il est inutile de protéger l&#8217;accès au subtree ou=sendmail, la doc OpenLDAP nous montre comment libérer ce scope :<br />
<code><br />
access to dn.subtree="ou=sendmail,dc=dotpure,dc=net" by * read<br />
</code><br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://imil.net/wp/2005/09/18/chula-chupala/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: imil.net @ 2012-02-09 09:13:09 by W3 Total Cache -->
