<?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>Ray Acayan &#187; cloud</title>
	<atom:link href="http://www.RayAcayan.com/tag/cloud/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.RayAcayan.com</link>
	<description>A Geek of All Trades</description>
	<lastBuildDate>Wed, 18 Aug 2010 19:40:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>The Amazon EC2 Blog Migration Project</title>
		<link>http://www.RayAcayan.com/projects/the-amazon-ec2-blog-migration-project/</link>
		<comments>http://www.RayAcayan.com/projects/the-amazon-ec2-blog-migration-project/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 16:46:29 +0000</pubDate>
		<dc:creator>Ray Acayan</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Amazon EC2]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[cPanel]]></category>
		<category><![CDATA[FileZilla]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mod_security]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[OWASP]]></category>
		<category><![CDATA[PuTTY]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Webalizer]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://174.129.34.151/blog/?p=1080</guid>
		<description><![CDATA[I. Overview This side project presents my procedure for migrating my WordPress blog from a web hosting provider running cPanel to an Amazon EC2 instance. This project builds on the environment created in my previous blog post, &#34;The Mobile Cloud Project, Part 1.1: Basic AWS&#34;, where I presented an overview of Amazon Web Services and [...]]]></description>
			<content:encoded><![CDATA[<p></br></p>
<h2 style="color:darkblue">I. Overview</h2>
<p>This side project presents my procedure for migrating my WordPress blog from a web hosting provider running cPanel to an Amazon EC2 instance.</p>
<p>This project builds on the environment created in my previous blog post, <a href="http://www.rayacayan.com/projects/the-mobile-cloud-project-part-1-1-basic-aws/"><b>&quot;The Mobile Cloud Project, Part 1.1: Basic AWS&quot;</b></a>, where I presented an overview of Amazon Web Services and a procedure for creating virtual servers (Reserved and On-Demand instances) on Amazon EC2.<br />
<br /></br></p>
<h2 style="color:darkblue">II. Consulting</h2>
<p>I do my best to explain the concepts and techniques behind my projects.  If you like my work and can use my expertise in your projects, I am available for <span id="consulting_page" onmouseover="consulting_mouseOver()" onmousemove="consulting_mouseMove()" onmouseout="consulting_mouseOut()"><a href="http://www.RayAcayan.com/consulting/"><strong>consulting</strong></a></span> at a competitive rate.<br />
<br /></br></p>
<h2 style="color:darkblue">III. Procedure</h2>
<p>Once the Amazon EC2 instance was created and configured in my previous <a href="http://www.rayacayan.com/projects/the-mobile-cloud-project-part-1-1-basic-aws/"><b>blog post</b></a>, this migration procedure is actually fairly straightforward.  From the point of view of a terminal console, an Amazon EC2 instance running Ubuntu Linux is very similar to any other Ubuntu server.  The only difference is that certain tasks that were simplified behind a web hosting provider&#8217;s cPanel now need to be done explicitly on an EC2 instance.</p>
<p>This procedure assumes an existing WordPress blog at <a href="http://www.RayAcayan.com">http://www.RayAcayan.com</a> (i.e. this blog), an existing EC2 instance running Ubuntu 9.10 (Karmic), an Elastic IP address associated with that instance, and a local Windows client with Putty and FileZilla configured to connect to both the old blog&#8217;s web hosting provider and the new blog&#8217;s EC2 instance.  These were all configured in my previous blog post <a href="http://www.rayacayan.com/projects/the-mobile-cloud-project-part-1-1-basic-aws/"><b>&#8220;The Mobile Cloud Project, Part 1.1: Basic AWS&#8221;</b></a>. </p>
<h3 style="color:darkgreen">1.  Install packages on EC2 instance</h3>
<ol type="i">
<li>Connect to the EC2 instance using Putty.</li>
<li> Install Apache2, MySQL, PHP, Ruby on Rails, Python, and Django packages with the following commands.</li>
<div class="code">
$ sudo apt-get update<br />
$ sudo apt-get install apache2 mysql-server libapache2-mod-auth-mysql<br />
$ sudo apt-get install php5-mysql phpmyadmin<br />
$ sudo apt-get install build-essential libssl-dev libreadline5-dev zlib1g-dev<br />
$ sudo apt-get install libmysqlclient15-dev<br />
<br />
$ sudo apt-get install ruby-full rubygems1.9.1 rails libmysql-ruby<br />
<br />
$ sudo apt-get install python2.6 python3 python-django<br />
$ sudo apt-get install libapache2-mod-python python-mysqldb
</div>
</ol>
<h3 style="color:darkgreen">2.  Enable mod_rewrite on Apache</h3>
<ol type="i">
<li>The mod_rewrite module allows WordPress to use pretty permalinks on your blog, such as /category/postname/</li>
<div class="code">
$ sudo a2enmod rewrite<br />
$ sudo nano /etc/apache2/sites-enabled/000-default
</div>
<li>Modify this file to show the following changes (i.e. change &#8220;None&#8221; to &#8220;All&#8221; to allow pretty permalinks, and add # comments to disable directory listing) then save this file.</li>
<div class="code">
DocumentRoot /var/www/<br />
[...]<br />
Options FollowSymLinks<br />
AllowOverride <b>All</b><br />
[...]<br />
<b>#</b> Options Indexes FollowSymLinks MultiViews<br />
<b>#</b> AllowOverride None<br />
<b>#</b> Order allow,deny<br />
<b>#</b> allow from all
</div>
<li>Restart Apache:</li>
<div class="code">
$ sudo /etc/init.d/apache2 restart
</div>
</ol>
<h3 style="color:darkgreen">3.  Install WordPress on the EC2 instance</h3>
<ol type="i">
<li>Connect to the EC2 instance using Putty.</li>
<li>Create the WordPress username and database on MySQL by entering the following commands:</li>
<div class="code">
$ sudo mysql -u root -p &lt;password&gt;<br />
mysql> create database wordpress;<br />
mysql> create user &lt;wp_username&gt;;<br />
mysql> set password for &lt;wp_username&gt; = password(&#8220;&lt;password&gt;&#8221;);<br />
mysql> grant all on wordpress.* to &lt;wp_username&gt;@localhost identified by `&lt;password&gt;&#8217;;<br />
mysql> quit
</div>
<li>Enter the following commands at the Linux prompt to download and install WordPress:</li>
<div class="code">
$ cd /var/www<br />
$ sudo wget http://wordpress.org/latest.tar.gz<br />
$ sudo tar -xzvf latest.tar.gz<br />
$ sudo mv wordpress blog
</div>
<li>Go to http://&lt;elastic ip&gt;/blog/wp-admin/install.php to execute the WordPress install script.</li>
<li>Download and install the WordPress themes and plugins that were in the previous blog (cPanel).</li>
</ol>
<p></p>
<h3 style="color:darkgreen">4.  Copy WordPress files and database from the old blog to the new blog</h3>
<ol type="i">
<li>Open FileZilla client and connect to the web hosting provider&#8217;s server that is hosting the old blog.  (See the provider&#8217;s instructions on how to do this.)</li>
<li>Download all files in the old blog:  ~/public_html or /var/www</li>
<li>Open a second FileZilla client to connect to the new blog (EC2). </li>
<li>Upload your custom files and directories to the /var/www directory of the new blog.</li>
<li>Open the WordPress Dashboard on the old blog (cPanel), click &quot;Export&quot; in the &#8220;Tools&#8221; menu on the left, and save the .xml file.</li>
<li>Open the WordPress Dashboard on the new blog (EC2), click &quot;Import&quot; in the &#8220;Tools&#8221; menu on the left, and upload the .xml file from the previous step. </li>
<li>Install the &#8220;WP-DB-Backup&#8221; plugin on both the old and new blogs.</li>
<li>On the old blog&#8217;s WordPress admin, click &#8220;Backup&#8221; on the &#8220;Tools&#8221; menu on the left and save the file as &#8220;oldwordpress.sql&#8221;.</li>
<li>Connect to the EC2 instance via FileZilla and upload the &#8220;oldwordpress.sql&#8221; file.
<li>Connect to the EC2 instance via Putty.</li>
<li>At the Linux prompt, enter &#8220;mysql wordpress &lt; oldwordpress.sql â€“u root -p&#8221; to import the old WordPress database to the new one.</li>
<li>Verify that the new blog is working at http://&lt;elastic ip&gt;/blog including links and styles. </li>
</ol>
<p></p>
<h3 style="color:darkgreen">5. Remap DNS to the new blog IP address on EC2</h3>
<ul>
<li>DNS needs to be configured to remap the blog&#8217;s domain name to the Elastic IP address of the new blog on EC2.</li>
</ul>
<ol type="i">
<li>Before proceeding, add an entry &#8220;&lt;elastic ip&gt; www.RayAcayan.com&#8221; to the local hosts file at C:\windows\system32\drivers\etc</li>
<li>Verify that the blog is working properly using the normal URL <a href="http://www.RayAcayan.com">http://www.RayAcayan.com</a></li>
<p>  At this point, only the local computer can access the new blog via URL because of the hosts file entry.  The new IP address will need to be propagated to the rest of the Internet via an external DNS provider so that everyone else can access it.</a></li>
<li>Select an external DNS provider such as <a href="http://www.easyDNS.com">http://www.easyDNS.com</a> and purchase a DNS-only service for about $20/year.</li>
<li>Add a DNS entry to map the hostname to the Elastic IP address of the new blog.</li>
<li>Go to the domain registrar&#8217;s website where the old blog domain is currently registered.</li>
<li>Change the name servers of the domain to point to the name servers of the  external DNS provider.</li>
<li>Wait several hours for the new DNS settings to propagate on the Internet.  Enter &#8220;nslookup&#8221; at the command prompt. If the response is the elastic IP address of the EC2 instance, then the DNS propagation has completed.</li>
<li>Remove the hosts file entry created in step 5.i. and run &#8220;ipconfig /dnsflush&#8221; at the command prompt. Verify that the blog is still reachable via the normal URL: <a href="http://www.RayAcayan.com">http://www.RayAcayan.com</a></li>
</ol>
<h3 style="color:darkgreen">6.  Install Additional Applications</h3>
<ol type="A">
<strong>
<li>Install Webalizer</li>
<p></strong><br />
Webalizer is a web stats application offered by your web hosting provider&#8217;s cPanel.  You will need to install it manually on your EC2 instance if you want to continue using it.</p>
<ol type="i">
<li>Connect to the EC2 instance using Putty.</li>
<li>Enter the following command to install Webalizer on the EC2 instance:</li>
<div class="code">
# apt-get install webalizer
</div>
</ol>
</ol>
<h3 style="color:darkgreen">7.  Configure Security</h3>
<ol type="A">
<strong>
<li>Secure the Apache web server with mod_security and Core Rule Set</li>
<p></strong></p>
<p>The &#8220;mod_security&#8221; Apache module is an open source intrusion detection and prevention engine for web applications.  It protects the Apache web server from common attacks such as SQL injection, cross-site scripting, etc.</p>
<ol type="i">
<li>Connect to the EC2 instance using Putty.</li>
<li>Enter the following commands at the Linux prompt:</li>
<div class="code">
#mkdir ~/install<br />
#cd ~/install<br />
#wget http://www.modsecurity.org/download/modsecurity-apache_2.5.10.tar.gz<br />
# tar -xzvf modsecurity-apache_2.5.10.tar.gz<br />
# cd modsecurity-apache_2.5.10/rules<br />
# cp *.conf /etc/apache2/conf.d<br />
# cp base_rules /etc/apache2/conf.d/modsecurity<br />
# cp optional_rules /etc/apache2/conf.d<br />
# mkdir /etc/apache2/logs<br />
# apt-get install libapache-mod-security<br />
# a2enmod mod-security
</div>
<li>Restart Apache:</li>
<div class="code">
# /etc/init.d/apache2 restart
</div>
</ol>
<p><strong>
<li>Configure password-protection on the PHPMyAdmin directory</li>
<p></strong></p>
<ol type="i">
<li>Connect to the EC2 instance using Putty.</li>
<li>Enter the following commands at the Linux prompt:</li>
<div class="code">
# mkdir /usr/local/apache2<br />
# htdigest -c /usr/local/apache2/.htpasswd_phpmyadmin &#8220;PHPMyAdmin&#8221; phpmyadmin<br />
(Enter password)<br />
# cp /etc/apache2/mods-available/auth_digest.load /etc/apache2/mods-enabled<br />
# nano /etc/apache2/apache2.conf
</div>
</li>
<li>Add the following text to the end of the apache2.conf file:</li>
<div class="code">
&lt;Directory /usr/share/phpmyadmin/&gt;<br />
&nbsp;&nbsp;Authtype digest<br />
&nbsp;&nbsp;AuthName &#8220;PHPMyAdmin&#8221;<br />
&nbsp;&nbsp;AuthUserFile /usr/local/apache2/.htpasswd_phpmyadmin<br />
&nbsp;&nbsp;require user phpmyadmin<br />
&lt;/Directory&gt;
</div>
<li>For added security, insert the following lines inside the &lt;Directory&gt; tag above to only allow connections from certain IP addresses:</li>
<div class="code">
&nbsp;&nbsp;Order deny,allow<br />
&nbsp;&nbsp;Deny from all<br />
&nbsp;&nbsp;Allow from &lt;static IP address&gt;
</div>
<li>Restart Apache:</li>
<div class="code">
# /etc/init.d/apache2 restart
</div>
</ol>
<p><strong>
<li>Configure password-protection on the WordPress Admin directory</li>
<p></strong></p>
<ol type="i">
<li>Connect to the EC2 instance using Putty.</li>
<li>Enter the following commands at the Linux prompt:</li>
<div class="code">
# mkdir /usr/local/apache2<br />
# htdigest -c /usr/local/apache2/.htpasswd_wp-admin &#8220;WordPress Admin&#8221; wp-admin<br />
(Enter password)<br />
# cp /etc/apache2/mods-available/auth_digest.load /etc/apache2/mods-enabled<br />
# nano /etc/apache2/apache2.conf
</div>
</li>
<li>Add the following text to the end of the apache2.conf file:</li>
<div class="code">
&lt;Directory /var/www/blog/wp-admin/&gt;<br />
&nbsp;&nbsp;Authtype digest<br />
&nbsp;&nbsp;AuthName &#8220;WordPress Admin&#8221;<br />
&nbsp;&nbsp;AuthUserFile /usr/local/apache2/.htpasswd_wp-admin<br />
&nbsp;&nbsp;require user wp-admin<br />
&lt;/Directory&gt;
</div>
<li>For added security, insert the following lines inside the &lt;Directory&gt; tag above to only allow connections from certain IP addresses:</li>
<div class="code">
&nbsp;&nbsp;Order deny,allow<br />
&nbsp;&nbsp;Deny from all<br />
&nbsp;&nbsp;Allow from &lt;static IP address&gt;
</div>
<li>Restart Apache:</li>
<div class="code">
# /etc/init.d/apache2 restart
</div>
</ol>
<p><strong>
<li>Configure password-protection on the Webalizer directory</li>
<p></strong></p>
<ol type="i">
<li>Connect to the EC2 instance using Putty.</li>
<li>Enter the following commands at the Linux prompt:</li>
<div class="code">
# mkdir /usr/local/apache2<br />
# htdigest -c /usr/local/apache2/.htpasswd_webalizer &#8220;Webalizer Stats&#8221; webalizer<br />
(Enter password)<br />
# cp /etc/apache2/mods-available/auth_digest.load /etc/apache2/mods-enabled<br />
# nano /etc/apache2/apache2.conf
</div>
</li>
<li>Add the following text to the end of the apache2.conf file:</li>
<div class="code">
&lt;Directory /var/www/webalizer/&gt;<br />
&nbsp;&nbsp;Authtype digest<br />
&nbsp;&nbsp;AuthName &#8220;Webalizer Stats&#8221;<br />
&nbsp;&nbsp;AuthUserFile /usr/local/apache2/.htpasswd_webalizer<br />
&nbsp;&nbsp;require user webalizer<br />
&lt;/Directory&gt;
</div>
<li>For added security, insert the following lines inside the &lt;Directory&gt; tag above to only allow connections from certain IP addresses:</li>
<div class="code">
&nbsp;&nbsp;Order deny,allow<br />
&nbsp;&nbsp;Deny from all<br />
&nbsp;&nbsp;Allow from &lt;static IP address&gt;
</div>
<li>Restart Apache:</li>
<div class="code">
# /etc/init.d/apache2 restart
</div>
</ol>
</ol>
<p>&nbsp;</p>
<h2 style="color:darkblue">IV. References</h2>
<p><strong>1. Amazon Web Services Technical Documentation</strong><br />
<a href="http://aws.amazon.com/documentation">http://aws.amazon.com/documentation</a></p>
<p><strong>2. Official Ubuntu Documentation</strong><br />
<a href="https://help.ubuntu.com">https://help.ubuntu.com</a></p>
<p><strong>3. RubyOnRails.org</strong><br />
<a href="http://rubyonrails.org/download/">http://rubyonrails.org/download/</a></p>
<p><strong>4. Python Programming Language &#8212; Official Website</strong><br />
<a href="http://www.python.org">http://www.python.org</a></p>
<p><strong>5. The Django Project</strong><br />
<a href="http://www.djangoproject.com/">http://www.djangoproject.com/</a></p>
<p><strong>6. Moving WordPress</strong><br />
<a href="http://codex.wordpress.org/Moving_WordPress">http://codex.wordpress.org/Moving_WordPress</a></p>
<p><strong>7. easyDNS</strong><br />
<a href="http://www.easydns.com">http://www.easydns.com</a></p>
<p><strong>8. OWASP ModSecurity Core Rule Set Project</strong><br />
<a href="http://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project">http://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project</a></p>
<p></br><br /></br></p>
]]></content:encoded>
			<wfw:commentRss>http://www.RayAcayan.com/projects/the-amazon-ec2-blog-migration-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Mobile Cloud Project</title>
		<link>http://www.RayAcayan.com/projects/the-mobile-cloud-project/</link>
		<comments>http://www.RayAcayan.com/projects/the-mobile-cloud-project/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 19:23:58 +0000</pubDate>
		<dc:creator>Ray Acayan</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Amazon EC2]]></category>
		<category><![CDATA[Amazon S3]]></category>
		<category><![CDATA[Amazon SimpleDB]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[AutoScaling]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[BlackBerry]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Elastic Load Balancing]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Windows Mobile]]></category>

		<guid isPermaLink="false">http://www.rayacayan.com/blog/?p=898</guid>
		<description><![CDATA[The Mobile Cloud Project is my proof-of-concept for developing and hosting a scalable mobile application platform on the Amazon Web Services cloud. Part 1: Amazon Web Services Part 1.1: Basic AWS provides a basic overview of Amazon Web Services and describes my procedure for building Ubuntu Linux virtual servers (Reserved and On-Demand instances) on Amazon [...]]]></description>
			<content:encoded><![CDATA[<p></br></p>
<p>The Mobile Cloud Project is my proof-of-concept for developing and hosting a scalable mobile application platform on the Amazon Web Services cloud.</p>
<h2 style="color:darkblue">Part 1:  Amazon Web Services</h2>
<ul>
<li>
<a href="//projects/the-mobile-cloud-project-part-1-1-basic-aws"><b>Part 1.1: Basic AWS</b></a> provides a basic overview of Amazon Web Services and describes my procedure for building Ubuntu Linux virtual servers (Reserved and On-Demand instances) on Amazon EC2.
</li>
<li>
<a href="//projects/the-mobile-cloud-project-part-1-2-aws-data"><b>Part 1.2 AWS Data</b></a> explores the use of Amazon S3 and EBS for cloud-based storage and Amazon SimpleDB and RDS for database applications.
</li>
<li>
<a href="//the-mobile-cloud-project-part-1-3-aws-fault-tolerance"><b>Part 1.3: AWS Fault Tolerance</b></a> explores the AutoScaling and Elastic Load Balancing features of Amazon Web Services.
</li>
</ul>
<h2 style="color:darkblue">Part 2:  Back-End Platform</h2>
<ul>
<li>
<b>Part 2.1: Ruby on Rails Platform</b> describes my development of a simplified Ruby on Rails platform for processing a JSON or RSS/XML input data stream and storing the contents in Amazon SimpleDB.
</li>
<li>
<b>Part 2.2: Python-Django Platform</b> explores the development of the same simplified platform using Python and the Django web framework.
</li>
</ul>
<h2 style="color:darkblue">Part 3:  Mobile Apps</h2>
<ul>
<li>
<b>Part 3.1: iPhone Mobile App</b> describes my development of a simple iPhone 3.0 mobile app for retrieving and displaying the JSON or RSS/XML data stream using push notification.
</li>
<li>
<b>Part 3.2: Android Mobile App</b> explores the development of the same mobile app for the Android open source platform.
</li>
<li>
<b>Part 3.3: BlackBerry Mobile App</b> explores the development of the same mobile app for the BlackBerry platform.
</li>
<li>
<b>Part 3.4 Windows Mobile App</b> explores the development of the same mobile app for the Windows Mobile platform.
</li>
</ul>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.RayAcayan.com/projects/the-mobile-cloud-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Web Mail Migration Project</title>
		<link>http://www.RayAcayan.com/projects/the-web-mail-migration-project/</link>
		<comments>http://www.RayAcayan.com/projects/the-web-mail-migration-project/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 13:00:53 +0000</pubDate>
		<dc:creator>Ray Acayan</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Citizen Lab]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[Enigmail]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[GhostNet]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[GnuPG]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[GPG]]></category>
		<category><![CDATA[IMAP]]></category>
		<category><![CDATA[LDAP]]></category>
		<category><![CDATA[Lightning]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Outlook]]></category>
		<category><![CDATA[PGP]]></category>
		<category><![CDATA[POP3]]></category>
		<category><![CDATA[PST]]></category>
		<category><![CDATA[SkyDrive]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[Thunderbird]]></category>
		<category><![CDATA[TLS]]></category>

		<guid isPermaLink="false">http://www.rayacayan.com/blog/?p=554</guid>
		<description><![CDATA[I. Overview This project presents a procedure for migrating my email from a local Microsoft Outlook PST/POP3 configuration to a web-based IMAP solution using Mozilla Thunderbird and Enigmail for PGP encryption. Although this is my personal project, it can be extended to companies interested in reducing their IT costs by outsourcing their enterprise email administration [...]]]></description>
			<content:encoded><![CDATA[<p></br></p>
<h2 style="color:darkblue">I. Overview</h2>
<p>This project presents a procedure for migrating my email from a local Microsoft Outlook PST/POP3 configuration to a web-based IMAP solution using Mozilla Thunderbird and Enigmail for PGP encryption.  Although this is my personal project, it can be extended to companies interested in reducing their IT costs by outsourcing their enterprise email administration and spam / malware protection to a cloud-based provider like Google Gmail.<br />
I hope that you will benefit from this resource in your own projects.</p>
<p><strong>Security</strong></p>
<p>Email security has always been an important concern of mine.  Over the past several years, I have stored my email locally in password-protected Outlook PST files, which are then encrypted within a PGPdisk on top of an encrypting file system in a portable USB key.  I found this to be a reasonable precaution short of stopping all email use altogether (<a href="http://www-cs-faculty.stanford.edu/~knuth/email.html">&#8220;Knuth versus Email&#8221; &#8211; Don Knuth</a>).</p>
<p>Like most web mail providers, Gmail provides security in terms of TLS/SSL, which encrypts network communication between my computer and Gmail&#8217;s servers.  However, the email messages themselves are not encrypted, so anyone who can crack my password can simply log into gmail.com and view all my mail.  To prevent this, I configured Gmail to allow POP3 access so that my local Outlook could retrieve my email, store it in a local password-protected PST file, and delete GmailÃ¢â‚¬â„¢s copy from the server.  This approach is far from foolproof, since my computer itself can be hacked by malware, botnets, and GhostNet crackers recently discovered by UofT&#8217;s Citizen Lab (<a href="http://www.nytimes.com/2009/03/29/technology/29spy.html?_r=3&#038;pagewanted=1&#038;hp">&#8220;Vast Spy System Loots Computers in 103 Countries&#8221; &#8211; The New York Times</a>).</p>
<p>Security is also a top concern for businesses and individuals considering cloud-based services such as Amazon EC2 or web-based storage like Microsoft SkyDrive.  The network traffic may be encrypted, but the data itself is usually not, or is easily accessible after getting past a single username and password.  It is often a good idea to encrypt all private data using PGP before storing it anywhere on the web.  PGP adds another layer of security so that a cracker who obtains your username and password will not be able to read your encrypted data without your private key, or other employees&#8217; encrypted data without their private keys, even when they are stored together in a common WebDAV disk.  In my case, I am comfortable storing my PGP-encrypted email on Google&#8217;s Gmail servers.</p>
<p><strong>Multi-Access Capability</strong></p>
<p>The proliferation of netbooks and wireless devices also complicates access to locally secure email.  My three servers (Vista x64, Mac OS X, Ubuntu Linux), laptop (XP), Blackberry, and iPhone cannot all access my local PST file at the same time.  Even worse, each device had its own email storage containing unsecure copies of my email.  A recent USB-related data corruption event also highlighted the vulnerability of my PST file itself as a single point of failure.  Therefore, the Outlook PST/POP3 solution was no longer viable with regard to security and multi-access capability.</p>
<p>Several technologies are ideal replacements for Microsoft Outlook and POP3.  Internet Message Access Protocol, or IMAP, allows synchronized access to a web mailbox from multiple devices simultaneously.  Mozilla Thunderbird and Lightning are excellent open-source email and calendars clients for Windows, Mac OS X, and Linux.  GnuPG is a free implementation of the OpenPGP encryption standard, and Enigmail is an OpenPGP extension for Thunderbird.</p>
<p><img src="/blog/img/webmail.jpg"></img><br />
<br /></br></p>
<h2 style="color:darkblue">II. Consulting</h2>
<p>I do my best to explain the concepts and techniques behind my projects.  If you like my work and can use my expertise in your projects, I am available for <span id="consulting_page" onmouseover="consulting_mouseOver()" onmousemove="consulting_mouseMove()" onmouseout="consulting_mouseOut()"><a href="http://www.RayAcayan.com/blog/consulting/"><strong>consulting</strong></a></span> at a competitive rate.<br />
<br /></br></p>
<h2 style="color:darkblue">III. Procedure</h2>
<p><strong><a href="http://www.rayacayan.com/blog/the-web-mail-migration-project-procedure/">&lt; Click here to view the detailed procedure for this project &gt;</a></strong><br />
<br /></br></p>
<h2 style="color:darkblue">IV. Future Enhancements</h2>
<p><strong>1. PGP Encryption in Social Networks</strong></p>
<p>Social networking sites are increasingly used as alternatives to traditional email, but are notorious for lax or non-existent security measures.  If a cracker gets into your Facebook or LinkedIn account, they will have full access to all of your private messages.  With PGP encryption, the messages in those Inbox and InMail accounts will appear as gibberish to crackers since only you possess the private key/s to decrypt them.</p>
<p><strong>2. PGP Encryption in the Enterprise</strong></p>
<p>Some firms have corporate policies against the use of email encryption, with the rationale that managers and executives need access to their employees&#8217; email in certain situations.  However, this policy also leaves employees&#8217; email vulnerable to malicious administrators or crackers with the ability to intercept these messages.  A better approach would be to enforce encryption on all intercompany email, with the employees&#8217; private keys accessible to managers and executives who are authorized to decrypt and read their email under strict corporate guidelines.</p>
<p><strong>3. Gmail in the Enterprise</strong></p>
<p>Due to Google&#8217;s high-performance cloud network, Gmail can provide a more robust and reliable email service than many in-house corporate environments.  However, Gmail still lacks some features required by enterprise users, such as LDAP authentication, private global address lists, auto-encryption via GPG/PGP keys, DNS redirection, and cloud-based antivirus.  Google can consider providing its own LDAP servers or integrate into a firm&#8217;s existing LDAP servers in order to securely process email authentication for corporate users.  Gmail could also partition corporate email from general-public email to create global address lists that are private to each company.  Auto-encryption is a highly desirable feature because it ensures email encryption not only between intercompany users within Gmail, but also between all Gmail users.  DNS redirection will enable Gmail to process incoming and outgoing messages transparently as if they were from/to user@mycompany.com instead of user@gmail.com.  Finally, Google can consider bundling a cloud-based antivirus solution such as Symantec to provide enhanced virus and malware protection for email attachments at all endpoints of the Gmail cloud network.<br />
<br /></br></p>
<h2 style="color:darkblue">V. References</h2>
<p><strong>1. PGP &#8211; Pretty Good Privacy</strong><br />
<a href="http://en.wikipedia.org/wiki/Pretty_Good_Privacy">http://en.wikipedia.org/wiki/Pretty_Good_Privacy</a></p>
<p><strong>2. TLS/SSL &#8211; Transport Layer Security / Secure Sockets Layer</strong><br />
<a href="http://en.wikipedia.org/wiki/Secure_Sockets_Layer">http://en.wikipedia.org/wiki/Secure_Sockets_Layer</a></p>
<p><strong>3. POP3 &#8211; Post Office Protocol</strong><br />
<a href="http://en.wikipedia.org/wiki/Post_Office_Protocol">http://en.wikipedia.org/wiki/Post_Office_Protocol</a></p>
<p><strong>4. IMAP &#8211; Internet Message Access Protocol</strong><br />
<a href="http://en.wikipedia.org/wiki/Internet_Message_Access_Protocol">http://en.wikipedia.org/wiki/Internet_Message_Access_Protocol</a></p>
<p><strong>5. Mozilla Thunderbird</strong><br />
<a href="http://www.mozillamessaging.com/en-US/thunderbird/">http://www.mozillamessaging.com/en-US/thunderbird/</a></p>
<p><strong>6. Lightning</strong><br />
<a href="https://addons.mozilla.org/en-US/thunderbird/addon/2313">https://addons.mozilla.org/en-US/thunderbird/addon/2313</a></p>
<p><strong>7. Provider for Google Calendar</strong><br />
<a href="https://addons.mozilla.org/en-US/thunderbird/addon/4631">https://addons.mozilla.org/en-US/thunderbird/addon/4631</a></p>
<p><strong>8. GPG &#8211; GNU Privacy Guard</strong><br />
<a href="http://www.gnupg.org/">http://www.gnupg.org/</a></p>
<p><strong>9. Enigmail</strong><br />
<a href="http://enigmail.mozdev.org/home/index.php">http://enigmail.mozdev.org/home/index.php</a></p>
<p><strong>10. Gmail Help</strong><br />
<a href="http://mail.google.com/support/">http://mail.google.com/support/</a></p>
<p><strong>11. Microsoft SkyDrive</strong><br />
<a href="http://en.wikipedia.org/wiki/Windows_Live_SkyDrive">http://en.wikipedia.org/wiki/Windows_Live_SkyDrive</a></p>
<p><strong>12. Amazon EC2</strong><br />
<a href="http://aws.amazon.com/ec2/">http://aws.amazon.com/ec2/</a></p>
<p><strong>13. Microsoft Windows Live SkyDrive</strong><br />
<a href="http://skydrive.live.com/">http://skydrive.live.com/</a></p>
<p><strong>14. Google App Engine</strong><br />
<a href="http://code.google.com/appengine/">http://code.google.com/appengine/</a></p>
<p><strong>15. Gmail Labs</strong><br />
<a href="http://gmailblog.blogspot.com/2008/06/introducing-gmail-labs.html">http://gmailblog.blogspot.com/2008/06/introducing-gmail-labs.html</a></p>
<p></br></p>
]]></content:encoded>
			<wfw:commentRss>http://www.RayAcayan.com/projects/the-web-mail-migration-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

