<?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>ipHouse Blog</title>
	<atom:link href="http://blogs.iphouse.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.iphouse.net</link>
	<description>A friendly, local ISP with a view.</description>
	<lastBuildDate>Sat, 06 Feb 2010 00:18:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Should ISP&#8217;s be copyright enforcers?</title>
		<link>http://blogs.iphouse.net/2010/02/05/should-isps-be-copyright-enforcers/</link>
		<comments>http://blogs.iphouse.net/2010/02/05/should-isps-be-copyright-enforcers/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 21:05:41 +0000</pubDate>
		<dc:creator>Bil MacLeslie</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[BitTorrent]]></category>
		<category><![CDATA[Copyright]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[net neutrality]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[treaty]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=102</guid>
		<description><![CDATA[Does your ISP snoop your traffic and snitch on you to big corporations?]]></description>
			<content:encoded><![CDATA[<p>A few months ago I started this blog entry and then left it sit because I was so angry about what the potential outcome could mean to the ISP industry.  Today I read <a title="This Judge is SMART!" href="http://www.wired.com/threatlevel/2010/02/isp-defeats-hollywood-copyright-claims/" target="_blank">this article on <strong>Wired</strong></a> that give me some hope that the world isn&#8217;t about to end for ISPs so I decided to revisit this entry and see if it still makes sense. Let&#8217;s see&#8230;</p>
<p>&#8212;&#8212;</p>
<p>We live in a society that has mostly agreed on what is right and what is wrong.  We have coined the term, Common Values in order to build communities where we can agree on what is acceptable behaviour.  To enforce our safe communal living, we turned these common values into laws.  As a society, we have set up governments to enforce the laws (common values) and protect us from those who would harm us.</p>
<p>As members of society, I think we&#8217;re all in agreement that theft is a bad thing.  No matter what country you are from, it&#8217;s pretty much a given that stealing is frowned upon.  It&#8217;s a pretty common value, maybe even sacrosanct.</p>
<p><span id="more-102"></span>As an individual living in a society with common values, government is the enforcer of the laws and government prosecutes suspected thefts.  What is interesting is that if an individual is convicted of theft, they receive a punishment based on the severity of the crime, and that punishment is roughly agreed upon by the COMMUNITY.  As a defendant, you have rights of due process and would be able to defend yourself according to the law of the land.  Further, in this country a defendant is protected from the Government, as the Government must also follow the law of the land.</p>
<p>Let&#8217;s flip it around.  As a society, we have agreed that if you are the victim of a crime, you will take your grievance to the government and file a claim in court.  As a plaintiff, you also are protected by the laws of the land and due process.  This is how even a single individual can take on a corporation and win.  There is DUE PROCESS for each side, Plaintiff and Defendant that as a society, we have all agreed upon using.</p>
<p>The process of using the governmental courts to settle disputes is what our society has agreed upon for longer than I know without Googling it.   If you feel like an individual or a corporation or even the government has wronged you, you must take your claim to court.</p>
<p>So why are corporations looking to<strong> <a title="OMFG, It's Big Brother!" href="http://boingboing.net/2009/11/03/secret-copyright-tre.html" target="_blank">ISP&#8217;s to become the enforcers of copyright law</a>? </strong> The Anti-Counterfeiting Trade Agreement is being  manipulated into a Copyright enforcement act.  But isn&#8217;t the enforcement of violated law the job of Government?</p>
<p>If you feel your copyright has been violated, file a claim in court!</p>
<p>There is a push for ISP&#8217;s to become the monitor, the snitch, and the enforcer.  That&#8217;s not what we&#8217;re good at.  I hate to say this, but isn&#8217;t that the job of Government?</p>
<p>Lions and tigers and bears!  Oh My!</p>
<p>This is my 4th post to this blog and I am seeing a recurring theme.  I feel like the future of the Internet is at stake.  I don&#8217;t know what the outcome of this treaty will be, but I&#8217;m hoping that some smart people start looking at this issue RIGHT AWAY and make sure EVERYONE is required to follow due process.</p>
<p>Peace.</p>
<p>-Bil</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/02/05/should-isps-be-copyright-enforcers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Request For Comments</title>
		<link>http://blogs.iphouse.net/2010/02/04/request-for-comments/</link>
		<comments>http://blogs.iphouse.net/2010/02/04/request-for-comments/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 16:20:55 +0000</pubDate>
		<dc:creator>Nick Gasper</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Sys Admins]]></category>
		<category><![CDATA[net neutrality]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=220</guid>
		<description><![CDATA[One of the many terms you&#8217;ll hear thrown around an internet service provider is Request For Comments, aka, RFC: &#8220;This isn&#8217;t per the RFC!&#8221; or &#8220;We follow the RFC!&#8221; or &#8220;Read the &#60;expletive deleted&#62; RFC!&#8221; So what is an RFC, and why do you want to know what it says.
RFCs are, in a nutshell, the <a href="http://blogs.iphouse.net/2010/02/04/request-for-comments/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>One of the many terms you&#8217;ll hear thrown around an internet service provider is <a title="Request For Comments" href="http://en.wikipedia.org/wiki/Request_for_Comments">Request For Comments</a>, aka, RFC: &#8220;This isn&#8217;t per the RFC!&#8221; or &#8220;We follow the RFC!&#8221; or &#8220;Read the &lt;expletive deleted&gt; RFC!&#8221; So what is an RFC, and why do you want to know what it says.</p>
<p>RFCs are, in a nutshell, the description of how a program, or procedure should work. The history of RFC is long and boring, but basically, they&#8217;ve been around since the <a title="ARPANET" href="http://en.wikipedia.org/wiki/ARPANET">ARPANET</a> Project began, as written or typed memo that were literally Requests for Comments, open ended questions that someone wanted to solicit answers to. As ARPANET grew, RFCs became the standard way to record procedure, and a way for people to implement the fundamental technologies that make up the Internet as it stands today. Today, RFCs are managed by the <a href="http://www.ietf.org/">Internet Engineering Task Force</a>.</p>
<p><span id="more-220"></span>RFCs are numbered in chronological order, and serve as sort of a timeline of the Internet and its protocols, and their modifications. Many a bar bet has been settled by referring to an RFC index.</p>
<p>RFCs are referred to by their number, and many of these numbers pop up, especially in error messages. For example, mail headers (the information that records how an email was processed) was originally covered by RFC 821, so you&#8217;ll often see errors in a mail log that references <a href="http://tools.ietf.org/html/rfc821">RFC 821</a>. The same goes for <a href="http://www.faqs.org/rfcs/rfc1945.html">HTML</a>, <a href="http://www.faqs.org/rfcs/rfc977.html">USENET</a>, <a href="http://www.faqs.org/rfcs/rfc1035.html">DNS</a>, etc&#8230; The errors are written that way because the creators want to emphasize that they follow the RFCs, and so should you.</p>
<p>Why are RFCs important? Well, it boils down to communication theory. The Internet at large is basically an anarchy. There are no overriding rules. It&#8217;s just data going back and forth. The only way that too entities can communicate with each other is if they agree to. RFCs are a way to manage these agreements. It&#8217;s a way to say: &#8220;I follow these rules, and if you don&#8217;t, don&#8217;t expect me to understand what you&#8217;re saying.&#8221; If you write a program that follows the RFCs properly, you can expect other correctly written programs to understand what&#8217;s going on.</p>
<p>Some companies don&#8217;t follow RFCs, they try to use their marketing positions and user base to, what one calls &#8220;Embrace and Extend&#8221; certain protocols. They more or less want to pollute the internet with their own way of doing things, so that they can control who talks to their users, and who their users talk to. Many others are very strict about their interpretation of the RFCs, causing users to get caught in the middle of Open Standards vs Commercial Protocols. This war is hardly limited to RFCs, there are all sorts of standards bodies that companies ignore. Furthermore, RFCs tend to be vague about specific actions. There&#8217;s a lot of &#8220;you can,&#8221; &#8220;you should,&#8221; and &#8220;it is recommended,&#8221; talk in most of them. This often leads to arguments about what is allowed and what is not &#8220;per an RFC.&#8221;</p>
<p>Like I said, anarchy.</p>
<p>Ultimately, RFCs are holy writ to some, and merely &#8220;guidelines&#8221; to others. Most UN*X Admins follow RFCs and &#8220;Best Practices&#8221; as best they can. Many others do not. How important is it to follow them? Well, most of the Internet is still run on programs that use open protocols. So far, most initiatives to commandeer them by commercial entities have failed.</p>
<p>I personally believe in open standards, so if you expect to talk to me, or any my systems, you better follow the &lt;expletive deleted&gt; RFC!</p>
<p>I hope that helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/02/04/request-for-comments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tabbing content with script.aculo.us</title>
		<link>http://blogs.iphouse.net/2010/02/03/tabbing-content-with-script-aculo-us/</link>
		<comments>http://blogs.iphouse.net/2010/02/03/tabbing-content-with-script-aculo-us/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 23:52:57 +0000</pubDate>
		<dc:creator>doug rau</dc:creator>
				<category><![CDATA[Support]]></category>
		<category><![CDATA[Hosting]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=166</guid>
		<description><![CDATA[this week&#8217;s project is tabbing content on a web page.  it should be simple to implement, with as little intrusion into the HTML structure of the page and doing as much work automatically as possible.  it should degrade cleanly, so that the entire content is presented normally if javascript is not enabled, and content <a href="http://blogs.iphouse.net/2010/02/03/tabbing-content-with-script-aculo-us/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>this week&#8217;s project is tabbing content on a web page.  it should be simple to implement, with as little intrusion into the HTML structure of the page and doing as much work automatically as possible.  it should degrade cleanly, so that the entire content is presented normally if javascript is not enabled, and content should also present normally if the page is printed instead of viewed on-screen.</p>
<p><span id="more-166"></span>we&#8217;ll be using the <a href="http://prototypejs.org/">prototype</a> and <a href="http://script.aculo.us/">script.aculo.us</a> javascript libraries to do most of the heavy lifting.  prototype provides all the DOM selection and introspection tools we&#8217;ll need, and better array management.  builder, which is part of script.aculo.us, provides tools for creating new DOM nodes, which we&#8217;ll use to build our tab navigation and insert it into the document.</p>
<p>first, our tabbing code needs to look for any blocks of tabbed content within the web page.  we&#8217;ll define these by enclosing them within a <code>&lt;div&gt;</code> block, with an appropriate marker class.  however, it can&#8217;t do this until the web browser has loaded the document and parsed the HTML markup, so we use prototype to observe that event, and invoke our initialization function when it happens.  if there are any tabbed blocks, then&#8230;</p>
<p>for each tabbed block, do a bit of setup, then get a list of the tab blocks within it.  again, we&#8217;ll define these within <code>&lt;div&gt;</code> blocks, with appropriate marker classes.  each tab <code>&lt;div&gt;</code> should also have a title, which will be used for the tab link.</p>
<p>for each tab, attach a unique identifier to the content, build a new link to activate it, and then hide it by giving it the &#8216;<code>inactive</code>&#8216; class.  after we&#8217;ve built our list of tab links (tab_nav), insert it into the top of the tabbed block.  finally, determine the first tab in the current tabbed block, and invoke <code>lift_tab()</code> to activate it.</p>
<pre>// tabbed.js

document.observe('dom:loaded',init_tabs);

function init_tabs () {
  if (blocks = $$('div.tab_block')) {
    var B = {}; Builder.dump(B);   // for convenience

    blocks.each(function (block) {
      block_attr = { 'class': 'tab_nav' };
      items = [];

      if (tabs = block.select('div.tab')) {
        tabs.each(function (tab) {
          tbd_id = tab.identify();
          a_attr = { 'onclick': "lift_tab(this,'" + tbd_id + "')" };

          items.push(B.LI({},B.A(a_attr,tab.title)));
          tab.addClassName('inactive');
        });
        block.insert({ 'top': B.UL(block_attr,items) });
        lift_tab(block.down('ul').down('a'), tabs[0].identify());
      }
    });
  }
}
</pre>
<p>the <code>lift_tab()</code> function expects a tab link and content identifier.  it deactivates all the tab links within the same list, then activates the specified tab link.  in a similar fashion, it activates the corresponding content.  note, however, the opposite sense of the classes involved.  tab links are explicitly active, content is explicitly not inactive.  this is done this way to make the CSS style sheets a little simpler.</p>
<pre>// tabbed.js continued...

function lift_tab (link, content_id) {
  link.up('ul').select('a').each(function (a) {
    a.removeClassName('active');
  });
  link.addClassName('active');

  link.up('div').select('div.tab').each(function (d) {
    d.addClassName('inactive');
  });
  $(content_id).removeClassName('inactive');
}
</pre>
<p>next, we define the CSS style sheets which actually effect the changes which the javascript is making to the HTML elements.  on-screen, we want our list of tabs to be displayed inline, in a single row, with appropriate margins and borders.  inactive tab links are greyed out, whereas active tab links are given a white background and bottom border to mask the border which normally separates the navigation and content, visually linking that tab to the content.  finally, inactive content is hidden by setting its display to &#8216;none&#8217;.</p>
<pre>// tabbed-screen.css

ul.tab_nav { margin: 0px; padding: 2px 0px; border-bottom: 1px solid; }
ul.tab_nav li { display: inline; margin: 0px; padding: 0px;
  list-style: none; }
ul.tab_nav li a { margin: 0px; margin-left: 3px; padding: 3px 0.5em;
  border: 1px solid; border-bottom: none;
  color: #808080; font-weight: bold; text-decoration: none; }
ul.tab_nav li a.active { border-bottom: 1px solid #FFFFFF;
  background: #FFFFFF; color: #000000; }
div.inactive { display: none; }
</pre>
<p>styling for print is much simpler.  hide the navigation, and all tab blocks are presented normally.</p>
<pre>// tabbed-print.css

.tab_nav { display: none; }
</pre>
<p>finally, we include all our javascript libraries and style sheets into the page.  since the code is contingent upon having tabbing <code>&lt;div&gt;</code> blocks defined in the HTML markup, we can simply add this to a page template.  this makes it available wherever we want to use it, and it simply does nothing wherever we don&#8217;t.</p>
<pre>&lt;script type="text/javascript" src="/lib/prototype.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/lib/builder.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/lib/tabbed.js"&gt;&lt;/script&gt;

&lt;link rel="stylesheet" type="text/css" media="screen"
    href="/lib/tabbed-screen.css" /&gt;
&lt;link rel="stylesheet" type="text/css" media="print"
    href="/lib/tabbed-print.css" /&gt;
</pre>
<p>to turn a block of content into tabbed content,<br />
enclose the entire block in <code>&lt;div class="tab_block"&gt; ... &lt;/div&gt;</code><br />
and each tabbed block in <code>&lt;div class="tab" title="Title"&gt; ... &lt;div&amp;gt</code></p>
<pre>&lt;h1&gt;tabbing content with prototype&lt;/h1&gt;
&lt;p&gt;this paragraph is above the tabbed content.&lt;/p&gt;

&lt;div class="tab_block"&gt;
  &lt;div class="tab" title="Overview"&gt;
    &lt;p&gt;an overview of what we're doing and how it works.&lt;/p&gt;
    ...
  &lt;/div&gt;
  &lt;div class="tab" title="Javascript"&gt;
    &lt;p&gt;details on the javascript coding which makes this work.&lt;/p&gt;
    ...
  &lt;/div&gt;
  &lt;div class="tab" title="CSS"&gt;
    &lt;p&gt;details on the CSS styling which makes this work.&lt;/p&gt;
    ...
  &lt;/div&gt;
  &lt;div class="tab" title="Implementation"&gt;
    &lt;p&gt;finally, how to put everything together.&lt;/p&gt;
    ...
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;this paragraph is below the tabbed content.&lt;/p&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/02/03/tabbing-content-with-script-aculo-us/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Undeliverable mail</title>
		<link>http://blogs.iphouse.net/2010/01/19/undeliverable-mail/</link>
		<comments>http://blogs.iphouse.net/2010/01/19/undeliverable-mail/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 19:27:47 +0000</pubDate>
		<dc:creator>Andrew Will-Holmberg</dc:creator>
				<category><![CDATA[email]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=154</guid>
		<description><![CDATA[One of the most common email related support calls I get is someone wondering why they&#8217;re receiving &#8220;Undeliverable Mail Returned to Sender&#8221; notifications when sending out email to a particular email address. These &#8220;bounce back&#8221; messages will tell you why the email couldn&#8217;t be delivered, but often times the language used isn&#8217;t immediately understandable by <a href="http://blogs.iphouse.net/2010/01/19/undeliverable-mail/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>One of the most common email related support calls I get is someone wondering why they&#8217;re receiving &#8220;Undeliverable Mail Returned to Sender&#8221; notifications when sending out email to a particular email address. These &#8220;bounce back&#8221; messages will tell you why the email couldn&#8217;t be delivered, but often times the language used isn&#8217;t immediately understandable by someone who isn&#8217;t an IT professional, or &#8220;into computer stuff&#8221;. I thought I&#8217;d go over some of the more common undeliverable errors, and explain what they mean. I made a test email address for this purpose, blogtest@iphouse.com &#8211; and then sent several emails to it that were intended to be bounced for various reasons. Here&#8217;s the first bounce back message:</p>
<pre>This is the mail system at host smtpin-2.iphouse.net.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.</pre>
<pre><a href="mailto:blogtest@iphouse.com">&lt;blogtest@iphouse.com&gt;</a>: permission denied. Command output: maildrop: maildir
    over quota.
</pre>
<p><span id="more-154"></span>Breaking this error down; the first part tells us what server issued the rejection. In this case it was the host &#8220;smtpin-2.iphouse.net&#8221; &#8211; the mail server responsible for receiving email for the email address blogtest@iphouse.com   The second part tells us who we were sending the email to, in this case it was sent to testblog@iphouse.com  The third part tells us the error type, as in a permanent or temporary error. A permanent error means that the email won&#8217;t be delivered. A temporary error means that the sending mail server ought to try again later.  In this case it says &#8220;Permission Denied&#8221; &#8211; that&#8217;s a permanent error. The fourth part of this error message tells us why the email was rejected, in this case it says &#8220;Command output: maildrop: maildir over quota&#8221;. What this means is that the service &#8220;maildrop&#8221; says that the Mail Directory (maildir) is over quota &#8211; the mailbox is full. What this means for us the sender, is that we shouldn&#8217;t bother trying to send that person anymore email until they clear out their overstuffed mailbox. There isn&#8217;t anything we can do about it other that calling that person up to tell them that their mailbox is full.</p>
<p>Here&#8217;s the next error bounceback:</p>
<pre>Unable to deliver message to: <a href="mailto:blogtest@iphouse.com">&lt;blogtest@iphouse.com&gt;</a>
Delivery failed for the following reason:
smtpin-2.iphouse.net[216.250.188.181] responded with failure: 550 5.7.1 black
listed URL host ***.********.net by .black.uribl.com

This has been a permanent failure.  No further delivery attempts will be made.</pre>
<p>I did make one edit to this error message, I replaced the blacklisted URL with a bunch of asterisks (*). I don&#8217;t see any reason to give a spammy site any more traffic than it already has. OK, so let&#8217;s break this error down. The first part of this error message tells us who we were sending the email to, in this case blogtest@iphouse.com was the intended recipient. The second part tells us what server issued the rejection, in this case it was the server smtpin-2.iphouse.net &#8211; so it was the recipient&#8217;s mail server issuing the rejection, not the sender&#8217;s. The third part tells us what kind of rejection it was, and why it was rejected. In this case the error code was &#8220;550&#8243; (I&#8217;ll go into error codes later), and that the email was rejected because it had a link to a website (the one I used ***** to hide), which happened to be on the blacklist &#8220;black.uribl.com&#8221;. The last part is just another note that this was a permanent error, in case you didn&#8217;t already know that that&#8217;s what a 550 is. What this bounce back message means for us the sender is that we had a link to a website in our email that a spam filter on the recipient&#8217;s mail server didn&#8217;t like. We&#8217;ve got a few options here. The simplest thing would be to send the person a new email, but this time not include the offending website link. If we think that the website in question should not be on this blacklist in the first place (mistakenly listed), then we can always go to uribl.com and request that the offending website be removed from their list. Not all blacklists let you do this, but plenty do &#8211; and as it so happens, uribl.com lets you request removals. Another option would be to contact the intended recipient to tell them that a spam filter of theirs is rejecting that link. The intended recipient could then follow up with their IT staff, or their ISP. I suppose the final option would be to try to &#8220;game the filter&#8221; by breaking up the link a bit. For example, let&#8217;s say that iphouse.com was blacklisted somehow. I could try sending the person a link to iphouse.com like this:  www (dot) iphouse (dot) com    A human reading this ought to be able to figure out your intent, whereas a spam filter might be tricked.</p>
<p>Here&#8217;s the next error bounce back:</p>
<pre><a href="mailto:testblog@iphouse.com">&lt;testblog@iphouse.com&gt;</a>: host smtpgrey-2.iphouse.net[216.250.190.161] said: 550
    5.1.1 <a href="mailto:testblog@iphouse.com">&lt;testblog@iphouse.com&gt;</a>: Recipient address rejected: User unknown (in
    reply to RCPT TO command)</pre>
<p>The first part of this error message tells us who we were sending the email to, in this case testblog@iphouse.com was the intended recipient. The second part tells us what server issued the rejection, in this case it was the server smtpgrey-2.iphouse.net &#8211; so it was the recipient&#8217;s mail server issuing the rejection, not the sender&#8217;s. The third part tells us what kind of rejection it was, and why it was rejected. It&#8217;s another 550, so a permanent rejection. It was rejected because the User was Unknown. This means that the email address doesn&#8217;t exist. If you caught the mistake in the email address right off the bat, plus 10 points for you. I accidentally sent an email to &#8220;testblog@iphouse.com&#8221; instead of &#8220;blogtest@iphouse.com&#8221;. Oops. As a funny aside, I actually generated this bounce back message accidentally when I was aiming for another type of bounce back. It took me a moment to catch my mistake. I guess that&#8217;s what more coffee is for&#8230;..    Anyhoo, what this means for us the sender, is that we just need to send out a new email, but this time type in the correct address. If you&#8217;re absolutely positively 100% double plus certain that you didn&#8217;t make any typo in the email you sent out, go ahead and look for the typo anyhow. It&#8217;s really easy to miss certain things like a &#8220;,&#8221; instead of a &#8220;.&#8221;, or a letter out of place. If your double check doesn&#8217;t yield any typos, and you&#8217;re certain that the address is a valid one, you might want to contact the intended recipient to inform them that something is amiss regarding their email address.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/01/19/undeliverable-mail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anti-spam Part 2, Bayesian Spam Filtering</title>
		<link>http://blogs.iphouse.net/2010/01/05/anti-spam-part-2-bayesian-spam-filtering/</link>
		<comments>http://blogs.iphouse.net/2010/01/05/anti-spam-part-2-bayesian-spam-filtering/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 14:34:56 +0000</pubDate>
		<dc:creator>Nick Gasper</dc:creator>
				<category><![CDATA[Support]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[SPAM]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=145</guid>
		<description><![CDATA[Well, Andrew and I kinda stepped on each others toes last month, but I&#8217;ll go into a little more depth on some of the things he touched on. Last month I talked about the frontend of our anti-spam filtering via Greylisting.
At the opposite end of our anti-spam system is content filtering. We use a third <a href="http://blogs.iphouse.net/2010/01/05/anti-spam-part-2-bayesian-spam-filtering/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Well, <a title="Andrew's posts on this blog" href="http://blogs.iphouse.net/author/andrew/" target="_blank">Andrew</a> and I kinda stepped on each others toes last month, but I&#8217;ll go into a little more depth on some of the things he touched on. Last <a title="Greylisting - an article by Nick Gasper" href="http://blogs.iphouse.net/2009/12/05/anti-spam-part-1-greylisting/" target="_blank">month</a> I talked about the frontend of our anti-spam filtering via Greylisting.</p>
<p>At the opposite end of our anti-spam system is content filtering. We use a third party vendor for this, MailFoundry in the form of two appliances. An appliance is a machine that you plug in, and is suppose to work with minimal configuration.</p>
<p>Now the MailFoundry appliances are &#8220;black box&#8221; systems. We don&#8217;t know how they work exactly, but we&#8217;re pretty sure that one of the techniques they use is <a title="Bayesian - probability and statistics!" href="http://en.wikipedia.org/wiki/Bayesian" target="_blank">Bayesian</a> spam filtering.</p>
<p>Bayesian spam filtering uses the concept of probability to evaluate each token in a message, assign a weight to each, give the overall message a rating based on this weight, and evaluate the message based on a preset threshold.</p>
<p>Ok, unless you&#8217;re up on your statistics or logic based calculus, or a computer nerd with Wikipedia handy, I know your eyes just glazed over. Rest assured, you are not alone.</p>
<p><span id="more-145"></span>Basically, what it boils down to is that every &#8220;token&#8221; is a series of characters separated by whitespace. During this discussion, most &#8220;tokens&#8221; are words. Certain tokens are negative, they tend to appear in spam messages. Others are positive, they tend to appear in good (or ham) messages. Each token has a value (or a &#8220;weight&#8221;). A Bayesian spam filtering system reads the message, adds up all of the negative and positive weights of the tokens which produces an overall probability rating. If the rating is too negative, it considers the message spam. If it&#8217;s positive, it doesn&#8217;t.</p>
<p>Now, how does the Bayesian filter know which tokens are bad or good? Well, you have to give it examples of each. If a message is spam, and it gets through the filter, you have to tell the filter that it&#8217;s spam. When a message is marked as spam, all of the tokens in the message have their ratings lowered in the filter&#8217;s database. Ideally, you&#8217;d also mark good messages as good, but most people don&#8217;t. Most Bayesian filtering schemes are configured to mark all delivered messages as good unless they are marked as bad. Over time, the good tokens get &#8220;gooder&#8221; and the bad tokens get &#8220;badder&#8221; and the system can determine what is spam and what is not.</p>
<p>Bayesian spam filtering works amazingly well on individual email accounts, as it will be able to determine an individual&#8217;s taste in what is spam and what is not. Unfortunately, it&#8217;s not as effective across hundreds or thousands of users, but it still helps. Your personal spam filter will usually outperform anything on our end, because you may have a different definition of what is spam than other users out there. On a large system like ours, tokens that would be marked as negative for you, are nullified by others marking them as positive. So, say mail sent from a list that you signed up for, but no longer want may be spam to you, but may not be to other people out there. That&#8217;s why it&#8217;s best to unsubscribe from those lists rather than try to get our system to recognize it as spam.</p>
<p>If you want to help feed our filters, feel free to send examples of any spam you receive via our system, as attachments, to spam at iphouse.com.</p>
<p>I hope that helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2010/01/05/anti-spam-part-2-bayesian-spam-filtering/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Why was my email flagged as spam?</title>
		<link>http://blogs.iphouse.net/2009/12/08/why-was-my-email-flagged-as-spam/</link>
		<comments>http://blogs.iphouse.net/2009/12/08/why-was-my-email-flagged-as-spam/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 17:20:59 +0000</pubDate>
		<dc:creator>Andrew Will-Holmberg</dc:creator>
				<category><![CDATA[Support]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[SPAM]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=110</guid>
		<description><![CDATA[&#8220;Why was my email flagged as spam?&#8221; This is a very common question, and while it looks like a simple one on the surface, it&#8217;s actually not as easy to answer as you might think. Common misconceptions are;
1) If I&#8217;ve sent and received email from my friend for years, it shouldn&#8217;t get flagged as spam.
2) <a href="http://blogs.iphouse.net/2009/12/08/why-was-my-email-flagged-as-spam/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>&#8220;Why was my email flagged as spam?&#8221; This is a very common question, and while it looks like a simple one on the surface, it&#8217;s actually not as easy to answer as you might think. Common misconceptions are;</p>
<p>1) If I&#8217;ve sent and received email from my friend for years, it shouldn&#8217;t get flagged as spam.</p>
<p>2) If I have their email address in my address book, their email won&#8217;t get flagged as spam.</p>
<p>3) If I avoid using certain words, my email won&#8217;t get flagged as spam.</p>
<p>None of these things are true. To understand why this is a tricky question to answer, it&#8217;s helpful to know a bit about what ISP&#8217;s are doing to filter spam. Most ISP&#8217;s have their own &#8220;custom blend&#8221; of what they do to filter spam, but it more or less boils down to using a combination of one or more of the following: Blacklists, Greylisting,  enforcing RFC&#8217;s, and more traditional Content Filters.</p>
<p>Blacklists can be based on all kinds of things. They can be lists of IP addresses that have been reported as sources of spam, lists of mail servers that have been found to be capable of being used as open mail relays, lists of URL&#8217;s that have been &#8220;spamvertised&#8221;, or any number of other things. Not all blacklists are the same. Some are very aggressive in what they list, and some are very conservative. The aggressive lists might block a lot of spam, but they are also more likely to have &#8220;false positives&#8221; &#8211; as in they blocked something that the recipient really did want to receive. Whereas the conservative lists might not have many false positives, but they&#8217;re likely to let more spam through.</p>
<p>Greylisting is when a receiving mail server issues a temporary error, which causes the sending mail server to re-queue the email and send it once more. Being able to re-queue an email is something that any RFC compliant mail server ought to be able to do. Greylisting can drastically reduce spam sent through &#8220;spam zombies&#8221; &#8211; home computers compromised by viruses that send spam out directly from the PC instead of through a mail server capable of re-queuing email.</p>
<p>RFC&#8217;s are, in a nutshell, the basic minimum standards for anything Internet related. Enforcing RFC compliance for mail can cut down on mail sent out from compromised PC&#8217;s/servers, and cut down on spam sent out from &#8220;sketchy&#8221; mail servers.</p>
<p>And lastly, content filters are the more traditional form of analyzing the content of an email to determine the &#8220;spamyness&#8221; of the email. Each spam filter system has its own &#8220;custom blend&#8221; of techniques to identify spam. Some of these criteria include; spammy words/spelling (\/1agra), format of an email (lot&#8217;s of CAPITAL/<strong>BOLD/</strong>etc lettering), lists of &#8220;spamvertised&#8221; websites, know spammer addresses, etc. Some filters use a feedback system that allows end users to submit examples of spam to train the filter.</p>
<p>Because blacklists and content filters are dynamic in nature, it can be very difficult to determine what it was at that exact moment that caused a particular email to be tagged as spam.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2009/12/08/why-was-my-email-flagged-as-spam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anti-Spam Part 1, Greylisting</title>
		<link>http://blogs.iphouse.net/2009/12/05/anti-spam-part-1-greylisting/</link>
		<comments>http://blogs.iphouse.net/2009/12/05/anti-spam-part-1-greylisting/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 15:43:47 +0000</pubDate>
		<dc:creator>Nick Gasper</dc:creator>
				<category><![CDATA[email]]></category>
		<category><![CDATA[SPAM]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=135</guid>
		<description><![CDATA[I&#8217;ve occasionally gotten calls from system administrators about a “mail bouncy thing” they notice in their logs when they send mail to us.  They find it weird and sometimes frustrating and many consider it a silly anti-spam technique. Well, that would be greylisting, and while it’s weird, it also drops a lot of spam getting <a href="http://blogs.iphouse.net/2009/12/05/anti-spam-part-1-greylisting/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve occasionally gotten calls from system administrators about a “mail bouncy thing” they notice in their logs when they send mail to us.  They find it weird and sometimes frustrating and many consider it a silly anti-spam technique. Well, that would be <a title="Greylisting - simple solution that stymies spam servers and botnets" href="http://greylisting.org/" target="_blank">greylisting</a>, and while it’s weird, it also drops a lot of spam getting through to our customers.</p>
<p>It&#8217;s also our first line of defense against spam.</p>
<p>Greylisting is a very simple technique. It is a daemon attached to database that keeps track of who externally sent mail to whom internally, including from what IP address. When a new sender/recipient/IP-address (or <em>triplet</em> as it is called) combination pops up, it bounces the transaction with a temporary, 450/451 response code. This is per the RFC and any properly implemented SMTP server should adhere to it, re-queue the message, and send it again later. If the server sends it before a specified “too early” window (in my case on my personal server, 2 mins, but that’s fairly aggressive) it’s temp-failed (tech term for try again later) again. If the message comes back after this “too early” window, but before a 24 hour expiration window, the message is passed through, and an entry is made in the database allowing that triplet to send mail unhindered for a few days (depending on configuration). If enough messages come from the same ip address and domain pass Greylisting, that whole domain can be automatically white-listed through the check.</p>
<p>The goal of greylisting is not to penalize legitimate mail servers but only to stop non-compliant botnets from getting through.</p>
<p>Greylisting is very effective because it keeps non-compliant SMTP servers from sending mail to our (or even your) servers. Most virus infected computers that send or relay spam won’t re-queue messages, or will re-queue them for only the briefest amount of time. Why? Their goal is to blast as much email/virus payload as possible, and any slowdown or long retry time is very counterintuitive to this goal.</p>
<p>Problems with greylisting are legitimate, by mis-configured SMTP servers either not re-queuing the messages because they are set to treat 400 series bounces as 500 series (permanent) bounces. Or they re-queue the messages, but report to the original sender that the message bounced.</p>
<p>Yahoo implements a more esoteric set up, where they have 4 servers listed in the MX record, and at any time, any of them will bounce messages. This is another way to test for non RFC compliant servers, as a server is supposed to try all of the MX entries in turn, by weight value. Most virus infected computers won’t do that. At least that is what it looks like from the outside.</p>
<p>Because some of our users may have problems with receiving mail, our web-based interface, <a title="ipMom, ipHouse account management system" href="https://ipmom.iphouse.com/" target="_blank">ipMom</a>, gives you the option to disable greylisting. If you log into ipMom with your email address and password, you&#8217;ll notice a &#8220;Greylist&#8221; option . Set it to off, and greylisting is no longer affecting your mail. Keep in mind that this does let more spam into the system, although our other anti-spam protections may still catch them.</p>
<p>I hope that helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2009/12/05/anti-spam-part-1-greylisting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>So who hosts what in the where now?</title>
		<link>http://blogs.iphouse.net/2009/11/20/so-who-hosts-what-in-the-where-now/</link>
		<comments>http://blogs.iphouse.net/2009/11/20/so-who-hosts-what-in-the-where-now/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 20:39:44 +0000</pubDate>
		<dc:creator>Nick Gasper</dc:creator>
				<category><![CDATA[Support]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Hosting]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=112</guid>
		<description><![CDATA[One of the most common points of confusion for our customers domain registration and DNS hosting. DNS isn&#8217;t exactly the easiest thing to understand, nor is domain registration, so it&#8217;s natural that a lot of people would find the whole thing baffling.
The first thing to understand is the Registrar. A registrar is a company that <a href="http://blogs.iphouse.net/2009/11/20/so-who-hosts-what-in-the-where-now/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>One of the most common points of confusion for our customers domain registration and <a title="Domain Name Service" href="http://en.wikipedia.org/wiki/Domain_Name_System" target="_blank">DNS</a> hosting. DNS isn&#8217;t exactly the easiest thing to understand, nor is domain registration, so it&#8217;s natural that a lot of people would find the whole thing baffling.</p>
<p>The first thing to understand is the <a title="DNS Registrar" href="http://en.wikipedia.org/wiki/Domain_name_registrar" target="_blank">Registrar</a>. A registrar is a company that is accredited, and allowed to work with ICANN ( The Internet Corporation for Names and Numbers). ICANN actually maintains domain names and their information. You pay a registrar for your domain registration, and they, in turn, pay ICANN and provide them with the domain&#8217;s information. There are other parties and services involved, but in the interest of keeping it simple, that&#8217;s how it works.</p>
<p>Once the registrar has the domain name registered and reserved, actual Domain Name Servers need to be assigned to it. DNS is the service that turns the domain name, say, example.com, into its associated IP address. Humans can remember words far better than numbers. And computers deal with numbers.  This is why we have DNS.</p>
<p>It also tells servers where to send email and what IP addresses various services may use. Each service normally has an A (or address) record. For example, an ftp server, ftp.example.com, may be on one IP address while the website, let&#8217;s say www.example.com, may be on another. Mail routing is controlled through the MX (mail exchange) record, which must point to a host name, like mail.example.com instead of an IP address. Canonical Name records and TXT record are used for more specialized purposes.</p>
<p>Usually, a registrar defaults to using their in-house nameservers. You can use these servers, putting in the information from your hosting company, usually by using a web based interface. However, we feel it is a better idea to switch the nameserver to your hosting company&#8217;s. That way, if your hosting company makes a change then they can update your DNS automatically alleviating your need to worry about these technical details.</p>
<p>DNS can be tricky and it is absolutely critical that your information is correct. One small mistake can cause you to not receive email, or not be able to view your own website. Many outages are associated with DNS problems and can easily be avoided by making sure the right information is in the right place.</p>
<p>Now, there are PTR (or rDNS) records that often are confusing. Most DNS queries are like looking up a name in a phone book directory, but you look up a server name to get the IP address (instead of a phone number). There are a few instances where you want to check the IP address and see who it belongs to, kind of like a reverse directory search of a phone number to see who&#8217;s calling. This is called a reverse DNS check.</p>
<p>This most often come into play when mail servers want to check the legitimacy of the SMTP servers that are sending them messages. If they query the IP address and get mail.example.com (or some other, similar Fully Qualified Domain Name) they let it pass. If they get something like 192-168-123-45-adsl-dynamic-customer.isp.net, they may reject or quarantine messages. These records are maintained by the ISP who provides the IP address, so if you run a server out of colocation space or off your Internet connection, you&#8217;ll want to contact the ISP to update that information.</p>
<p>Well, this was a very basic summary, hopefully it helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2009/11/20/so-who-hosts-what-in-the-where-now/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>&#8220;It Worked Yesterday!&#8221;</title>
		<link>http://blogs.iphouse.net/2009/11/06/it-worked-yesterday/</link>
		<comments>http://blogs.iphouse.net/2009/11/06/it-worked-yesterday/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 22:01:21 +0000</pubDate>
		<dc:creator>Nick Gasper</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Power]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=104</guid>
		<description><![CDATA[The three most dreaded words a support technician can hear are &#8220;It Worked Yesterday.&#8221;
That phrase has a hidden implication trailing after it &#8220;&#8230;so what did you do?&#8221;
Well, usually, we didn&#8217;t do anything. People can accept that a car, or a furnace, or a TV can break someday out of the blue. We all know that <a href="http://blogs.iphouse.net/2009/11/06/it-worked-yesterday/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>The three most dreaded words a support technician can hear are &#8220;It Worked Yesterday.&#8221;</p>
<p>That phrase has a hidden implication trailing after it &#8220;&#8230;so what did you do?&#8221;</p>
<p>Well, usually, we didn&#8217;t do anything. People can accept that a car, or a furnace, or a TV can break someday out of the blue. We all know that those are machines, and we have some idea of how they work, and that they do break. The problem is, not a lot of people realize that computers are machines too. Sure, If you ask someone if a computer is a machine, they&#8217;ll say yes. However, if you show them the inside of a computer tower, they&#8217;ll usually shake their head and say &#8220;Is that it?&#8221;</p>
<p><span id="more-104"></span>It&#8217;s been clear, over my many years of tech support, that people think their computer is a magical device. And since it&#8217;s magical, it should work a certain way. Forever. And when it stops working, some mysterious outside forces conspired to break it.</p>
<p>My brother thinks this way. To him, a computer does what it&#8217;s supposed to, and then it stops. Then he calls me, and to him, I cast a few magic spells, prod at it chanting while waving a censor of incense in the air, and it magically stops working. They I mumble in a strange, arcane language about what went wrong. He smiles and nods, and the magic box runs again. For a while.</p>
<p>But when it breaks, it&#8217;s the ISPs fault, or his wife &#8220;touched something&#8221; or a computer virus caused his machine not to power on.</p>
<p>I tell him, it&#8217;s not any of those things, it&#8217;s him. It&#8217;s us.</p>
<p>Computers are beholden to humanity. They suffer from our lazy programming, our dusty houses, our animals that chew on their wires, our neurotic ticks causing our legs to kick them. Computers suffer this day in and day out while we curse them, berate them, and blame them for everything we all ultimately did or failed to do. Did install an anti-spam program. Is your computer is slow now? Did you visit customcusors.biz.co.tg? Is your hard drive always making noise? Did you forget to update your operating system? Is your email program acting erratically?</p>
<p>Do yourself a favor. Update your operating system. Blow out your computer&#8217;s fans and vents once and a while. Don&#8217;t install every security program ever made. Don&#8217;t install trinkets that were programmed by the lowest bidder. Treat you computer well, and it&#8217;ll treat you well.</p>
<p>Well, until it magically breaks one day.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2009/11/06/it-worked-yesterday/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Do you want a Kindle?</title>
		<link>http://blogs.iphouse.net/2009/10/29/do-you-want-a-kindle/</link>
		<comments>http://blogs.iphouse.net/2009/10/29/do-you-want-a-kindle/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 19:32:10 +0000</pubDate>
		<dc:creator>Aileen Horwath</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blogs.iphouse.net/?p=97</guid>
		<description><![CDATA[Do you want a chance to win a free Kindle? Should we be giving something else away at ipHouse event booths? ]]></description>
			<content:encoded><![CDATA[<p>ipHouse has been getting out to events more in the past 5 months than we have in the past 5 years. We are having fun meeting customers face-to-face and learning about how you use ipHouse services.</p>
<p>At some of these events we have held a drawing for a free Amazon Kindle. Personally, I have a Kindle and I love it.  Do you folks feel the same way? Do you want a chance to win a free Kindle? Should we be giving something else away? Please send us your opinions and ideas.</p>
<p>Our next event is the <a title="Tax 09 Conference" href="http://www.mncpa.org/taxconference/" target="_self">55th Annual Minnesota CPA Tax Conference </a>on November 16th and 17th at the Minneapolis Convention Center.  This is a well-organized and educational event put on by the Minnesota Society of Certified Public Accountants. We look forward to seeing you there.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.iphouse.net/2009/10/29/do-you-want-a-kindle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
