<?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>Jan-Piet Mens &#187; RFC</title>
	<atom:link href="http://blog.fupps.com/tag/rfc/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.fupps.com</link>
	<description>my animals and other friends</description>
	<lastBuildDate>Sat, 31 Jul 2010 14:34:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>DNS RFC dependency graphs</title>
		<link>http://blog.fupps.com/2010/05/24/dns-rfc-dependency-graphs/</link>
		<comments>http://blog.fupps.com/2010/05/24/dns-rfc-dependency-graphs/#comments</comments>
		<pubDate>Mon, 24 May 2010 15:04:22 +0000</pubDate>
		<dc:creator>Jan-Piet Mens</dc:creator>
				<category><![CDATA[DNS]]></category>
		<category><![CDATA[RFC]]></category>

		<guid isPermaLink="false">http://blog.fupps.com/?p=3468</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.nominet.org.uk/tech/2010/05/24/436/"><img src="http://blog.fupps.com/wp-content/media/2010/ZZ7ADF75DC.jpg" width="500" height="228" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fupps.com/2010/05/24/dns-rfc-dependency-graphs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Domino SMTP: 5xx vs 4xx</title>
		<link>http://blog.fupps.com/2010/02/04/domino-smtp-5xx-vs-4xx/</link>
		<comments>http://blog.fupps.com/2010/02/04/domino-smtp-5xx-vs-4xx/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 10:42:33 +0000</pubDate>
		<dc:creator>Jan-Piet Mens</dc:creator>
				<category><![CDATA[DomiNotes]]></category>
		<category><![CDATA[Exim]]></category>
		<category><![CDATA[Mail]]></category>
		<category><![CDATA[5xx]]></category>
		<category><![CDATA[domino]]></category>
		<category><![CDATA[RFC]]></category>

		<guid isPermaLink="false">http://blog.fupps.com/?p=3354</guid>
		<description><![CDATA[A few days ago I noticed a large number of message delivery failures to a Domino server. They were all similar:
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

  j.jolie@domino.example.com
    SMTP error from remote mail server [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago I noticed a large number of message delivery failures to a Domino server. They were all similar:</p>
<pre><code>A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

  j.jolie@domino.example.com
    SMTP error from remote mail server after end of data:
    host domino.internal.example.com [10.8.4.3]:
    <b>554 Error writing message to safe storage; message could not be stored to disk</b>
</code></pre>
<p>The fact that the error indicates a problem in <em>writing message to safe storage</em> can really only be disk related (out of space, <a href="http://twitter.com/the_schwartz/status/8494519046">damaged mail.box</a>, or perhaps full transaction logs), but why did this machine return a permanent 5xx code? There is no way for the sending MTA to react to that &#8212; it will bounce the message as undeliverable.</p>
<p>I don&#039;t administer these Domino servers, so I asked the administrators what had happened. It turns out one of the disks on this particular server had filled up. (Monitoring, anybody?)</p>
<p>I maintain that a 5xx code is wrong here; it should be a softer 4xx.</p>
<p>Just to be sure, I thought I&#039;d test that on two different MTA. I chose to take a copy of the venerable <a href="http://www.sendmail.org/">sendmail</a> running on <a href="http://www.freebsd.org/">FreeBSD</a>.</p>
<p>When <a href="http://www.sendmail.org">sendmail</a> detects that disk space is running low (<code>confMIN_FREE_BLOCKS</code>), it starts rejecting messages. The log shows</p>
<pre><code>rejecting new messages: min free: nnn
</code></pre>
<p>Let me now have a look at an SMTP transaction to that server:</p>
<pre><code>&lt;-  220 nanob1.mens.de ESMTP Sendmail 8.14.3/8.14.3
 -&gt; EHLO home.mens.de
&lt;-  250-nanob1.mens.de Hello home.mens.de [192.168.1.20], pleased to meet you
&lt;-  250-ENHANCEDSTATUSCODES
&lt;-  250-PIPELINING
&lt;-  250-8BITMIME
&lt;-  250-SIZE
&lt;-  250-DSN
&lt;-  250-ETRN
&lt;-  250-DELIVERBY
&lt;-  250 HELP
 -&gt; MAIL FROM:&lt;jpm@home.mens.de&gt;
<b>&lt;** 452 4.4.5 Insufficient disk space; try again later</b>
 -&gt; QUIT
&lt;-  221 2.0.0 nanob1.mens.de closing connection
</code></pre>
<p>The sender, correctly, gets a non-permanent 4xx code, so it has a chance to retry later. As soon as disk space becomes available, <a href="http://www.sendmail.org">sendmail</a> indicates</p>
<pre><code>accepting new messages (again)
</code></pre>
<p>in the log, and it is then readily available to accept new messages.</p>
<p>I then took a system running <a href="http://www.exim.org">Exim</a>. After getting the disks filled up with a some incantation of <a href="http://en.wikipedia.org/wiki/Dd_(Unix)">dd</a>, I let off a few mails directed to that <a href="http://www.exim.org">Exim</a> box. Here again, this server correctly refuses to accept a message if its configured limits of free space (<code>check_spool_space</code>) don&#039;t provide enough free space (and/or free inodes).</p>
<pre><code>spool directory space check failed: space=nnnn inodes=mmmm
</code></pre>
<p>The sending MTA sees:</p>
<pre><code>&lt;-  220 home.mens.de ESMTP Exim 4.43 Thu, 04 Feb 2010 11:18:18 +0100
 -&gt; EHLO jmbp.local
&lt;-  250-home.mens.de Hello jmbp.local [192.168.1.154]
&lt;-  250-SIZE 20971520
&lt;-  250-PIPELINING
&lt;-  250 HELP
 -&gt; MAIL FROM:&lt;jpm@jmbp.local&gt;
<b>&lt;** 452 Space shortage, please try later</b>
 -&gt; QUIT
&lt;-  221 home.mens.de closing connection
</code></pre>
<p>Here again, the target <a href="http://www.exim.org">Exim</a> server behaves correctly: the sending MTA gets a 4xx code and can attempt to transfer the message at a later point.</p>
<p><a href="http://tools.ietf.org/html/rfc2821#section-4.2">RFC 2821</a> even provides for this particular code:</p>
<pre><code>452 Requested action not taken: insufficient system storage
</code></pre>
<p>Why does Domino return a permanent 5xx code? <a href="http://twitter.com/the_schwartz/status/8506674214">Richard agrees</a> it shouldn&#039;t because the reason isn&#039;t message-specific. Are these servers simply incorrectly configured?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fupps.com/2010/02/04/domino-smtp-5xx-vs-4xx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exim expands LDAP posixGroup</title>
		<link>http://blog.fupps.com/2009/11/17/exim-expands-ldap-posixgroup/</link>
		<comments>http://blog.fupps.com/2009/11/17/exim-expands-ldap-posixgroup/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 17:22:05 +0000</pubDate>
		<dc:creator>Jan-Piet Mens</dc:creator>
				<category><![CDATA[Exim]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[Mail]]></category>
		<category><![CDATA[group]]></category>
		<category><![CDATA[RFC]]></category>

		<guid isPermaLink="false">http://blog.fupps.com/?p=3277</guid>
		<description><![CDATA[A request on the Exim mailing list tickled my interest: the poster wanted to have Exim expand a posixGroup to a list of the member&#039;s e-mail addresses.
As a reminder, an RFC 2307 posixGroup has a multi-valued LDAP attribute type called memberUid which is the user identifier (uid) of the member. A sample groups looks like [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.exim.org/"><img src='/wp-content/media/2007/eximlogo.png' alt='Exim' align='right' /></a>A request on the <a href="http://www.exim.org">Exim</a> mailing list tickled my interest: the poster wanted to have <a href="http://www.exim.org">Exim</a> expand a <code>posixGroup</code> to a list of the member&#039;s e-mail addresses.</p>
<p>As a reminder, an <a href="http://www.ietf.org/rfc/rfc2307.txt">RFC 2307</a> <code>posixGroup</code> has a multi-valued LDAP attribute type called <code>memberUid</code> which is the user identifier (<code>uid</code>) of the member. A sample groups looks like this:</p>
<pre class="brush: plain; highlight: [7,8];">
dn: cn=tgroup,ou=Groups,dc=fupps,dc=com
gidNumber: 6009
objectClass: top
objectClass: posixGroup
cn: tgroup
description: Testgroup for jP
memberUid: jpm
memberUid: janej
</pre>
<p>So, what we need is a method by which <a href="http://www.exim.org">Exim</a> finds that group (easy with a <code>${lookup</code> ) and then performs another LDAP search to retrieve the <code>mail</code> attribute type of each of the group&#039;s members.</p>
<p>What I came up was was this:</p>
<pre class="brush: plain;">
ldap_posixgroups:
 driver = redirect
 data = ${map{&lt;, ${lookup ldapm{ldap:///GROUPBASE\
          ?memberUid?sub?(cn=${quote_ldap:$local_part})}}}{\
          ${lookup ldapm{ldap:///PEOPLEB?mail?sub?uid=${quote_ldap:$item}}}\
          }}
</pre>
<p>The first <code>${lookup</code> retrieves the values of the <code>memberUid</code> attribute type. For the group above, these are</p>
<pre><code>jpm, janej
</code></pre>
<p><code>${map</code> iterates through the comma-separated list, invoking a new (i.e. the second) <code>${lookup</code> for each value which it places in <tt>$item</tt>. This second <code>${lookup</code> performs a search for the <code>mail</code> attribute type of each of the users. For example, user <code>janej</code> has multiple mail addresses:</p>
<pre><code>j.jolie@fupps.com, jane.jolie@fupps.com, jj@fupps.com
</code></pre>
<p>Putting all that together, the result will be</p>
<pre><code>jp@example.de,j.jolie@fupps.com,, jane.jolie@fupps.com,, jj@fupps.com
</code></pre>
<p>and <a href="http://www.exim.org">Exim</a>&#039;s <code>redirect</code> router happily eats that (ignoring superflous commas), and it routes the message to the two users (and their four e-mail addresses).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.fupps.com/2009/11/17/exim-expands-ldap-posixgroup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
