<?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>ThinkOvi! - Website transfer and Server migration services</title>
	<atom:link href="http://www.thinkovi.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thinkovi.com</link>
	<description>Get your website moved the right way by professionals</description>
	<lastBuildDate>Thu, 04 Feb 2010 19:15:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Migrating your IMAP mail? Here&#8217;s how!</title>
		<link>http://www.thinkovi.com/migrating-your-imap-mail-heres-how/</link>
		<comments>http://www.thinkovi.com/migrating-your-imap-mail-heres-how/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 09:25:17 +0000</pubDate>
		<dc:creator>Ovidiu</dc:creator>
				<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[imap email migration]]></category>
		<category><![CDATA[transfer email account]]></category>

		<guid isPermaLink="false">http://www.thinkovi.com/?p=385</guid>
		<description><![CDATA[For those of you who are changing their IMAP email account to a different server, there is a very nice utility called imapsync.
The utility is actually written in PERL so it can run on any number of hosts that support PERL scripting, and while it has many config options, here is the actual command we [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.thinkovi.com/wp-content/uploads/2010/02/email.jpg"><img class="alignright size-thumbnail wp-image-405" title="E-mail IMAP" border="0" src="http://www.thinkovi.com/wp-content/uploads/2010/02/email-150x150.jpg" alt="" width="150" height="150" /></a>For those of you who are changing their IMAP email account to a different server, there is a very nice utility called <a title="Imapsync tool" href="http://freshmeat.net/projects/imapsync/" target="_blank">imapsync</a>.</p>
<p>The utility is actually written in PERL so it can run on any number of hosts that support PERL scripting, and while it has many config options, here is the actual command we used to transfer an email account from our server to Google Apps Mail account(GMail is the same) from a Linux box:</p>
<h2>The command</h2>
<blockquote><p>imapsync \</p>
<p>&#8211;host1 thinkovi.com &#8211;user1 email@thinkovi.com &#8211;password1 mypass1 \</p>
<p>&#8211;host2 imap.gmail.com &#8211;user2 new@gmail.com &#8211;password2 pass2 \</p>
<p>&#8211;ssl2 &#8211;ssl1 &#8211;authmech1 PLAIN &#8211;authmech2 LOGIN</p></blockquote>
<ul>
<li>bear in mind that this utility will work only for email servers supporting IMAP protocol.</li>
</ul>
<ul>
<li>also, in the above code notice we have used SSL for both connections, and PLAIN authentication for the original server and LOGIN for the imap server at google</li>
</ul>
<p><span id="more-385"></span></p>
<h2>Result Message</h2>
<blockquote><p>++++ End looping on each folder ++++<br />
++++ Statistics ++++<br />
Time                   : 257 sec<br />
Messages transferred   : 170<br />
Messages skipped       : 0<br />
Total bytes transferred: 12914745<br />
Total bytes skipped    : 0<br />
Total bytes error      : 0<br />
Detected 0 errors</p></blockquote>
<ul>
<li>worth mentioning, the utility really worked and our gmail account contained in the end all email messages and folders from the original IMAP server</li>
</ul>
<p>The full usage options(&#8220;<strong>imapsync &#8211;help</strong>&#8220;) and more information can also be found on the<a title="Imapsync man page linux" href="http://linux.die.net/man/1/imapsync" target="_blank"> imapsync linux man page here</a>.</p>
<p>Please, thank the author (Gilles LAMIRAL) by giving him a book:<br />
<a title="Thank Gilles LAMIRAL" href="http://www.amazon.com/gp/registry/wishlist/1C9UNDIH3P7R7/" target="_blank">http://www.amazon.com/gp/registry/wishlist/1C9UNDIH3P7R7/</a></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 69px; width: 1px; height: 1px;">
<p>usage: /usr/bin/imapsync [options]</p>
<p>Several options are mandatory.</p>
<p>&#8211;host1       &lt;string&gt; : &#8220;from&#8221; imap server. Mandatory.<br />
&#8211;port1       &lt;int&gt;    : port to connect on host1. Default is 143.<br />
&#8211;user1       &lt;string&gt; : user to login on host1. Mandatory.<br />
&#8211;authuser1   &lt;string&gt; : user to auth with on host1 (admin user).<br />
Avoid using &#8211;authmech1 SOMETHING with &#8211;authuser1.<br />
&#8211;password1   &lt;string&gt; : password for the user1. Dangerous, use &#8211;passfile1<br />
&#8211;passfile1   &lt;string&gt; : password file for the user1. Contains the password.<br />
&#8211;host2       &lt;string&gt; : &#8220;destination&#8221; imap server. Mandatory.<br />
&#8211;port2       &lt;int&gt;    : port to connect on host2. Default is 143.<br />
&#8211;user2       &lt;string&gt; : user to login on host2. Mandatory.<br />
&#8211;authuser2   &lt;string&gt; : user to auth with on host2 (admin user).<br />
&#8211;password2   &lt;string&gt; : password for the user2. Dangerous, use &#8211;passfile2<br />
&#8211;passfile2   &lt;string&gt; : password file for the user2. Contains the password.<br />
&#8211;noauthmd5            : don&#8217;t use MD5 authentification.<br />
&#8211;authmech1   &lt;string&gt; : auth mechanism to use with host1:<br />
PLAIN, LOGIN, CRAM-MD5 etc. Use UPPERCASE.<br />
&#8211;authmech2   &lt;string&gt; : auth mechanism to use with host2. See &#8211;authmech1<br />
&#8211;ssl1                 : use an SSL connection on host1.<br />
&#8211;ssl2                 : use an SSL connection on host2.<br />
&#8211;folder      &lt;string&gt; : sync this folder.<br />
&#8211;folder      &lt;string&gt; : and this one, etc.<br />
&#8211;folderrec   &lt;string&gt; : sync this folder recursively.<br />
&#8211;folderrec   &lt;string&gt; : and this one, etc.<br />
&#8211;include     &lt;regex&gt;  : sync folders matching this regular expression<br />
&#8211;include     &lt;regex&gt;  : or this one, etc.<br />
in case both &#8211;include &#8211;exclude options are<br />
use, include is done before.<br />
&#8211;exclude     &lt;regex&gt;  : skips folders matching this regular expression<br />
Several folders to avoid:<br />
&#8211;exclude &#8216;fold1|fold2|f3&#8242; skips fold1, fold2 and f3.<br />
&#8211;exclude     &lt;regex&gt;  : or this one, etc.<br />
&#8211;prefix1     &lt;string&gt; : remove prefix to all destination folders<br />
(usually INBOX. for cyrus imap servers)<br />
you can use &#8211;prefix1 if your source imap server<br />
does not have NAMESPACE capability.<br />
&#8211;prefix2     &lt;string&gt; : add prefix to all destination folders<br />
(usually INBOX. for cyrus imap servers)<br />
use &#8211;prefix2 if your target imap server does not<br />
have NAMESPACE capability.<br />
&#8211;regextrans2 &lt;regex&gt;  : Apply the whole regex to each destination folders.<br />
&#8211;regextrans2 &lt;regex&gt;  : and this one. etc.<br />
When you play with the &#8211;regextrans2 option, first<br />
add also the safe options &#8211;dry &#8211;justfolders<br />
Then, when happy, remove &#8211;dry, remove &#8211;justfolders<br />
&#8211;regexmess   &lt;regex&gt;  : Apply the whole regex to each message before transfer.<br />
Example: &#8217;s/\000/ /g&#8217; # to replace null by space.<br />
&#8211;regexmess   &lt;regex&gt;  : and this one.<br />
&#8211;regexmess   &lt;regex&gt;  : and this one, etc.<br />
&#8211;regexflag   &lt;regex&gt;  : Apply the whole regex to each flags list.<br />
Example: &#8217;s/&#8221;Junk&#8221;//g&#8217; # to remove &#8220;Junk&#8221; flag.<br />
&#8211;regexflag   &lt;regex&gt;  : and this one, etc.<br />
&#8211;sep1        &lt;string&gt; : separator in case namespace is not supported.<br />
&#8211;sep2        &lt;string&gt; : idem.<br />
&#8211;delete               : delete messages on source imap server after<br />
a successful transfer. Useful in case you<br />
want to migrate from one server to another one.<br />
With imap, delete tags messages as deleted, they<br />
are not really deleted. See expunge.<br />
&#8211;delete2              : delete messages on the destination imap server that<br />
are not on the source server.<br />
&#8211;expunge              : expunge messages on source account.<br />
expunge really deletes messages marked deleted.<br />
expunge is made at the beginning on the<br />
source server only. newly transferred messages<br />
are expunged if option &#8211;expunge is given.<br />
no expunge is done on destination account but<br />
it will change in future releases.<br />
&#8211;expunge1             : expunge messages on source account.<br />
&#8211;expunge2             : expunge messages on target account.<br />
&#8211;uidexpunge2          : uidexpunge messages on the destination imap server<br />
that are not on the source server, requires &#8211;delete2<br />
&#8211;syncinternaldates    : sets the internal dates on host2 same as host1.<br />
Turned on by default.<br />
&#8211;idatefromheader      : sets the internal dates on host2 same as the<br />
&#8220;Date:&#8221; headers.<br />
&#8211;buffersize  &lt;int&gt;    : sets the size of a block of I/O.<br />
&#8211;maxsize     &lt;int&gt;    : skip messages larger than &lt;int&gt; bytes<br />
&#8211;maxage      &lt;int&gt;    : skip messages older than &lt;int&gt; days.<br />
final stats (skipped) don&#8217;t count older messages<br />
see also &#8211;minage<br />
&#8211;minage      &lt;int&gt;    : skip messages newer than &lt;int&gt; days.<br />
final stats (skipped) don&#8217;t count newer messages<br />
You can do (+ are the messages selected):<br />
past|&#8212;-maxage+++++++++++++++&gt;now<br />
past|+++++++++++++++minage&#8212;-&gt;now<br />
past|&#8212;-maxage+++++minage&#8212;-&gt;now (intersection)<br />
past|++++minage&#8212;&#8211;maxage++++&gt;now (union)<br />
&#8211;skipheader  &lt;regex&gt;  : Don&#8217;t take into account header keyword<br />
matching &lt;string&gt; ex: &#8211;skipheader &#8216;X.*&#8217;<br />
&#8211;useheader   &lt;string&gt; : Use this header to compare messages on both sides.<br />
Ex: Message-ID or Subject or Date.<br />
&#8211;useheader   &lt;string&gt;   and this one, etc.<br />
&#8211;skipsize             : Don&#8217;t take message size into account.<br />
&#8211;allowsizemismatch    : allow RFC822.SIZE != fetched msg size<br />
consider &#8211;skipsize to avoid duplicate messages<br />
when running syncs more than one time per mailbox<br />
&#8211;dry                  : do nothing, just print what would be done.<br />
&#8211;subscribed           : transfers subscribed folders.<br />
&#8211;subscribe            : subscribe to the folders transferred on the<br />
&#8220;destination&#8221; server that are subscribed<br />
on the &#8220;source&#8221; server.<br />
&#8211;nofoldersizes        : Do not calculate the size of each folder in bytes<br />
and message counts. Default is to calculate them.<br />
&#8211;justfoldersizes      : exit after printed the folder sizes.<br />
&#8211;syncacls             : Synchronises acls (Access Control Lists).<br />
&#8211;nosyncacls           : Does not synchronise acls. This is the default.<br />
&#8211;debug                : debug mode.<br />
&#8211;debugimap            : imap debug mode.<br />
&#8211;version              : print software version.<br />
&#8211;justconnect          : just connect to both servers and print useful<br />
information. Need only &#8211;host1 and &#8211;host2 options.<br />
&#8211;justlogin            : just login to both servers with users credentials<br />
and exit.<br />
&#8211;justfolders          : just do things about folders (ignore messages).<br />
&#8211;fast                 : be faster (just does not sync flags).<br />
&#8211;reconnectretry1 &lt;int&gt;: reconnect if connection is lost up to &lt;int&gt; times<br />
&#8211;reconnectretry2 &lt;int&gt;: reconnect if connection is lost up to &lt;int&gt; times<br />
&#8211;split1     &lt;int&gt;     : split the requests in several parts on source server.<br />
&lt;int&gt; is the number of messages handled per request.<br />
default is like &#8211;split1 1000<br />
&#8211;split2     &lt;int&gt;     : same thing on the &#8220;destination&#8221; server.<br />
&#8211;fastio1              : use fastio with the &#8220;from&#8221; server.<br />
&#8211;fastio2              : use fastio with the &#8220;destination&#8221; server.<br />
&#8211;timeout     &lt;int&gt;    : imap connect timeout.<br />
&#8211;help                 : print this.</p>
<p>Example: to synchronise imap account &#8220;foo&#8221; on &#8220;imap.truc.org&#8221;<br />
to  imap account &#8220;bar&#8221; on &#8220;imap.trac.org&#8221;<br />
with foo password stored in /etc/secret1<br />
and  bar password stored in /etc/secret2</p>
<p>/usr/bin/imapsync \<br />
&#8211;host1 imap.truc.org &#8211;user1 foo &#8211;passfile1 /etc/secret1 \<br />
&#8211;host2 imap.trac.org &#8211;user2 bar &#8211;passfile2 /etc/secret2</p>
<p>Here is a [linux] system (Linux ovidiu-desktop 2.6.31-16-generic #53-Ubuntu SMP Tue Dec 8 04:01:29 UTC 2009 i686)<br />
with perl 5.10.0<br />
Mail::IMAPClient  3.19<br />
IO::Socket        1.30_01<br />
IO::Socket::SSL<br />
Digest::MD5       2.36_01<br />
Digest::HMAC_MD5<br />
Term::ReadKey<br />
Date::Manip</p>
<p>$Id: imapsync,v 1.286 2009/07/24 15:53:04 gilles Exp gilles $</p>
<p>Happy with this free, open and gratis GPL software?<br />
Please, thank the author (Gilles LAMIRAL) by giving him a book:</p>
<p>http://www.amazon.com/gp/registry/wishlist/1C9UNDIH3P7R7/</p>
<p>or rate imapsync at http://freshmeat.net/projects/imapsync/</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkovi.com/migrating-your-imap-mail-heres-how/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redirecting url with a rewrite rule</title>
		<link>http://www.thinkovi.com/redirecting-urls-with-a-rewrite-rule/</link>
		<comments>http://www.thinkovi.com/redirecting-urls-with-a-rewrite-rule/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 14:21:37 +0000</pubDate>
		<dc:creator>Ovidiu</dc:creator>
				<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[rewrite rule]]></category>
		<category><![CDATA[url redirect]]></category>

		<guid isPermaLink="false">http://www.thinkovi.com/?p=363</guid>
		<description><![CDATA[Lets suppose you have made some changes to your website and you want to redirect some pages to their new url format, this .htaccess rewrite rule might come in handy:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)subpage1/subpage2/mypage.html$
RewriteCond %{QUERY_STRING} Itemid=91&#38;page=mypage$
RewriteRule ^(.*)$ http://mynewurl.com/index.php?mypage=new
What the above condition does is redirect /subpage1/subpage2/mypage.html?Itemid=91&#38;page=mypage url to http://mynewurl.com/index.php?mypage=new
Obviously, you need to replace the above names with [...]]]></description>
			<content:encoded><![CDATA[<p>Lets suppose you have made some changes to your website and you want to redirect some pages to their new url format, this .htaccess rewrite rule might come in handy:</p>
<blockquote><p>RewriteEngine on<br />
RewriteCond %{REQUEST_URI} ^(.*)subpage1/subpage2/mypage.html$<br />
RewriteCond %{QUERY_STRING} Itemid=91&amp;page=mypage$<br />
RewriteRule ^(.*)$ http://mynewurl.com/index.php?mypage=new</p></blockquote>
<p>What the above condition does is redirect <strong>/subpage1/subpage2/mypage.html?Itemid=91&amp;page=mypage</strong> url to <strong>http://mynewurl.com/index.php?mypage=new</strong></p>
<p>Obviously, you need to replace the above names with your actual site names</p>
<p>The second RewriteCond with QUERY_STRING is only needed if the url you want to rewrite has additional parameters like mypage.html?pages=mypage for instance</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkovi.com/redirecting-urls-with-a-rewrite-rule/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recovering from disk failures</title>
		<link>http://www.thinkovi.com/recovering-from-disk-failures/</link>
		<comments>http://www.thinkovi.com/recovering-from-disk-failures/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 12:07:38 +0000</pubDate>
		<dc:creator>Ovidiu</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[data recovery]]></category>
		<category><![CDATA[ddrescue]]></category>
		<category><![CDATA[disk drive recovery]]></category>
		<category><![CDATA[disk failures recovery]]></category>
		<category><![CDATA[system recovery]]></category>

		<guid isPermaLink="false">http://www.thinkovi.com/?p=235</guid>
		<description><![CDATA[As you might know, disk drives, specially in high usage areas like hosting enviroments, have a tendency of crashing from time to time.
Most crashes you will encounter are related to bad blocks on your hard drive which in some cases will stop your operating system from booting, leaving your server at a stop. There are [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_239" class="wp-caption alignleft" style="width: 160px"><img class="size-thumbnail wp-image-239" title="top15" src="http://www.thinkovi.com/wp-content/uploads/2009/11/top15-150x150.png" alt="Data recovery" width="150" height="150" /><p class="wp-caption-text">Data recovery</p></div>
<p>As you might know, disk drives, specially in high usage areas like hosting enviroments, have a tendency of crashing from time to time.</p>
<p>Most crashes you will encounter are related to bad blocks on your hard drive which in some cases will stop your operating system from booting, leaving your server at a stop. There are several utilities which can help you detect and fix the bad blocks at a software level, like the <a title="File system check utility" href="http://en.wikipedia.org/wiki/Fsck">FSCK</a>(file system check) available for Linux, or <a title="CHKDSK" href="http://en.wikipedia.org/wiki/CHKDSK">CHKDSK</a> and <a title="SCANDISK" href="http://en.wikipedia.org/wiki/SCANDISK">SCANDISK</a> for Windows, however there are situations when the bad block can&#8217;t be fixed, most of the cases due to a critical error.</p>
<p>While this doesn&#8217;t happen constantly or too often, it would be nice to think that there might be ways to recover data that might be business critical, and here is how:</p>
<p><span id="more-235"></span><a title="DDRescue rescue utility" href="http://www.gnu.org/software/ddrescue/ddrescue.html">DDRescue</a> is recovery tool that will help you create an image of your hard drive, skip the bad blocks, and restore it on another hard disk! It copies data from one file or block device (hard disc, cdrom, etc) to another, trying hard to rescue data in case of read errors. While this utility mostly runs on unix systems, it can deal with any type of disk drive data, whether it&#8217;s a linux system, windows, mac osx or something else.</p>
<p>We found this <a title="Using ddrescue" href="http://www.debianadmin.com/recover-data-from-a-dead-hard-drive-using-ddrescue.html">article</a> to be fairly instructive giving all the restore procedures to handle a hard disk failure recovery.</p>
<p>If you are lucky, and the bad blocks were not containing some important booting data, your new cloned hard drive could be popped inside the server and ready to boot from it, resuming your server activity! If not, well you are still lucky <img src='http://www.thinkovi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  you just need to do some more work to get the server up and booting again, fairly a system administrator job.</p>
<p>There are also hardware failures, when your hard disk might become unaccessible at a hardware level, in which case the best way to do is ship it back to the manufacturer company and let them replace the faulty parts, your important data might still get saved.</p>
<p>Best and always, make sure you always keep proper backups of your important data. Good luck!</p>
<h3><em>DDRescue help: <span style="text-decoration: underline;">ddrescue -h</span></em></h3>
<pre>GNU ddrescue - Data recovery tool.
Copies data from one file or block device to another,
trying hard to rescue data in case of read errors.

Usage: ddrescue [options] infile outfile [logfile]
You should use a logfile unless you know what you are doing.

Options:
  -h, --help                    display this help and exit
  -V, --version                 output version information and exit
  -b, --block-size=      sector size of input device [default 512]
  -B, --binary-prefixes         show binary multipliers in numbers [SI]
  -c, --cluster-size=  sectors to copy at a time [128]
  -C, --complete-only           do not read new data beyond logfile limits
  -d, --direct                  use direct disc access for input file
  -D, --synchronous             use synchronous writes for output file
  -e, --max-errors=          maximum number of error areas allowed
  -F, --fill=            fill given type blocks with infile data (?*/-+)
  -g, --generate-logfile        generate approximate logfile from partial copy
  -i, --input-position=
    starting position in input file [0]
  -m, --domain-logfile=   restrict domain to finished blocks in file
  -n, --no-split                do not try to split or retry failed blocks
  -o, --output-position=
   starting position in output file [ipos]
  -q, --quiet                   suppress all messages
  -r, --max-retries=         exit after given retries (-1=infinity) [0]
  -R, --retrim                  mark all failed blocks as non-trimmed
  -s, --max-size=        maximum size of input data to be copied
  -S, --sparse                  use sparse writes for output file
  -t, --truncate                truncate output file to zero size
  -T, --try-again               mark non-split, non-trimmed blocks as non-tried
  -v, --verbose                 verbose operation
Numbers may be followed by a multiplier: b = blocks, k = kB = 10^3 = 1000,
Ki = KiB = 2^10 = 1024, M = 10^6, Mi = 2^20, G = 10^9, Gi = 2^30, etc...</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkovi.com/recovering-from-disk-failures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Down and dirty with SquirrelMail</title>
		<link>http://www.thinkovi.com/down-and-dirty-with-squirrelmail/</link>
		<comments>http://www.thinkovi.com/down-and-dirty-with-squirrelmail/#comments</comments>
		<pubDate>Sat, 14 Nov 2009 13:08:23 +0000</pubDate>
		<dc:creator>Ovidiu</dc:creator>
				<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[squirrelmail]]></category>

		<guid isPermaLink="false">http://www.thinkovi.com/?p=187</guid>
		<description><![CDATA[I have to admit, the gmail and yahoo new email interfaces are great, if you don&#8217;t mind the advertising, and very easy to use, however i have been using for a long time SquirrelMail to access the email directly on my server!
While the interface that comes with the cpanel installation is very basic, there is [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_212" class="wp-caption alignright" style="width: 278px"><img class="size-full wp-image-212" title="squirrelmail_logo" src="http://www.thinkovi.com/wp-content/uploads/2009/11/squirrelmail_logo.png" alt="SquirrelMail Logo" width="268" height="82" /><p class="wp-caption-text">SquirrelMail Logo</p></div>
<p>I have to admit, the gmail and yahoo new email interfaces are great, if you don&#8217;t mind the advertising, and very easy to use, however i have been using for a long time SquirrelMail to access the email directly on my server!</p>
<p>While the interface that comes with the cpanel installation is very basic, there is one thing i would have liked to have, like in Yahoo, when you get an email, the page title automatically changes with the number of unread emails!</p>
<p><span id="more-187"></span></p>
<p>Now, squirrelmail already have this auto-refresh thing, so here is what you need to do in order to get the titles of the top frame updated:</p>
<ol>
<li> locate and open on your server the <strong>squirrelmail/src/left_main.php</strong> file</li>
<li> locate this line</li>
<pre class="php" name="code">/* Print unseen information. */
if ($unseen_string != '') {</pre>
<li> Add this code just before the if statement</li>
<pre class="php" name="code">if($mailbox == 'INBOX'){
   if ($unseen_string != ""){
      $line .= "&lt;script type='text/javascript'&gt;top.document.title='Inbox ".$unseen_string."'&lt;/script&gt;";
   }else{
      $line .= "&lt;script type='text/javascript'&gt;top.document.title='No unread messages'&lt;/script&gt;";
   }
}</pre>
</ol>
<p>Now, your squirellmail should look like this when getting a new email</p>
<p><img class="alignnone size-full wp-image-195" title="squirrelmail" src="http://www.thinkovi.com/wp-content/uploads/2009/11/squirrelmail.png" alt="squirrelmail" width="232" height="34" /></p>
<p>And obviously, this will only work for the INBOX folder!</p>
<p>Happy squirrelling <img src='http://www.thinkovi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkovi.com/down-and-dirty-with-squirrelmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing PHP on Windows got easier! finally&#8230;.!</title>
		<link>http://www.thinkovi.com/installing-php-on-windows/</link>
		<comments>http://www.thinkovi.com/installing-php-on-windows/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 23:23:07 +0000</pubDate>
		<dc:creator>Ovidiu</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[php installer]]></category>
		<category><![CDATA[web platform installer]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.thinkovi.com/?p=180</guid>
		<description><![CDATA[It seems that, earlier this year, Microsoft released a small application called Web Platform Installer , a utility meant to be dead simple to install a range of web applications and get your website up and going fast on a IIS server.
Beside the usual Microsoft web applications support like ASP.NET and SQL SERVER, they also [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_184" class="wp-caption alignright" style="width: 160px"><img class="size-thumbnail wp-image-184" title="wpi_feature" src="http://www.thinkovi.com/wp-content/uploads/2009/11/wpi_feature-150x150.jpg" alt="Microsoft Web Platform" width="150" height="150" /><p class="wp-caption-text">Microsoft Web Platform</p></div>
<p>It seems that, earlier this year, Microsoft released a small application called <a title="Microsoft Platform Installer" href="http://www.microsoft.com/Web/">Web Platform Installer</a> , a utility meant to be dead simple to install a range of web applications and get your website up and going fast on a IIS server.</p>
<p>Beside the usual Microsoft web applications support like ASP.NET and SQL SERVER, they also added support for PHP, facilitating this way the installation of a range of web publishing tools like Drupal, Moodle and Wordpress, hope I see some Joomla! there as it&#8217;s fairly popular.</p>
<p>Would also be nice to hear they also added support for Python, so that we can start serving code to Google, kidding <img src='http://www.thinkovi.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , but it wouldbe nice.</p>
<p>A small review of this service can be found <a href="http://articles.sitepoint.com/article/php-windows-web-platform-installer">here</a> , thanks to <a title="Find out more about this author" href="http://www.sitepoint.com/articlelist/586">Louis Simoneau</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkovi.com/installing-php-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transfering files securely</title>
		<link>http://www.thinkovi.com/transfering-files-securely/</link>
		<comments>http://www.thinkovi.com/transfering-files-securely/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 12:06:10 +0000</pubDate>
		<dc:creator>Ovidiu</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[file transfer]]></category>
		<category><![CDATA[gnu privacy guard]]></category>
		<category><![CDATA[gpg]]></category>

		<guid isPermaLink="false">http://www.thinkovi.com/?p=130</guid>
		<description><![CDATA[Are you thinking of transferring some files from your server to another location over an unsecured network?
Lets say those files contain some important data(ex. your credit card database data) and you are a little paranoid when thinking about unsecured network connections.
In case you are running Linux, you are in luck, the Gnu Privacy Guard (GPG) [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_218" class="wp-caption alignleft" style="width: 85px"><img src="http://www.thinkovi.com/wp-content/uploads/2009/11/encrypted_storage.jpg" alt="File encryption" title="encrypted_storage" width="75" height="75" class="size-full wp-image-218" /><p class="wp-caption-text">File encryption</p></div>Are you thinking of transferring some files from your server to another location over an unsecured network?</p>
<p>Lets say those files contain some important data(ex. your credit card database data) and you are a little paranoid when thinking about unsecured network connections.</p>
<p>In case you are running Linux, you are in luck, the <a title="The Gnu Privacy Guard" href="http://www.gnupg.org/">Gnu Privacy Guard</a> (GPG) is an free encryption tool that can encrypt or sign your files/archives with a password or an access key.</p>
<p><span id="more-130"></span></p>
<h2>Basic usage</h2>
<ul>
<li><strong>open up a <a title="Secure Shell Wikipedia" href="http://en.wikipedia.org/wiki/Secure_Shell" target="_blank">ssh</a> terminal console </strong><strong> </strong></li>
</ul>
<ul>
<li><strong>Encryption command:</strong></li>
</ul>
<pre name="code" class="html">gpg -c &lt;file_name&gt;</pre>
<p>- this will create a new file called <strong>&lt;file_name&gt;.gpg</strong> which is your encoded file</p>
<ul>
<li><strong>Decryption command: </strong><strong> </strong></li>
</ul>
<pre name="code" class="html">gpg &lt;file_name&gt;.gpg</pre>
<p>The full online usage manual of the gpg command can be found on <a title="The Gnu Privacy Guard Handbook" href="http://www.gnupg.org/gph/en/manual.html" target="_blank">The GNU Privacy Guard Handbook</a> webpage.</p>
<p>Good luck:)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkovi.com/transfering-files-securely/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Choosing a good host for your site!</title>
		<link>http://www.thinkovi.com/choosing-a-good-host-for-your-site/</link>
		<comments>http://www.thinkovi.com/choosing-a-good-host-for-your-site/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 19:10:30 +0000</pubDate>
		<dc:creator>Ovidiu</dc:creator>
				<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[choosing host]]></category>
		<category><![CDATA[dedicated server]]></category>
		<category><![CDATA[hosting]]></category>

		<guid isPermaLink="false">http://www.thinkovi.com/?p=105</guid>
		<description><![CDATA[Choosing a good hosting company for your website/business is essential in your successful presence online. From our experience not all hosting companies provide what they advertise, however you need to think twice when moving your site on their servers. It&#8217;s like taking your car to the car wash, do you trust them they won&#8217;t scratch [...]]]></description>
			<content:encoded><![CDATA[<p>Choosing a good hosting company for your website/business is essential in your successful presence online. From our experience not all hosting companies provide what they advertise, however you need to think twice when moving your site on their servers. It&#8217;s like taking your car to the car wash, do you trust them they won&#8217;t scratch it?</p>
<p><span id="more-105"></span></p>
<ul>
<li>What might be good for someone with lets say a simple html website, might not be really that good for you, since you would need more resources when running a database driven application for instance, make sure their infrastructure deliver</li>
</ul>
<ul>
<li>Before getting a shared hosting account, ask about the hosting account limitations, like memory usage, mysql maximum number of queries per hour, file write size limit in case you plan to take backups of your site</li>
</ul>
<ul>
<li>Before getting your site moved or created at a new hosting company, do not go on and buy yourself a one year contract, but instead try them for one month, it might save you some good money</li>
</ul>
<ul>
<li>Read everything on their site, policy, term of business, infrastructure, find out why they offer that small price? Is it because they can afford that because they have a large clustered facility or is it because they simply don&#8217;t care how slow their clients sites work because servers are overloaded?</li>
</ul>
<ul>
<li>Read everything you find about them on other sites, ask about them in a hosting forum, do a google search</li>
</ul>
<ul>
<li>Or maybe you are ready to manage your own dedicated server? A hosting company with a good support response will be most indicated since they will deal directly with your server, and ideally, in a small amount of time.  Before getting a server, try and contact them through various channels(phone, email, fax) at different periods of the day and test that they really are online as they advertise.</li>
</ul>
<p>These are only some guidelines we have build for ourself through experince, in the end, everybody is free to choose their hosting company based on their own judgement</p>
<p>Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkovi.com/choosing-a-good-host-for-your-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What happens when your employee goes BAD?</title>
		<link>http://www.thinkovi.com/what-happens-when-you-employee-goes-bad/</link>
		<comments>http://www.thinkovi.com/what-happens-when-you-employee-goes-bad/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 15:32:34 +0000</pubDate>
		<dc:creator>Ovidiu</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[backups]]></category>
		<category><![CDATA[disaster recovery]]></category>
		<category><![CDATA[employee]]></category>
		<category><![CDATA[move job]]></category>
		<category><![CDATA[recovery scenarios]]></category>

		<guid isPermaLink="false">http://www.thinkovi.com/?p=91</guid>
		<description><![CDATA[We&#8217;ve recently been contracted to move a client sites between servers. Well the job has been finished, sites were working correctly on the new server until recently, a few weeks after the move, when he discovered an old employee of his installed much to our surprise a lot of backdoor code inside the sites so [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve recently been contracted to move a client sites between servers. Well the job has been finished, sites were working correctly on the new server until recently, a few weeks after the move, when he discovered an old employee of his installed much to our surprise a lot of backdoor code inside the sites so that he could get unauthorized access at any time. By doing this, he managed to delete a lot of important database data as far as we checked.</p>
<p><span id="more-91"></span></p>
<p>While I do not have the details of their current relation, I&#8217;m inclined to say that his employee done this with specific actions in mind.</p>
<p>Needless to say, getting backdoor code is like finding needles in a haystack.</p>
<p>You would think by now, ok, why not recover the data from backups? Well that would be ideal, but here is what actually happen:</p>
<p>His hosting company were in charge of  creating backups of his server, however what they actually forgot to specify their client is that those backups are in fact disaster recovery backups and will not protect him for malicious actions, so they setup a daily and weekly backup process, the daily one would refresh itself each day, and the weekly one, each week on Monday as you might guess!</p>
<p>Well, over the weekend, his employee was busy, he managed to delete the database data. Now, the actual business owner gets back to the office on Monday and gets the surprise, a lot of sites have been compromised! Ok, no worries, we have backups, but wait, it&#8217;s Monday the backup process just flushed the weekly backup and the old ones are gone, leaving &#8230; nothing in place!</p>
<p>The story might have a happy end as we kept the clients data after the initial move, so we are able to recover them from there, however any updates in the meantime might be lost!</p>
<p>There are a lot of things each of us can learn from this story:</p>
<ul>
<li> always make sure you keep proper backups of your websites and are able to recover</li>
<li> taking a day off to test recovery scenarios will help</li>
<li>try to always keep an ethical point of view and make sure you employee the right people</li>
<li>and again, always keep a backup, specially when you dealing with impotant data</li>
<li>nobody cares more about your site than you, so don&#8217;t take for granted everything, do a checkup yourself</li>
</ul>
<p>Getting the law on your side, will help&#8230;, but it might be to late!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkovi.com/what-happens-when-you-employee-goes-bad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Welcome to ThinkOvi!</title>
		<link>http://www.thinkovi.com/welcome-to-thinkovi/</link>
		<comments>http://www.thinkovi.com/welcome-to-thinkovi/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 21:55:07 +0000</pubDate>
		<dc:creator>Ovidiu</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[joomla!]]></category>
		<category><![CDATA[site move]]></category>
		<category><![CDATA[thinkovi]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.thinkovi.com/?p=9</guid>
		<description><![CDATA[We are offering you the best services to get your website transfered to a new host with minimal downtime and worries.
Please check our Website migration detailed service description, and send us an Inquiry, we will try to respond as soon as possible.
We can also migrate entire servers or applications to new hosting environments, please check [...]]]></description>
			<content:encoded><![CDATA[<p>We are offering you the best services to get your website transfered to a new host with minimal downtime and worries.</p>
<p>Please check our <a title="Website migration" href="http://www.thinkovi.com/services/website-migration/">Website migration</a> detailed service description, and send us an <a title="Move a website Inquiry" href="http://www.thinkovi.com/inquiry/">Inquiry</a>, we will try to respond as soon as possible.</p>
<p>We can also migrate entire servers or applications to new hosting environments, please check our dedicated<a title="Migrate a server" href="http://www.thinkovi.com/services/server-migration/"> Server Migration</a> service description.</p>
<p><strong><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thinkovi.com/welcome-to-thinkovi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
