<?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>Triple-networks</title>
	<atom:link href="http://triple-networks.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://triple-networks.com</link>
	<description>Business 2 Business</description>
	<lastBuildDate>Thu, 03 May 2012 08:27:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Tooltip Background Color Zend Studio</title>
		<link>http://triple-networks.com/2012/05/03/tooltip-background-color-zend-studio/</link>
		<comments>http://triple-networks.com/2012/05/03/tooltip-background-color-zend-studio/#comments</comments>
		<pubDate>Thu, 03 May 2012 07:52:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[background]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gnome classic]]></category>
		<category><![CDATA[tooltip]]></category>
		<category><![CDATA[zend studio]]></category>

		<guid isPermaLink="false">http://triple-networks.com/?p=266</guid>
		<description><![CDATA[Edit for the theme Ambiance (for example): /usr/share/themes/Ambiance/gtk-3.0/settings.ini /usr/share/themes/Ambiance/gtk-3.0/gtk.css /usr/share/themes/Ambiance/gtk-2.0/gtkrc #000000 - tooltip_bg_color #f5f5b5 - tooltip_fg_color &#160; &#160;]]></description>
			<content:encoded><![CDATA[<p>Edit for the theme Ambiance (for example):</p>
<ul>
<li>/usr/share/themes/Ambiance/gtk-3.0/settings.ini</li>
<li>/usr/share/themes/Ambiance/gtk-3.0/gtk.css</li>
<li>/usr/share/themes/Ambiance/gtk-2.0/gtkrc</li>
</ul>
<ul>
<li>#000000 - tooltip_bg_color</li>
<li>#f5f5b5 - tooltip_fg_color</li>
</ul>
<p>&nbsp;<br />
&nbsp;</p>
<p><script src="https://gist.github.com/2584352.js"> </script></p>
]]></content:encoded>
			<wfw:commentRss>http://triple-networks.com/2012/05/03/tooltip-background-color-zend-studio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gerrit Batch Abandon</title>
		<link>http://triple-networks.com/2012/05/01/gerrit-batch-abondon/</link>
		<comments>http://triple-networks.com/2012/05/01/gerrit-batch-abondon/#comments</comments>
		<pubDate>Tue, 01 May 2012 10:40:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[batch]]></category>
		<category><![CDATA[gerrit]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://triple-networks.com/?p=256</guid>
		<description><![CDATA[Gerrit Batche Abandon $ alias gerrit='ssh -p 29418 source.drecomm.nl gerrit' $ gerrit query 'status:open project:ENTER_PROJECTNAME' &#124; egrep '^ number' &#124; cut -d\ -f4- > CHANGES_NUMBERS $ for i in `cat CHANGES_NUMBERS`; do gerrit review --abandon $i,1; done ; from: http://www.mediawiki.org/wiki/Gerrit/mass_approval &#8230; <a href="http://triple-networks.com/2012/05/01/gerrit-batch-abondon/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Gerrit Batche Abandon</p>
<p><code>$ alias gerrit='ssh -p 29418 source.drecomm.nl gerrit'</p>
<p>$ gerrit query 'status:open project:ENTER_PROJECTNAME' | egrep '^ number' | cut -d\ -f4- > CHANGES_NUMBERS</p>
<p>$ for i in `cat CHANGES_NUMBERS`; do gerrit review --abandon $i,1; done ;</code></p>
<p><span id="more-256"></span></p>
<p>from: http://www.mediawiki.org/wiki/Gerrit/mass_approval</p>
<p>We might sometime have to generates a ton of changes. For example when doing a similar change on all our repository.<br />
First, you can query gerrit for a list of change using the CLI! A useful alias:<br />
<code>alias gerrit='ssh -p 29418 gerrit.wikimedia.org gerrit'</code></p>
<p><code></code><br />
Then use that to execute a query such as all open changes on topic dotgitreview:<br />
<code>gerrit query 'status:open topic:dotgitreview'</code></p>
<p>With some shell magic, you can get a list of change number:<br />
<code>gerrit query 'status:open topic:dotgitreview' \<br />
| egrep '^ number' | cut -d\ -f4- &gt; CHANGES_NUMBERS</code></p>
<p>Then loop on them and remotely approve the changes!<br />
<code>for i in `cat CHANGES`; do gerrit approve --verified 1 --code-review 2 --submit $i; done ;</code></p>
<p>from: http://gerrit-documentation.googlecode.com/svn/Documentation/2.3/cmd-review.html</p>
<p>Approve the change with commit c0ff33 as &#8220;Verified +1&#8243;</p>
<p><code>$ ssh -p 29418 review.example.com gerrit review --verified +1 c0ff33</code><br />
Append the message &#8220;Build Successful&#8221;. Notice two levels of quoting is required, one for the local shell, and another for the argument parser inside the Gerrit server:</p>
<p><code>$ ssh -p 29418 review.example.com gerrit review -m '"Build Successful"' c0ff33</code><br />
Mark the unmerged commits both &#8220;Verified +1&#8243; and &#8220;Code Review +2&#8243; and submit them for merging:</p>
<p><code>$ ssh -p 29418 review.example.com gerrit review \<br />
  --verified +1 \<br />
  --code-review +2 \<br />
  --submit \<br />
  --project this/project \<br />
  $(git rev-list origin/master..HEAD)</code></p>
<p>Abandon an active change:</p>
<p><code>$ ssh -p 29418 review.example.com gerrit review --abandon c0ff33</code></p>
]]></content:encoded>
			<wfw:commentRss>http://triple-networks.com/2012/05/01/gerrit-batch-abondon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recommendations on Revision Control</title>
		<link>http://triple-networks.com/2012/03/10/recommendations-on-revision-control/</link>
		<comments>http://triple-networks.com/2012/03/10/recommendations-on-revision-control/#comments</comments>
		<pubDate>Sat, 10 Mar 2012 16:39:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[commit]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://triple-networks.com/?p=249</guid>
		<description><![CDATA[http://phabricator.com/docs/phabricator/article/Recommendations_on_Revision_Control.html &#160; Recommendations on Revision Control Defined src/docs/flavortext/recommendations_on_revision_control.diviner:1 Group Flavor Text Table of Contents Overview One Idea is One Commit Why This Matters Project recommendations on how to organize revision control. This document is purely advisory. Phabricator works with a &#8230; <a href="http://triple-networks.com/2012/03/10/recommendations-on-revision-control/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://phabricator.com/docs/phabricator/article/Recommendations_on_Revision_Control.html">http://phabricator.com/docs/phabricator/article/Recommendations_on_Revision_Control.html</a></p>
<p>&nbsp;</p>
<h1>Recommendations on Revision Control</h1>
<table>
<tbody>
<tr>
<th>Defined</th>
<td><a href="https://secure.phabricator.com/diffusion/P/browse/origin:master/src/docs/flavortext/recommendations_on_revision_control.diviner#L1" target="blank">src/docs/flavortext/recommendations_on_revision_control.diviner:1</a></td>
</tr>
<tr>
<th>Group</th>
<td>Flavor Text</td>
</tr>
</tbody>
</table>
<div>
<div>
<div>Table of Contents</div>
<ul>
<li><a href="http://phabricator.com/docs/phabricator/article/Recommendations_on_Revision_Control.html#overview">Overview</a></li>
<li><a href="http://phabricator.com/docs/phabricator/article/Recommendations_on_Revision_Control.html#one-idea-is-one-commit">One Idea is One Commit</a></li>
<li><a href="http://phabricator.com/docs/phabricator/article/Recommendations_on_Revision_Control.html#why-this-matters">Why This Matters</a></li>
</ul>
</div>
<p>Project recommendations on how to organize revision control.</p>
<p>This document is purely advisory. Phabricator works with a variety of revision control strategies, and diverging from the recommendations in this document will not impact your ability to use it for code review and management.</p>
<p>This is my (epriestley&#8217;s) personal take on the issue and not necessarily representative of the views of the Phabricator team as a whole.</p>
<h2><a name="overview"></a>Overview</h2>
<p>There are a few ways to use SVN, a few ways to use Mercurial, and many many many ways to use Git. Particularly with Git, every project does things differently, and all these approaches are valid for small projects. When projects scale, strategies which enforce <strong>one idea is one commit</strong> are better.</p>
<h2><a name="one-idea-is-one-commit"></a>One Idea is One Commit</h2>
<p>Choose a strategy where <strong>one idea is one commit</strong> in the authoritative master/remote version of the repository. Specifically, this means that an entire conceptual changeset (&#8220;add a foo widget&#8221;) is represented in the remote as exactly one commit (in some form), not a sequence of checkpoint commits.</p>
<ul>
<li>In SVN, this means don&#8217;t <tt>commit</tt> until after an idea has been completely written. All reasonable SVN workflows naturally enforce this.</li>
<li>In Git, this means squashing checkpoint commits as you go (with <tt>git commit --amend</tt>) or before pushing (with <tt>git rebase -i</tt>), or having a strict policy where your master/trunk contains only merge commits and each is a merge between the old master and a branch which represents a single idea. Although this preserves the checkpoint commits along the branches, you can view master alone as a series of single-idea commits.</li>
<li>In Mercurial, it is not generally possible to avoid having ideas spread across multiple commits. Mercurial does not support liberal mutability doctrines (so you can&#8217;t squash commits) and does not let you build a default out of only merge commits, so it is not possible to have an authoritative repository where one commit represents one idea in any real sense. Thus, Mercurial is not recommended for projects which may ever need to scale.</li>
</ul>
<h2><a name="why-this-matters"></a>Why This Matters</h2>
<p>A strategy where <strong>one idea is one commit</strong> has no real advantage over any other strategy until your repository hits a velocity where it becomes critical. In particular:<br />
<span id="more-249"></span></p>
<ul>
<li>Essentially all operations against the master/remote repository are about ideas, not commits. When one idea is many commits, everything you do is more complicated because you need to figure out which commits represent an idea (&#8220;the foo widget is broken, what do I need to revert?&#8221;) or what idea is ultimately represented by a commit (&#8220;commit af3291029 makes no sense, what goal is this change trying to accomplish?&#8221;).</li>
<li>Release engineering is greatly simplified. Release engineers can pick or drop ideas easily when each idea corresponds to one commit. When an idea is several commits, it becomes easier to accidentally pick or drop half of an idea and end up in a state which is virtually guaranteed to be wrong.</li>
<li>Automated testing is greatly simplified. If each idea is one commit, you can run automated tests against every commit and test failures indicate a serious problem. If each idea is many commits, most of those commits represent a known broken state of the codebase (e.g., a checkpoint with a syntax error which was fixed in the next checkpoint, or with a half-implemented idea).</li>
<li>Understanding changes is greatly simplified. You can bisect to a break and identify the entire idea trivially, without fishing forward and backward in the log to identify the extents of the idea. And you can be confident in what you need to revert to remove the entire idea.</li>
<li>There is no clear value in having checkpoint commits (some of which are guaranteed to be known broken versions of the repository) persist into the remote. Consider a theoretical VCS which automatically creates a checkpoint commit for every keystroke. This VCS would obviously be unusable. But many checkpoint commits aren&#8217;t much different, and conceptually represent some relatively arbitrary point in the sequence of keystrokes that went into writing a larger idea. Get rid of them or create an abstraction layer (merge commits) which allows you to ignore them when you are trying to understand the repository in terms of ideas (which is almost always).</li>
</ul>
<p>All of these become problems only at scale. Facebook pushes dozens of ideas every day and thousands on a weekly basis, and could not do this (at least, not without more people or more errors) without choosing a repository strategy where <strong>one idea is one commit</strong>.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://triple-networks.com/2012/03/10/recommendations-on-revision-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working Gmail as relayhost</title>
		<link>http://triple-networks.com/2012/03/02/working-gmail-as-relayhost/</link>
		<comments>http://triple-networks.com/2012/03/02/working-gmail-as-relayhost/#comments</comments>
		<pubDate>Fri, 02 Mar 2012 05:59:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[fetchmail]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[relayhost]]></category>
		<category><![CDATA[working]]></category>

		<guid isPermaLink="false">http://triple-networks.com/?p=242</guid>
		<description><![CDATA[https://help.ubuntu.com/community/GmailPostfixFetchmail Original post as printable pdf: GmailPostfixFetchmail.pdf Contents Introduction Not For Beginners References Packages needed Setting up your Gmail account Example username Configuring Postfix Stop Postfix /etc/postfix/main.cf /etc/postfix/generic and /etc/postfix/generic.db /etc/postfix/sasl/passwd and /etc/postfix/sasl/passwd.db Start or reload Postfix Testing Potential Postfix &#8230; <a href="http://triple-networks.com/2012/03/02/working-gmail-as-relayhost/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="https://help.ubuntu.com/community/GmailPostfixFetchmail">https://help.ubuntu.com/community/GmailPostfixFetchmail</a></p>
<ul id="pagelocation">
<li>Original post as printable pdf: <a href="http://uscdn.triple-networks.com/wp-contents/uploads/2012/03/GmailPostfixFetchmail.pdf">GmailPostfixFetchmail.pdf</a></li>
</ul>
<div id="content" lang="en" dir="ltr">
<div>
<table>
<tbody>
<tr>
<td>
<div>
<p>Contents</p>
<ol>
<li><a href="#Introduction">Introduction</a>
<ol>
<li><a href="#Not_For_Beginners">Not For Beginners</a></li>
<li><a href="#References">References</a></li>
</ol>
</li>
<li><a href="#Packages_needed">Packages needed</a></li>
<li><a href="#Setting_up_your_Gmail_account">Setting up your Gmail account</a></li>
<li><a href="#Example_username">Example username</a></li>
<li><a href="#Configuring_Postfix">Configuring Postfix</a>
<ol>
<li><a href="#Stop_Postfix">Stop Postfix</a></li>
<li><a href="#A.2BAC8-etc.2BAC8-postfix.2BAC8-main.cf">/etc/postfix/main.cf</a></li>
<li><a href="#A.2BAC8-etc.2BAC8-postfix.2BAC8-generic_and_.2BAC8-etc.2BAC8-postfix.2BAC8-generic.db">/etc/postfix/generic and /etc/postfix/generic.db</a></li>
<li><a href="#A.2BAC8-etc.2BAC8-postfix.2BAC8-sasl.2BAC8-passwd_and_.2BAC8-etc.2BAC8-postfix.2BAC8-sasl.2BAC8-passwd.db">/etc/postfix/sasl/passwd and /etc/postfix/sasl/passwd.db</a></li>
<li><a href="#Start_or_reload_Postfix">Start or reload Postfix</a></li>
<li><a href="#Testing">Testing</a></li>
<li><a href="#Potential_Postfix_problems">Potential Postfix problems</a>
<ol>
<li><a href="#Cannot_find_password">Cannot find password</a></li>
<li><a href="#No_mechanism_available">No mechanism available</a></li>
</ol>
</li>
</ol>
</li>
<li><a href="#Configuring_Fetchmail">Configuring Fetchmail</a>
<ol>
<li><a href="#Stop_the_fetchmail_service">Stop the fetchmail service</a></li>
<li><a href="#A.2BAC8-etc.2BAC8-fetchmail.rc">/etc/fetchmail.rc</a></li>
<li><a href="#Testing-1">Testing</a></li>
<li><a href="#Restart_fetchmail">Restart fetchmail</a></li>
</ol>
</li>
<li><a href="#Appendix">Appendix</a>
<ol>
<li><a href="#Debconf_choices_for_main.cf_above">Debconf choices for main.cf above</a></li>
<li><a href="#Explanation_of_.2BAC8-etc.2BAC8-postfix.2BAC8-main.cf">Explanation of /etc/postfix/main.cf</a></li>
<li><a href="#Explanation_of_.2BAC8-etc.2BAC8-fetchmailrc">Explanation of /etc/fetchmailrc</a></li>
<li><a href="#Verifying_the_Gmail_SMTP_server_certificate">Verifying the Gmail SMTP server certificate</a></li>
<li><a href="#If_Nothing_Is_Working">If Nothing Is Working</a></li>
</ol>
</li>
<li><a href="#Why_is_everything_still_broken.3F">Why is everything still broken?</a></li>
</ol>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<h1 id="Introduction">Introduction</h1>
<p>How to use Postfix and Fetchmail to access a single Gmail account using an old-fashioned client such as mutt or Emacs GNUS.</p>
<p><em>If you use Evolution or a similar modern e-mail client, you do not need to use this</em>. Your client has the ability to connect directly to the Gmail POP3 and SMTP services.</p>
<ul>
<li>Help with Evolution: <a href="https://help.ubuntu.com/community/UsingGmailWithEvolution">UsingGmailWithEvolution</a>.</li>
<li>Help with Thunderbird: <a href="http://mail.google.com/support/bin/answer.py?answer=38343">http://mail.google.com/support/bin/answer.py?answer=38343</a></li>
</ul>
<p>This setup is intended to be as simple and as close to a standard Ubuntu configuration as possible. This setup does <em>not</em> verify the Gmail SMTP server certificate.<br />
<span id="more-242"></span></p>
<h2 id="Not_For_Beginners">Not For Beginners</h2>
<p>You should be familiar with:</p>
<ul>
<li>How to install packages</li>
<li>How to edit text configuration files.</li>
<li>Terms like POP3, SMTP and SSL.</li>
</ul>
<p>&nbsp;</p>
<h2 id="References">References</h2>
<ul>
<li><a href="http://prantran.blogspot.com/2007/01/getting-postfix-to-work-on-ubuntu-with.html">http://prantran.blogspot.com/2007/01/getting-postfix-to-work-on-ubuntu-with.html</a></li>
<li><a href="http://souptonuts.sourceforge.net/postfix_tutorial.html">http://souptonuts.sourceforge.net/postfix_tutorial.html</a></li>
<li><a href="http://www.postfix.com/TLS_README.html">http://www.postfix.com/TLS_README.html</a></li>
<li><a href="http://www.postfix.com/SASL_README.html">http://www.postfix.com/SASL_README.html</a></li>
<li><a href="http://www.postfix.com/ADDRESS_REWRITING_README.html">http://www.postfix.com/ADDRESS_REWRITING_README.html</a></li>
<li><a href="http://postfix.state-of-mind.de/patrick.koetter/smtpauth/smtp_auth_mailservers.html">http://postfix.state-of-mind.de/patrick.koetter/smtpauth/smtp_auth_mailservers.html</a></li>
<li><a href="http://postfix.state-of-mind.de/patrick.koetter/smtpauth/postfix_tls_support.html">http://postfix.state-of-mind.de/patrick.koetter/smtpauth/postfix_tls_support.html</a></li>
</ul>
<p>&nbsp;</p>
<h1 id="Packages_needed">Packages needed</h1>
<p>You will need the postfix and fetchmail packages. See <a href="https://help.ubuntu.com/community/InstallingSoftware">InstallingSoftware</a> for more on installing packages. Postfix will work on Ubuntu as is from apt-get without any compilation necessary</p>
<p>&nbsp;</p>
<h1 id="Setting_up_your_Gmail_account">Setting up your Gmail account</h1>
<p>You will need to enable POP access for your Gmail account. This is done through the google website. See<a href="https://help.ubuntu.com/community/UsingGmailWithEvolution">UsingGmailWithEvolution</a> for more. Gnus queues mail to postfix, postfix forwards to Google. An openssl certificate is made by a CA signing authority signing a request to generate a server-side certificate. Although to encrypt the connection between Gnus and postfix is possible, this is not necessary if mail is being sent from gnus to postix at the local machine. The connection between postfix and google will be encrypted. This is like https but by the smtp protocol which is by emails. So it is not always necessary to use postfix to do this because some A Mail User Agents can do this itselves : a MUA is a client like gnus or evolution. Postfix will be a client when is connects to google, and the variables pertaining by this are beginning as smtp-the-something. Where postfix is the daemon it receives mails, into our case from the localhost, and the variables pertaining by this mode commence as smtpd-something. Don&#8217;t forget!</p>
<p>A &#8220;mail delivery agent&#8221; is the back end used to store mails, which can be postfix. A &#8220;mail transfer agent&#8221; is a server talking SMTP : it receives mail via SMTP, and it can pass it on via SMTP. Postfix is a combination of MTA and MDA.</p>
<p>to send every mail through Google you also need to set option as</p>
<p>relayhost[smtp.gmail.com]:587</p>
<p>Another option is to use a transport map.</p>
<p>transport_maps = hash:/etc/postfix/transport</p>
<p>The easiest is to just use a mail client, and nothing inter-locuting, but we are not doing this by using postfix at all. Postfix may and can be used as a storage mail retrieval of fetchmail exclusively, and let the mail client perform the smtp encryption to google directly. So this is available as an alternative plan, when this one does work. It is very time-consuming, awkward, frustrating, and annoying.</p>
<p>&nbsp;</p>
<h1 id="Example_username">Example username</h1>
<p>In all the examples below, I&#8217;ve assumed that the username on the Ubuntu system is <tt>jane</tt>, and that the Gmail username is<tt>jane.doe@gmail.com</tt>, with password <tt>doeadeer</tt>. You obviously need to replace these with your local username, your Gmail username and Gmail password as appropriate.</p>
<p>&nbsp;</p>
<h1 id="Configuring_Postfix">Configuring Postfix</h1>
<p>To setup Postfix, you will need to create 5 files:</p>
<ul>
<li>/etc/postfix/main.cf</li>
<li>/etc/postfix/generic</li>
<li>/etc/postfix/generic.db</li>
<li>/etc/postfix/passwd</li>
<li>/etc/postfix/passwd.db</li>
</ul>
<p>You will need root access to create and edit these files; see <a href="https://help.ubuntu.com/community/RootSudo">RootSudo</a> for more on gaining root access.</p>
<p>&nbsp;</p>
<h2 id="Stop_Postfix">Stop Postfix</h2>
<p>It&#8217;s not necessary to do so, but if you wish to stop Postfix while configuring, run (as root)</p>
<pre>  /etc/init.d/postfix stop</pre>
<p>&nbsp;</p>
<h2 id="A.2BAC8-etc.2BAC8-postfix.2BAC8-main.cf">/etc/postfix/main.cf</h2>
<p>When you install Postfix you will be prompted to make configurative choices. You can choose &#8220;No configuration&#8221;; in this case noconfiguration file will be created, and you can use the contents below. The configuration choices used to create it are listed in theAppendix.</p>
<p>This is the Postfix configuration file /etc/postfix/main.cf:</p>
<p>&nbsp;</p>
<pre># See /usr/share/postfix/main.cf.dist for a commented, more complete version

# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = localhost, localhost.localdomain
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
inet_protocols = all

##########################################
##### non debconf entries start here #####

##### client TLS parameters #####
smtp_tls_loglevel=1
smtp_tls_security_level=encrypt
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps=hash:/etc/postfix/sasl/passwd
smtp_sasl_security_options = noanonymous

##### map jane@localhost to jane.doe@gmail.com #####
smtp_generic_maps=hash:/etc/postfix/generic

relayhost=[smtp.gmail.com]:587</pre>
<p>An explanation of each non-standard line (following the comment &#8220;non debconf entries start here&#8221;) is given in the Appendix.</p>
<p>&nbsp;</p>
<h2 id="A.2BAC8-etc.2BAC8-postfix.2BAC8-generic_and_.2BAC8-etc.2BAC8-postfix.2BAC8-generic.db">/etc/postfix/generic and /etc/postfix/generic.db</h2>
<p>The generic file tells Postfix how to map local e-mail addresses to Internet addresses when mail is sent via SMTP. Postfix rewrites&#8221;From:&#8221; headers to make e-mail appear to come from <tt>jane.doe@gmail.com</tt> instead of <tt>jane@localhost</tt>.</p>
<p>The /etc/postfix/generic is a plain text file, and should look as follows:</p>
<pre>jane@localhost   jane.doe@gmail.com</pre>
<p>/etc/postfix/generic.db is generated from this using the postmap command:</p>
<pre>cd /etc/postfix
postmap generic</pre>
<p>&nbsp;</p>
<h2 id="A.2BAC8-etc.2BAC8-postfix.2BAC8-sasl.2BAC8-passwd_and_.2BAC8-etc.2BAC8-postfix.2BAC8-sasl.2BAC8-passwd.db">/etc/postfix/sasl/passwd and /etc/postfix/sasl/passwd.db</h2>
<p>The passwd file contains your Gmail password. Like /etc/postfix/generic file discussed above, it is a plain text file; it should look as follows:</p>
<pre>[smtp.gmail.com]:587    jane.doe@gmail.com:doeadeer</pre>
<p>To create passwd.db, and set ownership and permissions appropriately, run the following commands:</p>
<pre>cd /etc/postfix/sasl
postmap passwd
chown root.root passwd passwd.db
chmod 600 passwd passwd.db</pre>
<p>&nbsp;</p>
<h2 id="Start_or_reload_Postfix">Start or reload Postfix</h2>
<p>If you previously stopped Postfix, restart it with</p>
<pre>  /etc/init.d/postfix start</pre>
<p>If you didn&#8217;t stop Postfix, force it to reload its configuration with</p>
<pre>  postfix reload</pre>
<p>&nbsp;</p>
<h2 id="Testing">Testing</h2>
<p>Postfix provides a means of testing its address rewriting rules using the sendmail command with the &#8216;-bv&#8217; option. If the mail would be sent externally (i.e., via smtp.gmail.com), the command will cause sendmail to connect and authenticate to smtp.gmail.com, which makes it a convenient way to test the Postfix setup.</p>
<p>One possibly inconvenient feature of sendmail -bv is that the result is mailed to the user who ran the command; thus, if mail is utterly misconfigured, you will never receive the result. If you suspect this is the case, you can check /var/log/mail.log to see what went wrong, or you can type mail within the same account as the sender.</p>
<p>Alternatively do <tt>echo 'test mail' | mail -s 'testing this' foo@bar.com </tt></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://triple-networks.com/2012/03/02/working-gmail-as-relayhost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Phabricator &#8211; Write, manage and review sourcecode.</title>
		<link>http://triple-networks.com/2012/01/21/phabricator-write-manage-and-review-sourcecode/</link>
		<comments>http://triple-networks.com/2012/01/21/phabricator-write-manage-and-review-sourcecode/#comments</comments>
		<pubDate>Sat, 21 Jan 2012 07:54:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[revision control]]></category>
		<category><![CDATA[source code]]></category>
		<category><![CDATA[write]]></category>

		<guid isPermaLink="false">http://triple-networks.com/?p=233</guid>
		<description><![CDATA[Phabricator is a open source collection of web applications which make it easier to write, review, and share source code. It is currently available as an early release. Phabricator was developed at Facebook. Links Phabricator for Phabricator Phabricator on Quora &#8230; <a href="http://triple-networks.com/2012/01/21/phabricator-write-manage-and-review-sourcecode/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://phabricator.org/" target="_blank">Phabricator</a> is a open source collection of web applications which make it easier to write, review, and share source code.<br />
It is currently available as an early release. Phabricator was developed at Facebook.</p>
<h2>Links</h2>
<ul>
<li><a href="https://secure.phabricator.com/" target="_blank">Phabricator for Phabricator</a></li>
<li><a href="http://www.quora.com/Phabricator" target="_blank">Phabricator on Quora</a></li>
</ul>
<h2>Report Problems</h2>
<h2>Maniphest</h2>
<p><a href="http://uscdn.triple-networks.com/wp-contents/uploads/2012/01/ScreenShot392.png" rel="lightbox[233]"><img class="alignnone size-medium wp-image-237" title="phabricator.triple-networks.com" src="http://uscdn.triple-networks.com/wp-contents/uploads/2012/01/ScreenShot392-300x150.png" alt="" width="300" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://triple-networks.com/2012/01/21/phabricator-write-manage-and-review-sourcecode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using apc
Database Caching using disk: basic
Object Caching 436/535 objects using disk: basic

Served from: triple-networks.com @ 2012-05-20 06:45:08 -->
