<?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>Christopher J. Buckley &#187; SPF</title>
	<atom:link href="http://www.cjbuckley.net/blog/tag/spf/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cjbuckley.net/blog</link>
	<description>Free-Software, GNU/Linux, Traffic Management &#38; Thoughts</description>
	<lastBuildDate>Mon, 16 Mar 2009 16:18:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>DynDNS finally publishes backup MX IP list</title>
		<link>http://www.cjbuckley.net/blog/2007/08/03/dyndns-finally-publishes-backup-mx-ip-list/</link>
		<comments>http://www.cjbuckley.net/blog/2007/08/03/dyndns-finally-publishes-backup-mx-ip-list/#comments</comments>
		<pubDate>Fri, 03 Aug 2007 10:49:03 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[MailServer]]></category>
		<category><![CDATA[Backup MX]]></category>
		<category><![CDATA[DKIM]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[dyndns]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[SPF]]></category>

		<guid isPermaLink="false">http://www.cjbuckley.net/blog/2007/08/03/dyndns-finally-publishes-backup-mx-ip-list/</guid>
		<description><![CDATA[DynDNS are a major player in both e-mail and DNS outsource solutions, both for home and corporate customers.  The DNS for cjbuckley.net, for instance, is outsourced to DynDNS.   Previously, DynDNS refused to publish their IP list for their backup MX services.  Existing mail-servers that check (be it at MTA or Content-Filter [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dyndns.com/">DynDNS</a> are a major player in both e-mail and DNS <a href="http://www.dyndns.com/services/">outsource solutions</a>, both for home and corporate customers.  The DNS for cjbuckley.net, for instance, is outsourced to DynDNS.   Previously, DynDNS refused to publish their IP list for their backup MX services.  Existing mail-servers that check (be it at MTA or Content-Filter level) SPF TXT record validity, and employ DynDNS&#8217;s backup MX service were currently unable to SPF whitelist their backup MX 100% accurately.  But why would you wish to white-list?  I think a quick history over-view would be prudent&#8230;</p>
<h2>Overview</h2>
<p>Since SPF become a permanent extension to the SMTP RFC, domain&#8217;s wishing to have their e-mail accepted by both the &#8216;big three&#8217; (Yahoo, Hotmail, GMail) and other well-run mail-servers must be sure to <a href="http://old.openspf.org/wizard.html">publish their SPF record(s)</a>.  </p>
<p>SPF is not without it&#8217;s critics, however.  SPF, currently, <a href="http://homepages.tesco.net/J.deBoynePollard/FGA/smtp-spf-is-harmful.html">breaks more than it fixes</a>.   From a personal view-point, I agree entirely with these points:</p>
<ol>
<li><a href="http://homepages.tesco.net/J.deBoynePollard/FGA/smtp-spf-is-harmful.html#PreDeliveryForwarding">SPF breaks pre-delivery forwarding</a></li>
<li><a href="http://homepages.tesco.net/J.deBoynePollard/FGA/smtp-spf-is-harmful.html#DatabaseSecurity">SPF relies upon DNS for security, but DNS isn&#8217;t a security service</a></li>
<li><a href="http://homepages.tesco.net/J.deBoynePollard/FGA/smtp-spf-is-harmful.html#WrongProblem">SPF doesn&#8217;t actually address unsolicited bulk mail at all</a></li>
</ol>
<p><a href="http://homepages.tesco.net/J.deBoynePollard/FGA/smtp-spf-is-harmful.html#PreDeliveryForwarding">Point 1</a> is significant.  </p>
<p>The <a href="http://www.openspf.org/FAQ/Common_receiver_mistakes#whitelist">SPF FAQ states</a> that:</p>
<blockquote><p>
<em><u>Checking SPF On Forwarded Mail</u></em></p>
<p><em>Mail forwarding is set up by the receiver and so for forwarded mail, the border mail server (at which SPF should be checked) the the forwarder&#8217;s mail server. If you check SPF on your mail server it is coming from your forwarder and not from a mail server authorized by the sending domain. Technically this is similar to checking SPF against mail relayed from your secondary MX like discussed in the previous item. Authorized forwarders should be whitelisted against SPF checks to avoid this problem.</em>
</p></blockquote>
<h2>DynDNS addresses this problem</h2>
<p>If you are using a backup MX service, you will need, as per instructions above, to SPF white-list the backup MX (ie, all IP addresses from which it may send e-mail to your primary MX record).  To not do so creates the situation that -all- mail going to your backup MX will be subject to a negative score upon receipt to your primary MX.  </p>
<p>As talked about at the start of this article, DynDNS previously refused to publish their IP list for backup MX, stating categorically that they would &#8216;not publish&#8217; this list.  I am glad to see they have finally seen sense and allowed postmasters responsible for corporate (and personal) mail-servers the ability to white-list this important MX record.</p>
<h2>Enough talk &#8211; how do I whitelist within Postfix?</h2>
<p>If you&#8217;re running Postfix, you will almost certainly have implemented <a href="http://www.openspf.org/svn/software/postfix-policyd-spf-perl/tags/2.004/">postfix-policyd-spf-perl</a>.  </p>
<ol>
<li> Edit /usr/lib/postfix/postfix-policyd-spf-perl</li>
<li> Ensure the relevant line(s) read the same as: </li>
</ol>
<p><tt><br />
use constant relay_addresses => map(<br />
    NetAddr::IP->new($_),<br />
    qw( 204.13.249.0/24  208.78.69.71/32 208.78.69.72/32 208.78.69.73/32 208.78.69.74/32 ) );<br />
    # add addresses to qw (  ) above separated by spaces using CIDR notation.<br />
</tt></p>
<p>You&#8217;ve now successfully white-listed DynDNS&#8217;s backup servers, and will not suffer from SPF&#8217;s ability to break pre-delivery forwarding.  </p>
<h2>Final Points</h2>
<p>Before anyone mentions <a href="http://www.openspf.org/SRS">SRS</a>: it&#8217;s broken. It doesn&#8217;t work, as i write, within Postfix.  Plus, <a href="http://www.irbs.net/internet/postfix/0401/1020.html">it&#8217;s a -huge- hack</a>. </p>
<p>I&#8217;ve resisted the temptation to mention <a href="http://en.wikipedia.org/wiki/DomainKeys">DKIM</a>, until now.  DomainKeys does not suffer from the same problem i&#8217;ve written above that SPF does.  There are explanations of how DomainKeys work both at <a href="http://en.wikipedia.org/wiki/DomainKeys">Wikipedia</a> and <a href="http://antispam.yahoo.com/domainkeys">Yahoo!</a>  This domain, and all others I am responsible for,  both sign and check e-mails for DKIM/DomainKey signatures.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.cjbuckley.net/blog/2007/08/03/dyndns-finally-publishes-backup-mx-ip-list/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>DKIM, Domain-Keys and SPF verification</title>
		<link>http://www.cjbuckley.net/blog/2007/07/10/dkim-domain-keys-and-spf-verification/</link>
		<comments>http://www.cjbuckley.net/blog/2007/07/10/dkim-domain-keys-and-spf-verification/#comments</comments>
		<pubDate>Tue, 10 Jul 2007 17:56:28 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[MailServer]]></category>
		<category><![CDATA[DKIM]]></category>
		<category><![CDATA[Domain Keys]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SPF]]></category>

		<guid isPermaLink="false">http://www.cjbuckley.net/blog/2007/07/10/dkim-domain-keys-and-spf-verification/</guid>
		<description><![CDATA[Whilst recently implementing DKIM and SPF for both my personal domain e-mail and for the corporate mail-servers I am responsible for, I found a great verification e-mail box from the DKIM mailing list.
If, after setting up your new extensions to the SMTP protocol, you wish to verify everything is working correctly then I thoroughly recommend [...]]]></description>
			<content:encoded><![CDATA[<p>Whilst recently implementing <a href="http://www.rfc-editor.org/rfc/rfc4871.txt">DKIM</a> and SPF for both my personal domain e-mail and for the corporate mail-servers I am responsible for, I found a great verification e-mail box from the DKIM mailing list.</p>
<p>If, after setting up your new extensions to the SMTP protocol, you wish to verify everything is working correctly then I thoroughly recommend a blank e-mail to this address: <a href="mailto:check-auth@verifier.port25.com">check-auth@verifier.port25.com</a></p>
<p>Let&#8217;s run through the results of this e-mail for my domain, cjbuckley.net:</p>
<pre> <u>Summary of Results</u>
SPF check:          pass
DomainKeys check:   neutral
DKIM check:         pass
Sender-ID check:    pass</pre>
<p>Immediately, we can see that the implementations have been successful &#8211; this is a good sign!</p>
<pre><u>SPF check details</u>
Result:         pass
ID(s) verified: smtp.mail=example@cjbuckley.net
DNS record(s):
cjbuckley.net. 300 IN TXT "v=spf1 redirect=_spf.cjbuckley.net"
_spf.cjbuckley.net. 300 IN TXT "v=spf1 ip4:87.127.106.176/29 ip4:84.45.189.64/29 include:ukfsn.org -all"
</pre>
<p>The detail outputted from this SPF check is impressive; as we can see, my domain initially does a redirect to _spf.cjbuckley.net (note the underscore &#8211; these _are_ valid in TXT records).  This allows many domains I am the hostmaster for (corporate ones, usually) to be easily managed.</p>
<p>For example, I use redirect: _spf.mycorporatedomain.com  for all my corporate domains, this cleans up the SPF records and allows easy management of the record database &#8211; all other domains can be redirected to _spf.mycorporatedomain.com.  It works very well, and is something I noticed Google taking advantage of, initially.. :-)</p>
<p>Next up &#8211; DomainKeys:</p>
<pre><u>DomainKeys check details:</u>
Result:         neutral (message not signed)
ID(s) verified: header.From=example@cjbuckley.net
DNS record(s):
</pre>
<p>The checker confirms that I do not have DK implemented &#8211; indeed, this is correct.  DKIM replaces DK, and is now being driven forward to replace Yahoo! DomainKey&#8217;s.  Note: gmail.com only verifies DK signatures, not DKIM yet &#8211; a bit disappointing, though they _do_ sign both with DKIM and DK.</p>
<pre> <u>DKIM check details:</u>
Result:         pass
ID(s) verified: header.From=example@cjbuckley.net
DNS record(s):
beta._domainkey.cjbuckley.net. 300 IN TXT "k=rsa; t=y;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDiIfv9vqSRUo9L8
ztX/C4gfCD/Ivt8eAGyQbjJ2g4Rq764NPwauj5/sY2AfMrFPqhA0ieXWtmJy2gFS
c4ZlxT8KYaFsJATOpJfYAXUtzmmQ8+RcioyeN3LjzNhm1gUYyJI1Lw0yD2y+k
dN3YxY4NZ0esMXrKbsngTl3pNcNCNxXwIDAQAB"
</pre>
<p>We can see that our DKIM policy has been verified successfully.  As dkim.org states:</p>
<blockquote><p>
DKIM lets an organization take responsibility for a message.  The organization taking responsibility is a handler of the message, either as its originator or as an intermediary. Their reputation is the basis for evaluating whether to trust the message for delivery.
</p></blockquote>
<p>Given this statement, e-commerce, financial and banking organisations should have either implemented or be on their way to planning an implementation of DKIM.  Personally, I find SPF flawed &#8211; DKIM is the wiser choice.  </p>
<p>I&#8217;m hoping to blog a <a href="http://www.jason.long.name/dkimproxy/">dkimproxy</a> implementation guide shortly, as the published guide has a few advisories I have issue with and would like clarified.</p>
<p>Comments, welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.cjbuckley.net/blog/2007/07/10/dkim-domain-keys-and-spf-verification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
