<?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>thinking sysadmin &#187; dns</title>
	<atom:link href="http://andyleonard.com/tag/dns/feed/" rel="self" type="application/rss+xml" />
	<link>http://andyleonard.com</link>
	<description>qstat -u aleonard -s z</description>
	<lastBuildDate>Sun, 22 Jan 2012 03:46:31 +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>Amazon Route 53 DNS Service Examined</title>
		<link>http://andyleonard.com/2010/12/06/amazon-route-53-dns-service-examined/</link>
		<comments>http://andyleonard.com/2010/12/06/amazon-route-53-dns-service-examined/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 21:19:00 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[utility computing]]></category>
		<category><![CDATA[anycast]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[route 53]]></category>

		<guid isPermaLink="false">http://andyleonard.com/?p=555</guid>
		<description><![CDATA[Amazon has announced a new authoritative DNS service &#8211; Route 53. Sign up is straightforward &#8211; click a few buttons on aws.amazon.com, and a few moments later, you&#8217;ll have an email confirming your access to the service. If you dig into the Getting Started Guide, you&#8217;ll note that &#8220;Part of the sign-up procedure involves receiving [...]]]></description>
			<content:encoded><![CDATA[<p>Amazon has announced a new authoritative DNS service &#8211; <a href="http://aws.amazon.com/route53/">Route 53</a>.</p>
<p>Sign up is straightforward &#8211; click a few buttons on aws.amazon.com, and a few moments later, you&#8217;ll have an email confirming your access to the service.  If you dig into the <a href="http://docs.amazonwebservices.com/Route53/latest/GettingStartedGuide/">Getting Started Guide</a>, you&#8217;ll note that &#8220;Part of the sign-up procedure involves receiving a phone call and entering a PIN using the phone keypad,&#8221; however, that wasn&#8217;t necessary for me.  Perhaps it&#8217;s only for new AWS accounts?</p>
<p>There is no user interface in the <a href="https://console.aws.amazon.com/">AWS Console</a> although there are indications one is on its way.  The <a href="http://aws.amazon.com/developertools/Amazon-Route-53">Route 53 developer tools</a> are fairly bare-bones at this point &#8211; four Perl scripts.  Those scripts require relatively uncommon Perl modules, not included in the default Ubuntu (Lucid) repositories, although they are available through CPAN.</p>
<p>However, the third-party <a href="https://github.com/boto/boto">Boto</a> Python interface to Amazon Web Services already includes support, and presumably other tools are also rapidly adding support, if they don&#8217;t have it already.</p>
<p>Using the Perl tools, I created a zone for an example domain &#8211; gearlister.org &#8211; and was given four name servers:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
ns-1945.awsdns-51.co.uk (205.251.199.153)
ns-39.awsdns-04.com (205.251.192.39)
ns-690.awsdns-22.net (205.251.194.178)
ns-1344.awsdns-40.org (205.251.197.64)
</pre>
<p><span id="more-555"></span></p>
<p>The cross-section of TLDs increase the likelihood that a glue record for one of the Route 53 name servers will be returned with a query to the TLD name servers, reducing latency for clients:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
; &lt;&lt;&gt;&gt; DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_4.2 &lt;&lt;&gt;&gt; @d0.org.afilias-nst.org gearlister.org
; (2 servers found)
;; global options:  printcmd
;; Got answer:
;; &gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 51176
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 1

;; QUESTION SECTION:
;gearlister.org.                        IN      A

;; AUTHORITY SECTION:
gearlister.org.         86400   IN      NS      ns-39.awsdns-04.com.
gearlister.org.         86400   IN      NS      ns-1945.awsdns-51.co.uk.
gearlister.org.         86400   IN      NS      ns-1344.awsdns-40.org.
gearlister.org.         86400   IN      NS      ns-690.awsdns-22.net.

;; ADDITIONAL SECTION:
ns-1344.awsdns-40.org.  86400   IN      A       205.251.197.64

;; Query time: 161 msec
;; SERVER: 199.19.57.1#53(199.19.57.1)
;; WHEN: Mon Dec  6 12:13:30 2010
;; MSG SIZE  rcvd: 184
</pre>
<p>While all name servers are in 205.251.192.0/18, there appear to be separate routing table entries for each /23 containing a name server.  Further, the servers appear to be anycast to different locations around the world:</p>
<pre class="brush: plain; light: true; title: ; notranslate">
traceroute to 205.251.199.153 (205.251.199.153), 30 hops max, 40 byte packets
 1  swiCS5-V108.switch.ch (130.59.108.5)  0.355 ms  0.429 ms  0.546 ms
 2  swiZH2-10GE-3-1.switch.ch (130.59.36.138)  0.437 ms  0.515 ms  0.610 ms
 3  swiIX1-10GE-1-3.switch.ch (130.59.36.129)  6.300 ms  6.391 ms  6.486 ms
 4  zch-b1-geth3-1.telia.net (213.248.79.189)  0.345 ms  0.348 ms  0.347 ms
 5  ffm-bb2-link.telia.net (80.91.249.115)  11.914 ms  11.963 ms  11.991 ms
 6  ffm-b10-link.telia.net (80.91.251.250)  11.846 ms  11.834 ms ffm-b10-link.telia.net (80.91.251.126)  11.834 ms
 7  xe-4-2-0.edge4.Frankfurt1.level3.net (4.68.63.121)  11.960 ms  11.972 ms  11.961 ms
 8  vlan99.csw4.Frankfurt1.Level3.net (4.68.23.254)  20.991 ms vlan89.csw3.Frankfurt1.Level3.net (4.68.23.190)  12.241 ms  12.220 ms
 9  ae-82-82.ebr2.Frankfurt1.Level3.net (4.69.140.25)  13.459 ms  12.333 ms ae-92-92.ebr2.Frankfurt1.Level3.net (4.69.140.29)  12.699 ms
10  ae-24-24.ebr2.London1.Level3.net (4.69.148.197)  24.591 ms ae-21-21.ebr2.London1.Level3.net (4.69.148.185)  26.136 ms ae-22-22.ebr2.London1.Level3.net (4.69.148.189)  25.632 ms
11  ae-22-52.car2.London1.Level3.net (4.69.139.99)  20.163 ms  20.064 ms  19.870 ms
12  AMAZONCOM.car2.London1.Level3.net (212.187.193.2)  19.840 ms  19.868 ms  20.107 ms
13  * * *
</pre>
<pre class="brush: plain; light: true; title: ; notranslate">
Tracing the route to 205.251.199.153

  1 vl-51.uonet1-gw.uoregon.edu (128.223.51.2) [AS 3582] 0 msec 0 msec 0 msec
  2 3.xe-1-3-0.uonet10-gw.uoregon.edu (128.223.3.10) [AS 3582] 0 msec 0 msec 0 msec
  3 vl-3.uonet9-gw.uoregon.edu (128.223.3.9) [AS 3582] 0 msec 0 msec 0 msec
  4 eugn-car1-gw.nero.net (207.98.68.181) [AS 3701] 4 msec 0 msec 0 msec
  5 eugn-core1-gw.nero.net (207.98.64.161) [AS 3701] 0 msec 0 msec 0 msec
  6 eugnor1wce1-gige7-0.wcg.net (64.200.134.197) [AS 3356] 16 msec 8 msec 8 msec
  7 ae-32-52.ebr2.Seattle1.Level3.net (4.68.105.62) [AS 3356] 20 msec 8 msec 16 msec
  8 ae-2-2.ebr2.Denver1.Level3.net (4.69.132.54) [AS 3356] 48 msec 40 msec 36 msec
  9 ae-1-100.ebr1.Denver1.Level3.net (4.69.132.37) [AS 3356] 44 msec 36 msec 36 msec
 10 ae-4-4.car1.StLouis1.Level3.net (4.69.132.181) [AS 3356] 56 msec 52 msec 56 msec
 11 ae-11-11.car2.StLouis1.Level3.net (4.69.132.186) [AS 3356] 52 msec 56 msec 52 msec
 12 AMAZONCOM.car2.StLouis1.Level3.net (4.53.162.66) [AS 3356] 56 msec 56 msec 56 msec
 13  *  *  *
</pre>
<p>Adapting the <a href="http://docs.amazonwebservices.com/Route53/latest/GettingStartedGuide/">Getting Started Guide</a>, I created two A records for &#8220;gearlister.org&#8221; and &#8220;www.gearlister.org&#8221;.  For reasons I wasn&#8217;t able to track down &#8211; or reproduce &#8211; adding the &#8220;gearlister.org&#8221; A record failed the first time, although I was able to add it later.</p>
<p><strong>Update 12/7/2010:</strong> I received an email from Amazon earlier today explaining the failed A record add:</p>
<blockquote><p>Here&#8217;s what happened. In our &#8220;Getting Started Guide&#8221; we incorrectly provided an example ChangeResourceRecordSets request that showed a single <Change> element that included multiple <ResourceRecordSet> elements. This was a mistake. In reality, only one <ResourceRecordSet> element is permitted per <Change> element. Our API accepted this request as valid, but silently only processed one of the <ResourceRecordSet> elements. We have now fixed both the documentation and the configuration API to enforce the proper semantics.</p></blockquote>
<p>Record changes propagated quickly, although the zone serial number did not increment.  Given the lack of support for connecting secondary servers to Route 53 and the API support for checking whether a change has propagated, this may matter little in practice, although it is certainly odd.</p>
<p>Although there is no direct support for secondary servers using Route 53 as primary DNS &#8211; or for using Route 53 as a secondary to a non-Amazon primary &#8211; the BIND <a href="http://aws.amazon.com/developertools/Amazon-Route-53">conversion scripts</a> hint that it should be straightforward to have a master script update Route 53 and non-Route 53 zone configuration simultaneously.  Also, while Route 53 does support AAAA records (ironic, given that you cannot use IPv6 to address EC2 instances), it does not yet support DNSSEC.</p>
<p>At $1/domain/month and $0.50/millon queries, pricing is extremely low for anycast DNS.  However, given the lack of integration with some of Amazon&#8217;s other products, such as Elastic Load Balancing &#8211; apparently forthcoming &#8211; and the limited tools for managing zones, uptake will probably be limited initially.  Some heavy AWS users may be hesitant to put their DNS on the same service provider as the rest of their infrastructure &#8211; although ultimately, as Amazon adds features, the benefits of Route 53 may outweigh the risks.</p>
]]></content:encoded>
			<wfw:commentRss>http://andyleonard.com/2010/12/06/amazon-route-53-dns-service-examined/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Test Driving Google Public DNS (Updated with OpenDNS comparison)</title>
		<link>http://andyleonard.com/2009/12/03/test-driving-google-publi-dns/</link>
		<comments>http://andyleonard.com/2009/12/03/test-driving-google-publi-dns/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 19:31:16 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[comcast]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[opendns]]></category>

		<guid isPermaLink="false">http://andyleonard.com/?p=414</guid>
		<description><![CDATA[Google announced its Public DNS service this morning, claiming enhanced performance and security; I took it for a brief test drive with the following results. (See bottom of post for an update running similar tests on OpenDNS.) Methods: I searched Google for keywords that I believed fell somewhere between obscure and common and collected the [...]]]></description>
			<content:encoded><![CDATA[<p>Google announced its <a href="http://code.google.com/speed/public-dns/">Public DNS</a> service this morning, claiming enhanced <a href="http://code.google.com/speed/public-dns/docs/performance.html">performance</a> and <a href="http://code.google.com/speed/public-dns/docs/security.html">security</a>; I took it for a brief test drive with the following results.</p>
<p>(See bottom of post for an update running similar tests on OpenDNS.)</p>
<p><strong>Methods:</strong> I searched Google for <a href="http://www.google.com/search?q=lightweight+backpacking">keywords</a> that I believed fell somewhere between obscure and common and collected the first ten hostnames printed on the screen.  I then used local installations of dig to query a collection of DNS servers for the hostnames&#8217; A records and collected the response times.  The different resolvers used were:</p>
<ul>
<li>A local BIND installation (127.0.0.1, cache empty) with Comcast Internet connectivity;</li>
<li>A Comcast DNS server (68.87.69.150) via Comcast Internet connectivity;</li>
<li>My employer&#8217;s internal caching DNS;</li>
<li>Google (8.8.8.8) via my employer&#8217;s Internet connectivity (mostly Level 3);</li>
<li>Google (8.8.8.8) via Comcast; and</li>
<li>Google (8.8.8.8) via an Amazon EC2 instance in us-east-1a.</li>
</ul>
<p>Anticipating a bimodal distribution of results, I assumed high latency responses were cache misses, while low latency responses were cache hits, and categorized results correspondingly.<br />
<span id="more-414"></span><br />
<strong>Limitations:</strong> Chiefly, the small number of hostnames queried.  Results from a larger group of domains would be more conclusive.</p>
<p><strong>Results:</strong> Given in the format of Server/Connectivity: Cache Miss/Cache Hit</p>
<ul>
<li>Local BIND server/Comcast: 319ms/0ms</li>
<li>Comcast/Comcast: 166ms/14ms</li>
<li>Google/Comcast: no misses/73ms</li>
<li>Employer/Level 3: 235ms/30ms</li>
<li>Google/Level 3: 204ms/44ms</li>
<li>Google/EC2: 190ms/4ms</li>
</ul>
<p>I concluded that Google/Comcast had no misses by testing another set of obscure hostnames twice each, noting that the first query was slower (~120ms) and the second query was similar in latency to the results above (70ms).  (My belief is that I inadvertently pre-populated the cache for Google/Comcast by my tests elsewhere.)</p>
<p><strong>Discussion:</strong></p>
<ul>
<li><strong>It&#8217;s all about cache hits.</strong>  Whichever resolver gives you the most cache hits will give you the best performance; cache misses are at least an order of magnitude slower than cache hits.  In this extremely limited test, the cache-hits-champion appears to be Google.  Excluding Google/Comcast, where I believe I pre-populated Google&#8217;s cache, Google had a 50% cache hit rate, while Comcast and my Employer only hit 20%.
<li><strong>Location, location, location.</strong>  Secondary to cache hits, the closer the resolver is to you, the better.  Looking at the Comcast results, it&#8217;s hard to get closer than localhost, and, as seems logical, Comcast&#8217;s resolvers have lower cached latency than Google&#8217;s.  <strong>Running a local caching resolver forwarding to Google may be a desirable configuration.</strong></li>
<li><strong>Resolver behavior matters.</strong>  Comcast is notorious for <a href="http://www.dslreports.com/shownews/Comcast-DNS-Redirection-Goes-Nationwide-103762">poor behavior</a>.  It&#8217;s reasonable to expect that Google will be mining your DNS query data.  <strong>Running a slower but directly-controlled local, non-forwarding server may be preferable for privacy and security reasons.</strong></li>
</ul>
<p><strong>Update:</strong>  At the <a href="http://twitter.com/tscalzott/status/6313122948">suggestion</a> of <a href="http://twitter.com/tscalzott">@tscalzott</a>, I researched OpenDNS&#8217;s performance with the same set of hostnames via the same connectivity on their DNS resolvers at 208.67.222.222.  This time, however, I queried the A record for each hostname twice in rapid succession to ascertain how many of my queries were served from OpenDNS&#8217;s cache.  Results are in the format:</p>
<p>DNS Server/Connectivity: Cache miss/Cache hit &#8211; cache hit rate</p>
<ul>
<li>OpenDNS/Comcast: 218ms/30ms &#8211; 20%</li>
<li>OpenDNS/EC2: 144ms/2ms &#8211; 10%</li>
<li>OpenDNS/Level 3: 230ms/4ms &#8211; 40%</li>
</ul>
<p>Compared to Google, OpenDNS had similar latency for cache misses and lower latency for cache hits, but appears to possibly have a lower cache hit rate.  It seems likely that the latency &#8220;winner&#8221; for each user&#8217;s individual situation will depend on where they are on the Internet relative to the nearest Google and OpenDNS installations.  Google&#8217;s greater cache hit rate suggests it may offer better service, but testing a larger number of hostnames would be necessary before being able to state that with any certainty.</p>
<p><strong>Disclosure:</strong> I use Google&#8217;s free Apps services to host personal email, and I use their public sites (Search, Reader, News, Analytics, etc.) extensively.  I recently attended a Google Apps for the Enterprise dog-and-pony show where I received a number of small tchotchkes; my wife took the notebook, I kept the pen and binder and threw the rest away.  My employer uses Postini.  I tried OpenDNS briefly several months back, but did not use them long-term because of limitations in my own configuration.</p>
]]></content:encoded>
			<wfw:commentRss>http://andyleonard.com/2009/12/03/test-driving-google-publi-dns/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Migrating from self-hosted email to Google Apps for Domains</title>
		<link>http://andyleonard.com/2009/11/24/migrating-from-self-hosted-email-to-google-apps-for-domains/</link>
		<comments>http://andyleonard.com/2009/11/24/migrating-from-self-hosted-email-to-google-apps-for-domains/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 03:01:40 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[personal tech]]></category>
		<category><![CDATA[utility computing]]></category>
		<category><![CDATA[cyrus]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[imapsync]]></category>

		<guid isPermaLink="false">http://andyleonard.com/?p=366</guid>
		<description><![CDATA[I recently moved my personal email from a self-managed Exim/Cyrus setup on a dedicated FreeBSD server to Gmail (Google Apps for Domains). This migration was motivated by a desire to reduce expenses, reduce time spent managing mail software and the importance of email (for me, personally) dropping to a level where I was willing to [...]]]></description>
			<content:encoded><![CDATA[<p>I recently moved my personal email from a self-managed Exim/Cyrus setup on a dedicated FreeBSD server to Gmail (<a href="http://www.google.com/apps/intl/en/group/index.html">Google Apps for Domains</a>).  This migration was motivated by a desire to reduce expenses, reduce time spent managing mail software and the importance of email (for me, personally) dropping to a level where I was willing to accept the risks inherent in outsourcing it.  Details of the exact process I used to migrate mail are below.</p>
<p><strong>Assumptions:</strong> An IMAP interface to your current email, basic comptency at managing DNS, and the ability to run the <a href="http://www.linux-france.org/prj/imapsync/README">imapsync</a> Perl script (built via FreeBSD ports in my case, but installation should be straightforward under most UNIX or Linux systems).<br />
<span id="more-366"></span><br />
<strong>0.</strong> Ensure your domain registration is up to date and with a reputable registrar (Pro tip: if you have to wade through pages of deceptive and needless up-sells with your registrar, they&#8217;re not reputable), and fully independent from anything you have set up with Google.  Ensure your DNS configuration is completely correct; if you&#8217;re unsure whether or not it is, buy a membership at <a href="http://www.dnsstuff.com/">DNSstuff</a>, run its tests on your domains, and fix the relevant problems.  If you don&#8217;t fully host your own DNS &#8211; and chances are, if you&#8217;re outsourcing your email, you probably don&#8217;t host your own DNS &#8211; I recommend using two independent DNS providers.  Hosted DNS service that&#8217;s worth spending money with will be able to function as a secondary and allow zone transfers &#8211; and, while you&#8217;re at it, make sure your chosen provider supports <a href="http://www.rfc-archive.org/getrfc.php?rfc=1996">DNS NOTIFY</a> &#8211; it&#8217;ll make changing your MX records in a timely fashion that much easier.  Whatever you do, don&#8217;t use your registrar&#8217;s DNS servers.</p>
<p>You occasionally see <a href="http://discuss.joelonsoftware.com/default.asp?biz.5.730915.0">sad tales of Google Apps woe</a> which could have been mitigated by independent domain registration and a moderate knowledge of DNS.  Don&#8217;t risk becoming another bitter messageboard-posting statistic.</p>
<p>In summary: Don&#8217;t understand DNS or don&#8217;t have time for it?  Stop reading now; either hire a consultant to do the work, or accept that outsourced email probably isn&#8217;t right for you.</p>
<p><strong>0.1.</strong> This goes hand-in-hand with step 0 above: Have an off-Google backup system for your email &#8211; one that runs unattended, automatically, just like a &#8220;real&#8221; backup system would be.  Google has its strong points, but customer service for their free products isn&#8217;t one of them.  If Google should update their <a href="http://en.wikipedia.org/wiki/Don%27t_be_evil">unofficial motto</a> to a more succinct &#8220;be evil&#8221; you want to have an &#8220;out&#8221; and the ability to migrate your mail elsewhere.  Imapsync, linked to above and described below, can be adapted for this purpose.</p>
<p><strong>0.2</strong> Install and test imapsync before beginning this process.  This is the best tool that I&#8217;ve found for syncing mailboxes between servers; all others I tried were unreliable, and documentation below will be specific to it.  In theory, another tool could work &#8211; IMAP is IMAP and a standard &#8211; but I leave using other migration tools as an exercise for the reader.</p>
<p><strong>1.</strong> Drop your MX record TTL to a suitably low value; I used 60 seconds during my migration.  Let the older, presumably greater TTL age off prior to making any further changes to your MX records (as in step 7 below).</p>
<p><strong>2.</strong> <a href="http://www.google.com/a/cpanel/domain/new">Sign up</a> your domain for Google Apps, and use DNS to verify control.</p>
<p><strong>3.</strong> Create users for the domain, and accept terms.  A best practice would be to use different passwords on Gmail from what users currently have, and do note that you will need both old and new passwords for the synchronization step.  (If you are currently running a Cyrus IMAP server with sasldb, passwords can be extracted by running &#8220;db3_dump185 -p sasldb2.db&#8221; as a user that can read sasldb.)</p>
<p><strong>4.</strong> In the Google Apps control panel, create distribution lists and aliases (&#8220;nicknames&#8221;) for your users as appropriate.</p>
<p><strong>5.</strong> For each Gmail mailbox, enable IMAP: Settings > Forwarding and POP/IMAP: Enable IMAP.</p>
<p><strong>6.</strong> If appropriate (and assuming you have other users in your domain), have users verify their logins and familiarize themselves with Gmail&#8217;s options.</p>
<p><strong>7.</strong> Change your <a href="http://www.google.com/support/a/bin/answer.py?answer=33352">MX records</a> to point to Google; keep your TTL low in case you need to change back to your old servers.</p>
<p><strong>8.</strong> Verify delivery to your new Gmail mailboxes by sending test messages from a third-party address.</p>
<p><strong>9.</strong> Set an appropriate <a href="http://www.google.com/support/a/bin/answer.py?hl=en&#038;answer=33786">SPF record</a> for your domain in DNS.</p>
<p><strong>10.</strong> Sync your old mailboxes with your new; I recommend running imapsync directly on your mail server, if possible, for best performance.  Example imapsync session for a Cyrus inbox:</p>
<p><code>imapsync --host1 mail.example.com --port1 143 --user1 user@example.com --password1 [...] --prefix1 INBOX. --host2 imap.gmail.com --port2 993 --user2 user@example.com --password2 [...] --ssl2 --folder INBOX</code></p>
<p>(Insert passwords as appropriate.)</p>
<p>Example imapsync session for a Cyrus folder other than the inbox:</p>
<p><code>imapsync --host1 mail.example.com --port1 143 --user1 user@example.com --password1 [...] --prefix1 INBOX. --host2 imap.gmail.com --port2 993 --user2 user@example.com --password2 [...] --ssl2 --folder INBOX.saved-messages</code></p>
<p>Note that Gmail has certain reserved labels that you cannot sync directly to, such as &#8220;Sent&#8221;.  In this case, you&#8217;ll need to use the &#8220;regextrans2&#8243; flag to sync to a different folder:</p>
<p><code>imapsync --host1 mail.example.com --port1 143 --user1 user@example.com --password1 [...] --prefix1 INBOX. --host2 imap.gmail.com --port2 993 --user2 use@example.com --password2 [...] --ssl2 --folder INBOX.Sent --regextrans2 's/Sent/Old-Sent/'</code></p>
<p><strong>11.</strong> After double checking that your old MX record&#8217;s TTL has passed, and no new mail is being delivered to your old mail server, decommission it as necessary.</p>
]]></content:encoded>
			<wfw:commentRss>http://andyleonard.com/2009/11/24/migrating-from-self-hosted-email-to-google-apps-for-domains/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Thought you fixed that DNS spoofing bug?  You might need to think again.</title>
		<link>http://andyleonard.com/2008/07/27/thought-you-fixed-that-dns-spoofing-bug-you-might-need-to-think-again/</link>
		<comments>http://andyleonard.com/2008/07/27/thought-you-fixed-that-dns-spoofing-bug-you-might-need-to-think-again/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 15:14:21 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[security]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[nat]]></category>
		<category><![CDATA[spoofing]]></category>

		<guid isPermaLink="false">http://andyleonard.com/?p=55</guid>
		<description><![CDATA[So you thought you fixed the DNS spoofing vulnerability that was all over the news this month? You applied the patches and moved on to the other fifty-seven things crowded on your to-do list, thinking that you were safe? If your resolvers are behind a NAT, you might want to think again, smart guy. In [...]]]></description>
			<content:encoded><![CDATA[<p>So you thought you fixed the <a href="http://www.doxpara.com/?p=1185">DNS spoofing vulnerability</a> that was all over the news this month?  You applied the patches and moved on to the other fifty-seven things crowded on your to-do list, thinking that you were safe?  If your resolvers are behind a NAT, you might want to <a href="http://blogs.iss.net/archive/dnsnat.html">think again</a>, smart guy.<br />
<span id="more-55"></span><br />
In a nutshell, your handy-dandy NAT box is quite possibly making your resolver&#8217;s now-random UDP source ports sequential, making you vulnerable again.  The only &#8220;vendors&#8221; I&#8217;m aware of that don&#8217;t have this issue are Linux&#8217;s IPTables and OpenBSD&#8217;s PF (also available on FreeBSD, of course) &#8211; funny that, since those guys aren&#8217;t really vendors at all.  I could be just ignorant or looking in the wrong place, but this doesn&#8217;t even seem to be on <a href="http://www.cisco.com/web/about/security/intelligence/dns-bcp.html">Cisco&#8217;s radar</a> right now, for example.</p>
<p>The tester in the sidebar at <a href="http://www.doxpara.com/">DoxPara Research</a> seems to do a good job of testing your configuration end-to-end for this vulnerability.</p>
<p>(File this under &#8220;Just another reason why NAT is evil.&#8221;)</p>
]]></content:encoded>
			<wfw:commentRss>http://andyleonard.com/2008/07/27/thought-you-fixed-that-dns-spoofing-bug-you-might-need-to-think-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

