<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Penguins-On-Hudson &#187; Case Study</title>
	<atom:link href="http://codefix.wordpress.com/category/case-study/feed/" rel="self" type="application/rss+xml" />
	<link>http://codefix.wordpress.com</link>
	<description>Linux &#38; F.O.S.S. in the Hudson River Valley.</description>
	<lastBuildDate>Sat, 01 Nov 2008 21:45:07 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='codefix.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/904cee70020c986d4c7351c3f0a73f32?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Penguins-On-Hudson &#187; Case Study</title>
		<link>http://codefix.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://codefix.wordpress.com/osd.xml" title="Penguins-On-Hudson" />
		<item>
		<title>OpenSSH: Environmental Override</title>
		<link>http://codefix.wordpress.com/2008/11/01/openssh-environmental-override/</link>
		<comments>http://codefix.wordpress.com/2008/11/01/openssh-environmental-override/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 21:45:07 +0000</pubDate>
		<dc:creator>Garrison</dc:creator>
				<category><![CDATA[Case Study]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenSSH]]></category>

		<guid isPermaLink="false">http://codefix.wordpress.com/?p=254</guid>
		<description><![CDATA[prerequisite concepts: prelude, basic configuration
This post is as much about customizing the root shell as it is about SSH environment variables, but I&#8217;m adding this to my OpenSSH collection because it&#8217;s applicable to  any user.
I occasionally work on servers where, for a variety of reasons, I share an account with one or more other [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=254&subd=codefix&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:right;"><em>prerequisite concepts: <a href="http://blog.penguins-on-hudson.com/2008/09/25/openssh-prelude/">prelude</a>, <a href="http://blog.penguins-on-hudson.com/2008/09/26/openssh-basic-configuration/">basic configuration</a></em></p>
<p>This post is as much about customizing the root shell as it is about SSH environment variables, but I&#8217;m adding this to my <a href="http://blog.penguins-on-hudson.com/2008/09/25/openssh-prelude/">OpenSSH collection</a> because it&#8217;s applicable to <a href="http://openssh.org"><img src="http://codefix.files.wordpress.com/2008/10/puffy-armed.png?w=200&#038;h=170" alt="" title="puffy-armed" width="200" height="170" class="alignright size-full wp-image-154" /></a> any user.</p>
<p>I occasionally work on servers where, for a variety of reasons, I share an account with one or more other users; this is almost always suboptimal, but it does happen nonetheless. Over time I&#8217;ve grown somewhat partial to <a href="http://www.zsh.org">zShell</a>, so one method I&#8217;ve used is to log in to a default shell, usually bash, then run <span class="code">zsh</span>.<span id="more-254"></span></p>
<p>Even on server&#8217;s where I am the sole administrator, I usually don&#8217;t change the default shell&#8211; not so much because of days gone by when doing such a thing would break boot scripts &amp; such, but because I try to practice the good habit of logging in as a normal user and using sudo for escalated privileges.</p>
<p>Eventually I struck upon the idea to have some code in the shell init script (e.g. $HOME/.bash_profile) switch to the shell of my choosing automatically as I log in. What I came up with looks something like this:</p>
<pre>if [ -n "$CDFX_SHELL" ]; then
    tty -s &amp;&amp; exec $CDFX_SHELL
fi</pre>
<p>Briefly this code says, &#8220;if $CDFX_SHELL isn&#8217;t empty and the tty program says we&#8217;re connected to a terminal (on STDIN), then replace this shell by running the command in $CDFX_SHELL without creating a new process.&#8221;</p>
<p>Readers familiar with shell initialization may recognize potentially unnecessary checks in this example but this avoids having to delve into the differences between shell sessions which are <em>interactive</em>, <em>login</em>, both, or neither, as well as how this relates to scp and rsync. Also noteworthy are the checks which should be in the code before it&#8217;s used on a production server, such as verifying that $CDFX_SHELL specifies a valid shell. This isn&#8217;t intended to be cut-n-paste code.</p>
<p>Two steps are necessary for this to work: obviously $CDFX_SHELL must be set in the local environment for SSH to have anything to pass to the server, but less obviously the server must be configured to allow this variable to be set. This can be configured in the sshd config file (e.g. /etc/ssh/sshd_config) by adding this line:</p>
<p><code>AcceptEnv CDFX_SHELL</code></p>
<p>I prefer this method over those which require enabling PermitUserEnvironment because it&#8217;s less prone to unintended side-effects, as noted in the man page. In addition to (or in lieu of) using exec to switch shells, this method could also be used to set custom environments in the same shell, for different users or the same user, anytime it&#8217;s useful to have login behavior change based upon variables set in the SSH client.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codefix.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codefix.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codefix.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codefix.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codefix.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codefix.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codefix.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codefix.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codefix.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codefix.wordpress.com/254/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=254&subd=codefix&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codefix.wordpress.com/2008/11/01/openssh-environmental-override/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/932fa462763c5b3be2e55e2bb2053999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codefix</media:title>
		</media:content>

		<media:content url="http://codefix.files.wordpress.com/2008/10/puffy-armed.png" medium="image">
			<media:title type="html">puffy-armed</media:title>
		</media:content>
	</item>
		<item>
		<title>I have seen the light.</title>
		<link>http://codefix.wordpress.com/2008/10/04/i-have-seen-the-light/</link>
		<comments>http://codefix.wordpress.com/2008/10/04/i-have-seen-the-light/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 20:29:10 +0000</pubDate>
		<dc:creator>Garrison</dc:creator>
				<category><![CDATA[Case Study]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Telephony]]></category>

		<guid isPermaLink="false">http://codefix.wordpress.com/?p=138</guid>
		<description><![CDATA[Having discovered the advantages of á la carte VoIP pricing, I pondered how to extrapolate my experience for general discussion while avoiding the pitfalls of interpolation and abridgement. The Reference Book of Rates, Price Indices, and Household Expenditures for Telephone Service published by the FCC&#8217;s Wireline Competition Bureau provides a rough estimate of wireline telephone [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=138&subd=codefix&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Having discovered the advantages of á la carte VoIP pricing, I pondered how to extrapolate my experience for general discussion while avoiding the pitfalls of interpolation and abridgement.<a href="http://codefix.files.wordpress.com/2008/10/voicemeup-invoice.png"><img class="alignright size-medium wp-image-147" title="voicemeup-invoice" src="http://codefix.files.wordpress.com/2008/10/voicemeup-invoice.png?w=210&#038;h=145" alt="" width="210" height="145" /></a> The <a href="http://hraunfoss.fcc.gov/edocs_public/attachmatch/DOC-284934A1.pdf">Reference Book of Rates, Price Indices, and Household Expenditures for Telephone Service</a> published by the FCC&#8217;s <a href="http://www.fcc.gov/wcb/">Wireline Competition Bureau</a> provides a rough estimate of wireline telephone expenses averaging $45 per month in 2007, based on market research by TNS Telecoms. This isn&#8217;t too far from my own experience with residential VoIP plans which have tended to average about $35 monthly, including additional fees and charges, which can be significant: on BroadVoice&#8217;s &#8220;Unlimited World&#8221; plan, for example,  &#8220;Taxes &amp; Surcharges&#8221; account for about 35% of the monthly total. Based on these data, I use an estimated $35-$45 for generic comparison of monthly residential phone bills, or an average average of $40. As I designed our current, á la carte plan, I surmised that after discounting <a href="http://codefix.net/">business use</a>, the residential remainder was unlikely to ever exceed $30 in a single month. As the plan took shape, however, I realized that intelligent planning could lower that even further; somewhere in the neighborhood of a $20 monthly average would certainly exemplify what custom VoIP plans can offer, and half the average isn&#8217;t a bad talking point. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> <span id="more-138"></span></p>
<p>Though less obvious, another great feature of á la carte or &#8220;on demand&#8221; plans is scalability, if I suddenly find myself needing to host frequent call-in conference calls between a customer, their overseas manufacturing division, regional sales reps, and myself, the only change I&#8217;ll see on my invoices will be in usage. I am not aware of any &#8220;unlimited&#8221; residential plans which offer unlimited channels (simultaneous callers). With currently just three phone numbers, my setup is small enough, and with just enough complexity to provide a good example.</p>
<p>I use one number for my consulting, which has separate extensions, voice mail, etc.; I have a fax number for the <a href="http://en.wikipedia.org/wiki/Luddite">luddite</a> crowd, and a home number associated with a family voice mail, options for the caller to forward the call to my wife&#8217;s or my mobile phone, and a ring group which includes a line in my office. I&#8217;ll use an even usage split for comparison; for although <a href="http://codefix.net/">Codefix Consulting</a> has its own phone number, those who know me well tend to call my home number rather than risk my having a life outside of work.</p>
<p>My primary VoIP provider is <a href="http://VoiceMeUp.com">VoiceMeUp.com</a> and I have two <a href="http://en.wikipedia.org/wiki/Direct_Inward_Dialing">DIDs</a> (phone numbers) ($4.95 ea) and a prepaid, on-demand plan which bills 30/6 at $0.0185/min. My backup provider is <a href="http://CallWithUs.org">CallWithUs.org</a> who bill $0.0125 in whole minutes; while I hadn&#8217;t originally intended to acquire a DID through CallWithUs.org, I found one for $6/mo which includes 3000 free inbound minutes and couldn&#8217;t pass it up. My base VoIP price is therefore 4.95 * 2 + 6 = $15.90 plus usage, or $7.95 on an even split. Theoretically this leaves me with just over 650 minutes before exceeding my $20 target, but this doesn&#8217;t account for incremental billing, free VoIP to VoIP calls, and other variables which impinge cost.</p>
<p>It&#8217;s now more than a month since I <a href="http://blog.penguins-on-hudson.com/2008/09/19/three-things-to-avoid-in-a-voip-provider/">dumped Broadvoice</a>, ergo September&#8217;s charges and complete usage data are available for a real world comparison against a $40 average, a $35 example, and a $20 target. As it turned out we made no outbound calls on the (secondary) CallWithUs.com trunk and didn&#8217;t exceed the 3000 inbound minutes, so all billable usage was on the VoiceMeUp.com trunk which makes accounting easier. September&#8217;s total was 9.95 + 6 + 23.38 = $39.28 or $19.64 per split which helps validate my &#8220;less than $20 phone bill&#8221; theory. Our total usage was 36h 7m 33s (2167.55 min) or nearly 1,100 &#8220;home&#8221; minutes and more than 2,000 unused inbound minutes&#8211; how much do you talk?</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codefix.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codefix.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codefix.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codefix.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codefix.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codefix.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codefix.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codefix.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codefix.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codefix.wordpress.com/138/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=138&subd=codefix&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codefix.wordpress.com/2008/10/04/i-have-seen-the-light/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/932fa462763c5b3be2e55e2bb2053999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codefix</media:title>
		</media:content>

		<media:content url="http://codefix.files.wordpress.com/2008/10/voicemeup-invoice.png?w=300" medium="image">
			<media:title type="html">voicemeup-invoice</media:title>
		</media:content>
	</item>
		<item>
		<title>Doctor, I&#8217;ve got audit complaints about my kernel log.</title>
		<link>http://codefix.wordpress.com/2008/09/24/doctor-ive-got-audit-complaints-about-my-kernel-log/</link>
		<comments>http://codefix.wordpress.com/2008/09/24/doctor-ive-got-audit-complaints-about-my-kernel-log/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 23:32:48 +0000</pubDate>
		<dc:creator>Garrison</dc:creator>
				<category><![CDATA[Case Study]]></category>
		<category><![CDATA[Command Line]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://codefix.wordpress.com/?p=60</guid>
		<description><![CDATA[AppArmor, introduced to Ubuntu with Gutsy, is yet another security tool unleashed upon the infosphere. In part, AppArmor is intended as an alternative to SELinux, which can easily be seen as daunting to configure; unfortunately, many such projects are daunting for those admins forced to walk the plank of unfamiliarity above a sea of expectations. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=60&subd=codefix&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://en.wikipedia.org/wiki/AppArmor">AppArmor</a>, introduced to Ubuntu with Gutsy, is yet another security tool unleashed upon the infosphere. In part, AppArmor is intended as an alternative to <a href="http://en.wikipedia.org/wiki/Security-Enhanced_Linux">SELinux</a>, which can easily be seen as <a href="http://www.linux.com/articles/58942">daunting to configure</a>; unfortunately, many such projects are daunting for those admins forced to walk the plank of unfamiliarity above a sea of expectations. Despite a <a href="http://news.cnet.com/8301-13580_3-9796140-39.html?part=rss&amp;subj=news&amp;tag=2547-1_3-0-5">troubled history</a>, the project seems to be here to stay so it is likely only a matter of time before audit messages crop up in one&#8217;s kernel log. For those who find AppArmor unnecessary, unpalatable, or just untimely, herein lies a quick-and-dirty guide for telling AppArmor where to stick its audit complaints.<span id="more-60"></span></p>
<p>Ubuntu&#8217;s <a href="https://help.ubuntu.com/community/AppArmor">community documentation</a> has some basic commands for starting, stopping, disabling, and enabling AppArmor, but if we want to know as little as possible about AppArmor then it&#8217;s not unlikely that we&#8217;re just trying to dispense with a plethora of audit complaints in our kernel log. The first time this happened to me, it was on a box which had some MySQL data in a nonstandard location, resulting in a flood of log entries similar to:</p>
<p><code>Sep 23 11:22:17 bluebeard kernel: [4960023.353512]<br />
audit(1222183337.704:68500): type=1502<br />
operation="inode_permission" requested_mask="r::"<br />
denied_mask="r::" name="/u1/mysql/"<br />
pid=1573 profile="/usr/sbin/mysqld"<br />
namespace="default"</code></p>
<p>To allow mysqld to do its thing in <em>/u1/mysql</em> without sending AppArmor into a conniption fit, just add permissions to its profile, located  by default at <em>/etc/apparmor.d/usr.sbin.mysqld</em> on Ubuntu Hardy systems.</p>
<p><code><span class="comment"># custom permissions</span><br />
/u1/mysql/ r,<br />
/u1/mysql/** rwk,</code></p>
<p>The first line is a comment which makes clear that the lines which follow are not default permissions. The second line grants read access to <em>/u1/mysql/</em>, which AppArmor expects to be a directory due to the trailing slash. The final line uses the <em>/**</em> syntax to specify a group of files and subdirectories, to which are granted access to read, write, and perform locking operations. Note that these rules were simply adapted from the default rules for <em>/var/lib/mysql</em>; such “cut-and-paste” adaptation helps avoid typos and lessens the need for a detailed understanding of the configuration syntax. Note further that <span style="color:#800000;">this is an observation rather than a recommendation</span>.</p>
<p>Once all profiles have been edited to perfection, reload AppArmor and we&#8217;re off to the races.</p>
<p><code>sudo /etc/init.d/apparmor reload</code></p>
<p>When this information proves inadequate, complete documentation and additional resources can be found at  <a href="http://en.opensuse.org/AppArmor">OpenSuse</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codefix.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codefix.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codefix.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codefix.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codefix.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codefix.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codefix.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codefix.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codefix.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codefix.wordpress.com/60/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=60&subd=codefix&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codefix.wordpress.com/2008/09/24/doctor-ive-got-audit-complaints-about-my-kernel-log/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/932fa462763c5b3be2e55e2bb2053999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codefix</media:title>
		</media:content>
	</item>
		<item>
		<title>Three Things to Avoid in a VoIP Provider</title>
		<link>http://codefix.wordpress.com/2008/09/19/three-things-to-avoid-in-a-voip-provider/</link>
		<comments>http://codefix.wordpress.com/2008/09/19/three-things-to-avoid-in-a-voip-provider/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 06:29:44 +0000</pubDate>
		<dc:creator>Garrison</dc:creator>
				<category><![CDATA[Case Study]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Telephony]]></category>

		<guid isPermaLink="false">http://codefix.wordpress.com/?p=52</guid>
		<description><![CDATA[Like many others, when I set up my first Linux PBX I knew little about VoIP providers and with few sources of reliable, current information, I made a decision based on name recognition, perceived value, and minimal research. Like many others, I looked for companies who advertised a BYOD plan under the false assumption that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=52&subd=codefix&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Like many others, when I set up my first <a href="http://blog.penguins-on-hudson.com/2007/10/06/red-box/">Linux PBX</a> I knew little about VoIP providers and with few sources of reliable, current information, I made a decision based on name recognition, perceived value, and minimal research. Like many others, I looked for companies who advertised a <a href="http://www.voip-info.org/wiki/view/BYOD">BYOD</a> plan under the false assumption that said companies would have a clue regarding said devices, despite the cautionary warnings which politely explained that BYO, as used here, means “unsupported”. Like many others, I signed up with BroadVoice believing I had a pretty good deal; in fact, among similar plans offered by cable companies and Vonage, BroadVoice compares rather well.</p>
<p>By the time I started to suspect BroadVoice of stockpiling <a href="http://en.wikipedia.org/wiki/White_elephant">probiscus laden mammals and bleach</a>, I had already paid setup fees and number transfer fees, and chagrined the thought of early termination fees, more number transfer fees, and a potential three to seven week transfer period. Rather than add to the <a href="http://www.google.com/search?q=broadvoice+complaints">copious corpus of BroadVoice complaints</a>, I thought I&#8217;d focus on what to avoid when choosing a VoIP provider.<span id="more-52"></span></p>
<p><strong>Customer (Dis)service</strong><br />
In a word, BroadVoice&#8217;s customer service is atrocious. If I want to feel marginalized and ignored I can go to the Dept. of Motor&#8211; no, on second thought, the DMV has really become much better in this area. BroadVoice&#8217;s operating principle seem to be protecting it&#8217;s own interests, even at the expense the customer&#8217;s. Read the terms and conditions carefully.</p>
<p>One of my more dissatisfying experiences with BroadVoice wasn&#8217;t actually covered in the terms and conditions I read: to order a second trunk their system required me to create a second account which I found bizarre but acceptable. The trouble I had was when they informed me that in addition to the credit card information I had already submitted on their encrypted website, I was now required (i.e. only for the secand account) to submit copies of my credit card and driver&#8217;s license via unencrypted e-mail or fax&#8211; in other words, a ready made identity theft kit. When I admonished them to provide some means of secure transfer, I received a response which inexplicably stated:</p>
<blockquote><p>Please rest assure your information is protected, and locked away. You are in no way at risk of idenity theft as you may think.</p></blockquote>
<p>Right. Naturally. Sure. (Does your multivitamin include enough irony?)</p>
<p><strong>Number (De)porting</strong><br />
BroadVoice claims that as a service provider they are not governed by FCC local number portability (LNP) rules, which is why their terms &amp; conditions state:</p>
<blockquote><p>1.10 Number Transfer on Service Termination<br />
BroadVoice may, solely at the Company&#8217;s discretion, release any telephone number that was ported in to BroadVoice by you and used in connection with your Service to your new service provider, if such new service provider is able to accept such number, upon your termination of the Service, and provided (i) your account has been terminated; (ii) your BroadVoice account is completely current including payment for all charges and disconnect fees; and (iii) you request the transfer upon terminating your account. BroadVoice will not transfer or release telephone numbers that it has assigned for use in conjunction with your Service.</p></blockquote>
<p><strong>Lies, Damn Lies, and Statistics</strong><br />
The 800lb Guerilla at the VoIP party is the unlimited residential plan. To use a more topical phrase, advertising a VoIP plan as having unlimited minutes is a bit like putting lipstick on a pig; someone has clearly tried to make an attractive offer, but it isn&#8217;t what we are supposed to think it is. Somewhere in the terms &amp; conditions is a section which redefines “unlimited usage” as “normal usage” or some similar distinction, along with the actual number of included minutes as well as overage penalties. In the case of BroadVoice, the overage penalties on an unlimited plan can be quite steep.</p>
<p>In the end, I can give credit to BroadVoice on two significant points; they may be ill prepared, but their recognition of the tech-driven evolution of business models yields a significant advantage over a company like Vonage. While putting on a friendly face with flashy ads, retail deals, and quality customer service, Vonage hamstrung itself with a business model that prohibits technical innovations such as Asterisk by depending on closed systems and customer lock-in. Even if Vonage weren&#8217;t at the wrong end of a double-barrelled patent infringement lawsuit, the mobile VoIP market would still be a likely refuge for the misfortunate company.</p>
<p>The other laurel is for BroadVoice&#8217;s cancellation procedure; not the termination fees or the porting issues, but the actual account closure was as simple as a written request via e-maill. Each account was closed within 24 hours of my request and final charges were applied not long after (2 or 3 days as I recall). I consider myself fortunate in not having to suffer through any more customer (dis)service simply to put BroadVoice behind me.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codefix.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codefix.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codefix.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codefix.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codefix.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codefix.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codefix.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codefix.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codefix.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codefix.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=52&subd=codefix&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codefix.wordpress.com/2008/09/19/three-things-to-avoid-in-a-voip-provider/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/932fa462763c5b3be2e55e2bb2053999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codefix</media:title>
		</media:content>
	</item>
		<item>
		<title>When in doubt, test.</title>
		<link>http://codefix.wordpress.com/2008/01/14/when-in-doubt-test/</link>
		<comments>http://codefix.wordpress.com/2008/01/14/when-in-doubt-test/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 05:30:39 +0000</pubDate>
		<dc:creator>Garrison</dc:creator>
				<category><![CDATA[Case Study]]></category>
		<category><![CDATA[Command Line]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.penguins-on-hudson.com/2008/01/14/when-in-doubt-test/</guid>
		<description><![CDATA[Shortly after I last upgraded my mail server, one user reported that his mail client was failing to connect with the message:
"Unable to connect to your IMAP server. You may have exceeded the maximum number of connections to this server..."
He was the only one known to be having this issue, so after a cursory check [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=33&subd=codefix&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Shortly after I last upgraded my mail server, one user reported that his mail client was failing to connect with the message:</p>
<p><code>"Unable to connect to your IMAP server. You may have exceeded the maximum number of connections to this server..."</code></p>
<p>He was the only one known to be having this issue, so after a cursory check of the server with no obvious problems, I suggested that this might be an error on his end, such as connecting to the secure <a href="http://en.wikipedia.org/wiki/Internet_Message_Access_Protocol">IMAP</a> port without using <a href="http://en.wikipedia.org/wiki/Transport_Layer_Security">SSL</a>/<a href="http://en.wikipedia.org/wiki/Transport_Layer_Security">TLS</a>. Occam’s Razor suggests that a server error is more likely than a client error which just happens to coincide with a server upgrade, so I eventually decided to dig up some infrequently used commands and perform a thorough analysis.<span id="more-33"></span></p>
<p>Testing proved that there was indeed a server problem with certain SSL connections, while others worked every time. Deft Googling revealed that the <i>imapd-ssl</i> config file shipping with <a href="https://wiki.ubuntu.com/GutsyGibbon">Gutsy Gibbon</a> had TLS_PROTOCOL=SSL3, whereas it should be <a href="https://bugs.launchpad.net/ubuntu/+source/courier/+bug/150067">TLS_PROTOCOL=SSL23</a>. The user who first reported the error is tech-savvy, so I sent him the commands I used to diagnose the problem and promised to eventually write this post. Below are the commands which are now my first step in diagnosing mail connection problems.</p>
<p><code># Test secure SMTP<br />
openssl s_client -connect example.com:25 -starttls smtp -showcerts<br />
#<br />
# Test secure IMAP<br />
openssl s_client -ssl2 -connect example.com:993 -showcerts<br />
openssl s_client -ssl3 -connect example.com:993 -showcerts<br />
openssl s_client -tls1 -connect example.com:993 -showcerts</code></p>
<p>To test secure POP, simply substitute 995 for 993 in the above commands, likewise if you run secure SMTP on a port other than 25, you will need to alter the first command.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codefix.wordpress.com/33/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codefix.wordpress.com/33/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codefix.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codefix.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codefix.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codefix.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codefix.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codefix.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codefix.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codefix.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codefix.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codefix.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=33&subd=codefix&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codefix.wordpress.com/2008/01/14/when-in-doubt-test/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/932fa462763c5b3be2e55e2bb2053999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codefix</media:title>
		</media:content>
	</item>
		<item>
		<title>Quick and Easy Caller ID on MythTV</title>
		<link>http://codefix.wordpress.com/2007/12/31/quick-and-easy-caller-id-on-mythtv/</link>
		<comments>http://codefix.wordpress.com/2007/12/31/quick-and-easy-caller-id-on-mythtv/#comments</comments>
		<pubDate>Mon, 31 Dec 2007 20:36:24 +0000</pubDate>
		<dc:creator>Garrison</dc:creator>
				<category><![CDATA[Case Study]]></category>
		<category><![CDATA[Command Line]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[MythTV]]></category>
		<category><![CDATA[Telephony]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.penguins-on-hudson.com/2007/12/31/quick-and-easy-caller-id-on-mythtv/</guid>
		<description><![CDATA[I have resisted the urge to display caller id on my MythTV  as somewhat obvious. I’m always looking for ways to demonstrate the freedom which comes from using open source software, but I prefer the zesty freshness of an original idea rather than anything that’s been done, redone, and done again. My wife, however, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=31&subd=codefix&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I have resisted the urge to display caller id on my MythTV <a href="http://codefix.files.wordpress.com/2007/12/mythcid.png" title="Caller ID on MythTV"><img src="http://codefix.files.wordpress.com/2007/12/mythcid.thumbnail.png" alt="Caller ID on MythTV" align="right" /></a> as somewhat obvious. I’m always looking for ways to demonstrate the freedom which comes from using open source software, but I prefer the zesty freshness of an original idea rather than anything that’s been done, redone, and done again. My wife, however, thought that Myth caller id sounded like a great idea and asked me to set it up. What follows is how I did this with the least possible effort.<span id="more-31"></span></p>
<p>I already have a couple <i>Custom-Apps</i> which handle <a href="http://blog.penguins-on-hudson.com/2007/10/16/direct-inward-dialing-with-asterisk-and-broadvoice/">direct inward dialing on my inbound routes</a>, so sending caller id to my MythTV box was as simple as adding one line to each <i>Custom-App</i> in <i>extensions_custom.conf</i>:</p>
<p><code>exten =&gt; s,4,System(/bin/echo "Caller: ${CALLERID(name)} ${CALLERID(number)}" | /usr/bin/nc -w 3 myth.example.com 1234)</code></p>
<p>On the MythTV side I decided to use xosd rather than mythosd because the latter will only work when you are watching live TV or recordings. I created a simple wrapper script called osd.sh:</p>
<p><code>#!/bin/sh<br />
DISPLAY=:0.0<br />
FONT="-xos4-terminus-*-*-*-*-32-*-*-*-*-*-*-*"<br />
osd_cat --font=$FONT --align=centre --shadow=2 --color=SeaGreen –delay=15<br />
</code></p>
<p>At this point I have <a href="http://blog.penguins-on-hudson.com/2007/10/06/red-box/">the PBX</a> sending caller id to MythTV and osd_cat to display the data on screen, but I need a simple way to catch the data on port 1234 and feed it to my osd.sh script. I did this with one command:</p>
<p><code>micro_inetd 1234 ./osd.sh &amp;</code></p>
<p>Micro_inetd is a nice replacement for inetd, xinetd, etc. if, as here, only one service needs to be managed. I set this to always start with xfce4-autostart-editor which naturally only works with the Xfce 4 desktop environment. Gnome, KDE, and other desktops have their own session managers.</p>
<p>Of course, now that we have caller id on the TV, I&#8217;ll need to create a caller id lookup to compensate for the wretched state of telco support; fortunately I can put that off until next year <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><b>Update:</b> change osd.sh to format phone numbers</p>
<p><code>#!/bin/sh<br />
DISPLAY=:0.0<br />
FONT="-xos4-terminus-*-*-*-*-32-*-*-*-*-*-*-*"<br />
cid=`cat | perl -pe 's/(1?\d{3})(\d{3})(\d{4})/$1.$2.$3/'`<br />
echo "$cid" | osd_cat --font=$FONT --align=centre --shadow=2 \<br />
--color=SeaGreen --delay=15<br />
</code></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codefix.wordpress.com/31/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codefix.wordpress.com/31/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codefix.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codefix.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codefix.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codefix.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codefix.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codefix.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codefix.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codefix.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codefix.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codefix.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=31&subd=codefix&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codefix.wordpress.com/2007/12/31/quick-and-easy-caller-id-on-mythtv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/932fa462763c5b3be2e55e2bb2053999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codefix</media:title>
		</media:content>

		<media:content url="http://codefix.files.wordpress.com/2007/12/mythcid.thumbnail.png" medium="image">
			<media:title type="html">Caller ID on MythTV</media:title>
		</media:content>
	</item>
		<item>
		<title>Quick Fix for Asterisk/BroadVoice Number Conflict.</title>
		<link>http://codefix.wordpress.com/2007/10/15/quick-fix-for-asteriskbroadvoice-numbur-conflict/</link>
		<comments>http://codefix.wordpress.com/2007/10/15/quick-fix-for-asteriskbroadvoice-numbur-conflict/#comments</comments>
		<pubDate>Mon, 15 Oct 2007 19:39:43 +0000</pubDate>
		<dc:creator>Garrison</dc:creator>
				<category><![CDATA[Case Study]]></category>
		<category><![CDATA[Command Line]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Telephony]]></category>

		<guid isPermaLink="false">http://blog.penguins-on-hudson.com/2007/10/15/quick-fix-for-asteriskbroadvoice-numbur-conflict/</guid>
		<description><![CDATA[I have a strange issue on my Asterisk box. If I call BroadVoice tech support using one of their trunks, I connect normally and hear the initial IVR, I press &#8220;1&#8243; and hear &#8220;Your call is being transferred.&#8221; Then the weirdness starts: I remain connected, but I hear my own hold music. As near as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=28&subd=codefix&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I have a strange issue on <a href="http://blog.penguins-on-hudson.com/2007/10/06/red-box/">my Asterisk box</a>. If I call BroadVoice tech support using one of their trunks, I connect normally and hear the initial IVR, I press &#8220;1&#8243; and hear &#8220;Your call is being transferred.&#8221; Then the weirdness starts: I remain connected, but I hear my own hold music. As near as I can figure, while I&#8217;m on hold in their call queue, Asterisk has dumped me in to hold and I can&#8217;t get out. If I stay on long enough for a tech to pick up, they either hear nothing or my hold music and hang up. Free beer goes to anyone who can identify and solve this issue, meanwhile I have developed a workaround.<span id="more-28"></span></p>
<p>The above problem fails to occur if I use a non BV trunk or, even better, if instead of calling a ten digit support number I use 611. Unfortunately 611 is also the dial code for a weather-by-airport feature in trixbox, so when I first tried dialing I only heard a busy signal. Fixing this problem is really easy, I only needed to edit extensions_trixbox.conf and comment out the lines with &#8220;exten =&gt; 611&#8243;. Another way to resolve number conflicts is to use the Misc Destinations module to dial one number via another.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codefix.wordpress.com/28/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codefix.wordpress.com/28/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codefix.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codefix.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codefix.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codefix.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codefix.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codefix.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codefix.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codefix.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codefix.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codefix.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=28&subd=codefix&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codefix.wordpress.com/2007/10/15/quick-fix-for-asteriskbroadvoice-numbur-conflict/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/932fa462763c5b3be2e55e2bb2053999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codefix</media:title>
		</media:content>
	</item>
		<item>
		<title>Linux Bane</title>
		<link>http://codefix.wordpress.com/2007/10/15/linux-bane/</link>
		<comments>http://codefix.wordpress.com/2007/10/15/linux-bane/#comments</comments>
		<pubDate>Mon, 15 Oct 2007 15:43:55 +0000</pubDate>
		<dc:creator>Garrison</dc:creator>
				<category><![CDATA[Case Study]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.penguins-on-hudson.com/2007/10/15/linux-bane/</guid>
		<description><![CDATA[While I was cooking last night&#8217;s dinner, I made the mistake of leaving my laptop running, open, and unattended. Because ours is primarily a Linux household (my wife is a Mac user),  I normally don&#8217;t worry much about the computers. The servers, devices, and desktops tend to chug along without needing anything more than [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=27&subd=codefix&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>While I was cooking <a href="http://sheepcat.penguins-on-hudson.com/2007/10/14/turkey-bacon-cider-pie/" title="Turkey Bacon Cider Pie">last night&#8217;s dinner</a>, I made the mistake of leaving my laptop running, open, and unattended. Because ours is primarily a Linux household (my wife is a Mac user), <a href="http://codefix.files.wordpress.com/2007/10/crashcat.png" title="The Cat Who Walked Through Firewalls"><img src="http://codefix.files.wordpress.com/2007/10/crashcat.thumbnail.png" alt="The Cat Who Walked Through Firewalls" align="right" border="0" /></a> I normally don&#8217;t worry much about the computers. The servers, devices, and desktops tend to chug along without needing anything more than an occasional <em>`aptitude update &amp;&amp; aptitude upgrade`</em>. Laptops, however, are an entirely different story. As you can see in the photo, we live with a creature that is essentially a heat seeking missle bent on killing laptop computers. Sure it was funny the first couple times, but amusement quickly turned to horror when I saw that she can actually crash Linux. <a href="http://en.wikipedia.org/wiki/All_your_base_are_belong_to_us">All my base</a> are belong to her.<a href="http://codefix.files.wordpress.com/2007/10/crashcat.png" title="The Cat Who Walked Through Firewalls"><br />
</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codefix.wordpress.com/27/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codefix.wordpress.com/27/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codefix.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codefix.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codefix.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codefix.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codefix.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codefix.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codefix.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codefix.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codefix.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codefix.wordpress.com/27/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=27&subd=codefix&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codefix.wordpress.com/2007/10/15/linux-bane/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/932fa462763c5b3be2e55e2bb2053999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codefix</media:title>
		</media:content>

		<media:content url="http://codefix.files.wordpress.com/2007/10/crashcat.thumbnail.png" medium="image">
			<media:title type="html">The Cat Who Walked Through Firewalls</media:title>
		</media:content>
	</item>
		<item>
		<title>Red Box</title>
		<link>http://codefix.wordpress.com/2007/10/06/red-box/</link>
		<comments>http://codefix.wordpress.com/2007/10/06/red-box/#comments</comments>
		<pubDate>Sat, 06 Oct 2007 16:35:15 +0000</pubDate>
		<dc:creator>Garrison</dc:creator>
				<category><![CDATA[Case Study]]></category>
		<category><![CDATA[Essays]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Telephony]]></category>

		<guid isPermaLink="false">http://blog.penguins-on-hudson.com/2007/10/06/red-box/</guid>
		<description><![CDATA[ I finally built a red box, not the phone phreak device that generates coin tones for pay phones, but rather a Linux PBX which gives me the power and flexibility of a commercial grade phone system at a fraction of the cost. I call it a red box because the primary VoIP number I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=24&subd=codefix&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://codefix.files.wordpress.com/2007/10/copper-float.png" title="Red Box"><img src="http://codefix.files.wordpress.com/2007/10/copper-float.thumbnail.png" alt="Red Box" align="right" border="0" /></a> I finally built a red box, not the phone <a href="http://en.wikipedia.org/wiki/Red_box_%28phreaking%29">phreak device</a> that generates coin tones for pay phones, but rather a <a href="http://en.wikipedia.org/wiki/Asterisk_%28PBX%29">Linux PBX</a> which gives me the power and flexibility of a commercial grade phone system at a fraction of the cost. I call it a red box because the primary <a href="http://en.wikipedia.org/wiki/VoIP">VoIP</a> number I chose suggests <sup><a href="#ref1" name="refref1">[1]</a></sup>June 20, 1963&#8211; the day the “<a href="http://en.wikipedia.org/wiki/Red_telephone">red telephone</a>” went live between Washington and Moscow. Once I painted the side panels a nice, shiny red, I decided that in keeping with the metallic network naming I use (cobalt, tungsten, strontium, etc.) the best name for my new PBX would be &#8216;copper&#8217;.<span id="more-24"></span></p>
<p>After I explained what a PBX is, my neighbor asked me, “Why do you need a $50,000 phone system?” A big factor is that it doesn&#8217;t cost $50,000 with Open Source software: I purchased $200 in <a href="http://newegg.com">computer parts</a>, a $50 <a href="http://www.voipsupply.com/product_info.php?products_id=518&amp;searchid=406406">Grandstream GS-386</a> analog adapter, and a $275 <a href="http://www.voipsupply.com/product_info.php?products_id=1007&amp;searchid=406405">Aastra 480i CT</a>. My total hardware cost for a working PBX was about $525. Add in the cost of new VoIP accounts, transferring numbers, etc. and I spent about 10% of the cost of even a low end <a href="http://www.virtualpbx.com/support/tutorials/standard-pbx/standard-pbx-costs.asp">commercial PBX</a>.</p>
<p>Fortunately, low end features are not what the Linux PBX offers. The possibilities of Asterisk, perhaps the prime component of a Linux PBX, are limitless because the Open Source license allows any developer the freedom to modify the software as needed. Practically speaking, this means that mature Open Source projects tend to do all the things the users want.</p>
<p>For my PBX, I wanted all the features I grew accustomed to as a Vonage user&#8211; call waiting, forwarding, ring groups, voice mail via phone, web, &amp; e-mail, etc.&#8211; but I also wanted one high end feature not normally available without a costly PBX: Direct Inward Dialing.</p>
<p><a href="http://en.wikipedia.org/wiki/Direct_Inward_Dialing">Direct Inward Dialing</a> (DID) is a feature which allows virtual phone numbers to be routed directly to extensions while using shared trunks (phone lines). DID has clear advantages when one considers that VoIP lines usually cost $15-$30 per month while auxiliary numbers are only $2-$5 per month. Dedicated fax numbers, home/work numbers, listed/unlisted numbers, even toll free numbers all become reasonable options.</p>
<p>By far the best part of a Linux PBX is the ability to work around problems. I&#8217;m using <a href="http://broadvoice.com">Broadvoice</a> as a primary VoIP provider, in conjunction with <a href="http://callwithus.com">CallWithUs</a> for overflow, backup, and cheap rates. The inbound calls come through Broadvoice; unfortunately all calls are routed through  the same DID, which is to say that all inbound calls appear to be placed to the same phone number. With a bit of research and experimentation, I was able to use the distinctive ring feature to create my own DID and route the calls as I needed. Open Source to the rescue!</p>
<ol>
<li>I dumped the number when I <a href="http://blog.penguins-on-hudson.com/2008/09/19/three-things-to-avoid-in-a-voip-provider/">got smart</a>;<br />
it was 206-1963 (20.6.1963). <b><a href="#refref1" name="ref1">^</a></b></li>
</ol>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codefix.wordpress.com/24/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codefix.wordpress.com/24/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codefix.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codefix.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codefix.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codefix.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codefix.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codefix.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codefix.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codefix.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codefix.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codefix.wordpress.com/24/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=24&subd=codefix&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codefix.wordpress.com/2007/10/06/red-box/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/932fa462763c5b3be2e55e2bb2053999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codefix</media:title>
		</media:content>

		<media:content url="http://codefix.files.wordpress.com/2007/10/copper-float.thumbnail.png" medium="image">
			<media:title type="html">Red Box</media:title>
		</media:content>
	</item>
		<item>
		<title>Multiple Recipient Delimiters in Postfix</title>
		<link>http://codefix.wordpress.com/2007/08/29/multiple-recipient-delimiters-in-postfix/</link>
		<comments>http://codefix.wordpress.com/2007/08/29/multiple-recipient-delimiters-in-postfix/#comments</comments>
		<pubDate>Wed, 29 Aug 2007 23:45:16 +0000</pubDate>
		<dc:creator>Garrison</dc:creator>
				<category><![CDATA[Case Study]]></category>
		<category><![CDATA[Command Line]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.penguins-on-hudson.com/2007/08/29/multiple-recipient-delimiters-in-postfix/</guid>
		<description><![CDATA[Some time ago I enabled recipient delimiters (e.g. user+foo@host.tld) as a convenient way to know if shady web forms are  contributing to my spam folder. The idea is that when House Depot requires me to have an account before I can see if they have loose screws in stock locally, I can sign up [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=19&subd=codefix&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Some time ago I enabled recipient delimiters (e.g. <em>user+foo@host.tld</em>) as a convenient way to know if shady web forms are <img src="http://codefix.files.wordpress.com/2007/08/err.png" alt="err.png" align="right" /> contributing to my spam folder. The idea is that when House Depot requires me to have an account before I can see if they have loose screws in stock locally, I can sign up with <em>garrison+housedepot@codefix.net</em> instead of my usual e-mail. With recipient delimiters enabled, postfix will try to deliver any incoming mail to <em>garrison+housedepot</em> but when it finds no such user, it will try <em>garrison</em> and I get my mail. The problem arises when I discover that House Depot’s broken web form rejects any e-mail addresses with “+” in the user name as invalid. I’m already using <em>garrison+foo</em> style addresses elsewhere so I don’t want to change the recipient delimiter, but neither do I trust my real address to a company that can’t even create a proper web form.<span id="more-19"></span></p>
<p>Postfix allows only one recipient delimiter, but <a href="http://www.postfix.org/ADDRESS_REWRITING_README.html">address rewriting</a> can mimic multiple recipient delimiters; I chose to use regular expression tables in my aliases database. I’m most comfortable with Perl, so I chose to install the Perl compatible regular expression package, on Debian/Ubuntu this is done with:</p>
<p><code>sudo aptitude install postfix-pcre</code></p>
<p>Next I created a file named aliases-pcre with the following content:</p>
<p><code>/^garrison\./  garrison</code></p>
<p>Finally I updated main.conf with these lines:</p>
<p><code>alias_database = hash:/etc/postfix/aliases<br />
alias_maps = hash:/etc/postfix/aliases, pcre:/etc/postfix/aliases-pcre</code></p>
<p>Now I can enjoy e-mail addresses like <em>garrison+housedepot@codefix.net</em> or <em>garrison.housedepot@codefix.net</em> without needing to keep track of each alias. If I get spam addressed to that address, I can easily block it and complain loudly to House Depot’s customer service in India.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/codefix.wordpress.com/19/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/codefix.wordpress.com/19/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/codefix.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/codefix.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/codefix.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/codefix.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/codefix.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/codefix.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/codefix.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/codefix.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/codefix.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/codefix.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=codefix.wordpress.com&blog=1031461&post=19&subd=codefix&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://codefix.wordpress.com/2007/08/29/multiple-recipient-delimiters-in-postfix/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/932fa462763c5b3be2e55e2bb2053999?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">codefix</media:title>
		</media:content>

		<media:content url="http://codefix.files.wordpress.com/2007/08/err.png" medium="image">
			<media:title type="html">err.png</media:title>
		</media:content>
	</item>
	</channel>
</rss>