<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8111623621612599396</id><updated>2024-11-08T07:41:59.822-08:00</updated><category term="copy a file from Linux to Windows"/><category term="automate a task on Linux"/><category term="backup SquirrelMail"/><category term="Automate SquirrelMail Backup on Ubuntu 9.04"/><category term="Linux equivalent of deltree on DOS.automate SquirrelMail Backup on Ubuntu 9.04"/><category term="Multiple RDP Sessions"/><category term="Schedule a task on Windows"/><category term="Ubuntu 12.04"/><category term="automate a task on Windows"/><category term="concurrent RDP Sessions"/><category term="copy a file from Win XP to Ubuntu 9.04"/><category term="copy a file from Windows to Linux"/><category term="copy songs from PC to iPad"/><category term="copy songs from PC to iPhone"/><category term="copy songs from PC to iPod"/><category term="copy songs from iPad to PC"/><category term="copy songs from iPhone to PC"/><category term="copy songs from iPod to PC"/><category term="how to copy a file from Windows to Linux"/><category term="how to schedule a task in Windows"/><category term="how to zip folder in Linux"/><category term="php"/><category term="restore SquirrelMail"/><category term="restore SquirrelMail backup"/><category term="simultaneous RDP Sessions"/><category term="transfer music files from PC to iPad"/><category term="transfer music files from PC to iPhone"/><category term="transfer music files from PC to iPod"/><category term="transfer music files from iPad to PC"/><category term="transfer music files from iPhone to PC"/><category term="transfer music files from iPod to PC"/><category term="zip folder in Linux"/><title type='text'>Tech Tips</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-2395454429186989455</id><published>2016-07-17T23:17:00.000-07:00</published><updated>2016-07-17T23:17:22.264-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="concurrent RDP Sessions"/><category scheme="http://www.blogger.com/atom/ns#" term="Multiple RDP Sessions"/><category scheme="http://www.blogger.com/atom/ns#" term="simultaneous RDP Sessions"/><title type='text'>How to Enable Concurrent/Multiple RDP Sessions in Microsoft Windows 7</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
For our Windows XP users to be able to login to the Navision server, we make use of an intermediate machine on which we have loaded WIN 7 64 bit. The WIN XP users&amp;nbsp; login to the Navision server by loggin in remotely through this WIN 7 64 bit machine.&lt;br /&gt;
&lt;br /&gt;
By default WIN 7 allows for only one login at a time and if another user tries to remotely login to this machine the user already logged in gets logged out.&lt;br /&gt;
&lt;br /&gt;
To allow for concurrent users, the following needs to be done :&lt;br /&gt;
There is a patch that will permit you to patch the Remote Desktop Protocol in Windows 
to permit several concurrent connections without having to mess with the 
registry or manually copying of the patched dll files. You can download this utility &lt;a href=&quot;https://www.box.com/s/wi0i07p5zvx0wr05uojv&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
In order to apply the patch, all you have to do is download the file and unzip it, next run the 
corresponding file as administrator. If you are already logged in as administrator it is fine else right-click the exe file and select
 Run as Administrator. If your WIN 7 is 32-bit you should use 
UniversalTermsrvPatch-x86.exe and if it is 64-bit you should use 
UniversalTermsrvPatch-x64.exe.&lt;br /&gt;
&lt;br /&gt;
We tried this out when our WIN &amp;amp; 64 bit machine was giving a problem.&lt;br /&gt;
It was restarting every now and then and we had changed the RAM but it did not help.&lt;br /&gt;
Now we have put in a new Hard disk after installing WIN 7 (64 bit) and done this enabling of multiple RDP sessions and at least now our users who are on WIN XP machines can login through this into the Navision server.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/2395454429186989455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2016/07/how-to-enable-concurrentmultiple-rdp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/2395454429186989455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/2395454429186989455'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2016/07/how-to-enable-concurrentmultiple-rdp.html' title='How to Enable Concurrent/Multiple RDP Sessions in Microsoft Windows 7'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-407259300487051349</id><published>2014-02-20T03:19:00.000-08:00</published><updated>2014-02-20T03:19:08.808-08:00</updated><title type='text'>dumptoIMAP.pl</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
#!/usr/bin/perl&lt;br /&gt;&lt;br /&gt;#&amp;nbsp; $Header: /mhub4/sources/imap-tools/dumptoIMAP.pl,v 1.4 2012/02/09 15:34:55 rick Exp $&lt;br /&gt;&lt;br /&gt;use Socket;&lt;br /&gt;use IO::Socket;&lt;br /&gt;use FileHandle;&lt;br /&gt;use File::Find;&lt;br /&gt;use Fcntl;&lt;br /&gt;use Getopt::Std;&lt;br /&gt;&lt;br /&gt;init();&lt;br /&gt;&lt;br /&gt;connectToHost($imapHost, \$conn);&lt;br /&gt;unless ( login($imapUser,$imapPwd, $conn) ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Check your username and password&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print STDOUT &quot;Login failed: Check your username and password\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Log(&quot;Copying messages from $dir to $mbx folder on the IMAP server&quot;);&lt;br /&gt;get_messages( $dir, \@msgs );&lt;br /&gt;foreach $_ ( @msgs ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; my $msg; my $date;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;Opening $_&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; unless ( open(F, &quot;&amp;lt;$_&quot;) ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Error opening $_: $!&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;Opened $_ successfully&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; while( &amp;lt;F&amp;gt; ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Reading line $_&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( /^Date: (.+)/ )&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date = $1 unless $date;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date =~ s/\r|\m//g;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chomp $date;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msg .= $_;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; close F;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $size = length( $msg );&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;The message is $size bytes&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;contents of msg file&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;$msg&quot;) if $debug;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $size == 0 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;The message file is empty&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; $copied++ if insertMsg($mbx, \$msg, &#39;&#39;, $date, $conn);&lt;br /&gt;#exit;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $copied/100 == int($copied/100)) { Log(&quot;$copied messages copied &quot;); }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;logout( $conn );&lt;br /&gt;&lt;br /&gt;Log(&quot;Done. $copied messages were copied.&quot;);&lt;br /&gt;exit;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sub init {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( !getopts(&#39;m:L:i:dD:Ix:&#39;) ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usage();&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $mbx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $opt_m;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $dir&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $opt_D;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $logfile&amp;nbsp; = $opt_L;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $extension = $opt_x;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $debug&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1 if $opt_d;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $showIMAP&amp;nbsp; = 1 if $opt_I;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ($imapHost,$imapUser,$imapPwd) = split(/\//, $opt_i);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $logfile ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( ! open (LOG, &quot;&amp;gt;&amp;gt; $logfile&quot;) ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Can&#39;t open logfile $logfile: $!\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $logfile = &#39;&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;Starting&quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Determine whether we have SSL support via openSSL and IO::Socket::SSL&lt;br /&gt;&amp;nbsp;&amp;nbsp; $ssl_installed = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; eval &#39;use IO::Socket::SSL&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $@ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ssl_installed = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sub usage {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print &quot;Usage: dumptoIMAP.pl\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp; -D &amp;lt;path to message files&amp;gt;\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp; -m &amp;lt;name of IMAP mailbox to put messages into&amp;gt;\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp; -i &amp;lt;server/username/password&amp;gt;\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp; [-x &amp;lt;extension&amp;gt; Import only files with this extension\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp; [-L &amp;lt;logfile&amp;gt;]\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp; [-d debug]\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp; [-I log IMAP protocol exchanges]\n&quot;;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub get_messages {&lt;br /&gt;&lt;br /&gt;my $dir&amp;nbsp; = shift;&lt;br /&gt;my $msgs = shift;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Get a list of the message files &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; opendir D, $dir;&lt;br /&gt;&amp;nbsp;&amp;nbsp; my @files = readdir( D );&lt;br /&gt;&amp;nbsp;&amp;nbsp; closedir D;&lt;br /&gt;&amp;nbsp;&amp;nbsp; foreach $_ ( @files ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if /^\./;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $extension ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next unless /$extension$/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push( @$msgs, &quot;$dir/$_&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&amp;nbsp; Print a message to STDOUT and to the logfile if&lt;br /&gt;#&amp;nbsp; the opt_L option is present.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;sub Log {&lt;br /&gt;&lt;br /&gt;my $line = shift;&lt;br /&gt;my $msg;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime (time);&lt;br /&gt;&amp;nbsp;&amp;nbsp; $msg = sprintf (&quot;%.2d-%.2d-%.4d.%.2d:%.2d:%.2d %s&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $mon + 1, $mday, $year + 1900, $hour, $min, $sec, $line);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $logfile ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print LOG &quot;$msg\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; print STDOUT &quot;$line\n&quot;;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&amp;nbsp; connectToHost&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; Make an IMAP connection to a host&lt;br /&gt;# &lt;br /&gt;sub connectToHost {&lt;br /&gt;&lt;br /&gt;my $host = shift;&lt;br /&gt;my $conn = shift;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;Connecting to $host&quot;) if $debug;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $sockaddr = &#39;S n a4 x8&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ($name, $aliases, $proto) = getprotobyname(&#39;tcp&#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; ($host,$port) = split(/:/, $host);&lt;br /&gt;&amp;nbsp;&amp;nbsp; $port = 143 unless $port;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ($host eq &quot;&quot;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;no remote host defined&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; close LOG; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit (1);&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; # We know whether to use SSL for ports 143 and 993.&amp;nbsp; For any&lt;br /&gt;&amp;nbsp;&amp;nbsp; # other ones we&#39;ll have to figure it out.&lt;br /&gt;&amp;nbsp;&amp;nbsp; $mode = sslmode( $host, $port );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $mode eq &#39;SSL&#39; ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unless( $ssl_installed == 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; warn(&quot;You must have openSSL and IO::Socket::SSL installed to use an SSL connection&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;You must have openSSL and IO::Socket::SSL installed to use an SSL connection&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Attempting an SSL connection&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $$conn = IO::Socket::SSL-&amp;gt;new(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Proto&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; &quot;tcp&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSL_verify_mode =&amp;gt; 0x00,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PeerAddr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $host,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PeerPort&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $port,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unless ( $$conn ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $error = IO::Socket::SSL::errstr();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Error connecting to $host: $error&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Non-SSL connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Attempting a non-SSL connection&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $$conn = IO::Socket::INET-&amp;gt;new(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Proto&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; &quot;tcp&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PeerAddr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $host,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PeerPort&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $port,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unless ( $$conn ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Error connecting to $host:$port: $@&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; warn &quot;Error connecting to $host:$port: $@&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; select( $$conn ); $| = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; login in at the IMAP host with the user&#39;s name and password&lt;br /&gt;#&lt;br /&gt;sub login {&lt;br /&gt;&lt;br /&gt;my $user = shift;&lt;br /&gt;my $pwd&amp;nbsp; = shift;&lt;br /&gt;my $conn = shift;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;Logging in as $user&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $rsn = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand ($conn, &quot;$rsn LOGIN $user $pwd&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; while (1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ( $conn );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($response =~ /^$rsn OK/i) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif ($response =~ /NO/) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;unexpected LOGIN response: $response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;Logged in as $user&quot;) if $debug;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#&amp;nbsp; logout&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; log out from the host&lt;br /&gt;#&lt;br /&gt;sub logout {&lt;br /&gt;&lt;br /&gt;my $conn = shift;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ++$lsn;&lt;br /&gt;&amp;nbsp;&amp;nbsp; undef @response;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand ($conn, &quot;$lsn LOGOUT&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; while ( 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ($conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /^$lsn OK/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif ( $response !~ /^\*/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;unexpected LOGOUT response: $response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; close $conn;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&amp;nbsp; readResponse&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; This subroutine reads and formats an IMAP protocol response from an&lt;br /&gt;#&amp;nbsp; IMAP server on a specified connection.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;sub readResponse {&lt;br /&gt;&lt;br /&gt;my $fd = shift;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $response = &amp;lt;$fd&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; chop $response;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $response =~ s/\r//g;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; push (@response,$response);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;&amp;gt;&amp;gt;$response&quot;) if $showIMAP;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; sendCommand&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; This subroutine formats and sends an IMAP protocol command to an&lt;br /&gt;#&amp;nbsp; IMAP server on a specified connection.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;sub sendCommand {&lt;br /&gt;&lt;br /&gt;my $fd = shift;&lt;br /&gt;my $cmd = shift;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $fd &quot;$cmd\r\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;&amp;gt;&amp;gt;$cmd&quot;) if $showIMAP;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; insertMsg&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; Append a message to an IMAP mailbox&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;sub insertMsg {&lt;br /&gt;&lt;br /&gt;my $mbx = shift;&lt;br /&gt;my $message = shift;&lt;br /&gt;my $flags = shift;&lt;br /&gt;my $date&amp;nbsp; = shift;&lt;br /&gt;my $conn&amp;nbsp; = shift;&lt;br /&gt;my ($lsn,$lenx);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;&amp;nbsp;&amp;nbsp; Inserting message&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $lenx = length($$message);&lt;br /&gt;&lt;br /&gt;print STDERR &quot;lenx $lenx\n&quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $debug ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;$$message&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ($date) = split(/\s*\(/, $date);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $date =~ /,/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date =~ /(.+),\s+(.+)\s+(.+)\s+(.+)\s+(.+)\s+(.+)/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date = &quot;$2-$3-$4 $5 $6&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date =~ s/\s/-/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date =~ s/\s/-/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Create the mailbox unless we have already done so&lt;br /&gt;&amp;nbsp;&amp;nbsp; ++$lsn;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ($destMbxs{&quot;$mbx&quot;} eq &#39;&#39;) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sendCommand ($conn, &quot;$lsn CREATE \&quot;$mbx\&quot;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; readResponse ($conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; if ( $response =~ /^$rsn OK/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; elsif ( $response !~ /^\*/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (!($response =~ /already exists|reserved mailbox name/i)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;WARNING: $response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp; $destMbxs{&quot;$mbx&quot;} = &#39;1&#39;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $flags =~ s/\\Recent//i;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $cmd = &quot;1 APPEND \&quot;$mbx\&quot; ($flags) \&quot;$date\&quot; \{$lenx\}\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand ($conn, &quot;1 APPEND \&quot;$mbx\&quot; ($flags) \&quot;$date\&quot; \{$lenx\}&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; readResponse ($conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $response !~ /^\+/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;unexpected APPEND response to $cmd&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push(@errors,&quot;Error appending message to $mbx for $user&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $opt_x ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $conn &quot;$$message\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $conn &quot;$$message\r\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; undef @response;&lt;br /&gt;&amp;nbsp;&amp;nbsp; while ( 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ($conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /^$lsn OK/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif ( $response !~ /^\*/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Log (&quot;unexpected APPEND response: $response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&amp;nbsp; getMsgList&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; Get a list of the user&#39;s messages in the indicated mailbox on&lt;br /&gt;#&amp;nbsp; the IMAP host&lt;br /&gt;#&lt;br /&gt;sub getMsgList {&lt;br /&gt;&lt;br /&gt;my $mailbox = shift;&lt;br /&gt;my $msgs&amp;nbsp;&amp;nbsp;&amp;nbsp; = shift;&lt;br /&gt;my $conn&amp;nbsp;&amp;nbsp;&amp;nbsp; = shift;&lt;br /&gt;my $seen;&lt;br /&gt;my $empty;&lt;br /&gt;my $msgnum;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;Getting list of msgs in $mailbox&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp; trim( *mailbox );&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand ($conn, &quot;$rsn EXAMINE \&quot;$mailbox\&quot;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; undef @response;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $empty=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; while ( 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ( $conn );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ / 0 EXISTS/i ) { $empty=1; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /^$rsn OK/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif ( $response !~ /^\*/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;unexpected response: $response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand ( $conn, &quot;$rsn FETCH 1:* (uid flags internaldate body[header.fields (Message-Id)])&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; undef @response;&lt;br /&gt;&amp;nbsp;&amp;nbsp; while ( 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ( $conn );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /^$rsn OK/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Get a list of the msgs in the mailbox&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;&amp;nbsp;&amp;nbsp; undef @msgs;&lt;br /&gt;&amp;nbsp;&amp;nbsp; undef $flags;&lt;br /&gt;&amp;nbsp;&amp;nbsp; for $i (0 .. $#response) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $seen=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $_ = $response[$i];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; last if /OK FETCH complete/;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response[$i] =~ /FETCH \(UID / ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $response[$i] =~ /\* ([^FETCH \(UID]*)/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $msgnum = $1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($response[$i] =~ /FLAGS/) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Get the list of flags&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $response[$i] =~ /FLAGS \(([^\)]*)/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $flags = $1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $flags =~ s/\\Recent//i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response[$i] =~ /INTERNALDATE ([^\)]*)/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ### $response[$i] =~ /INTERNALDATE (.+) ([^BODY]*)/i; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $response[$i] =~ /INTERNALDATE (.+) BODY/i; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date = $1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date =~ s/&quot;//g;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response[$i] =~ /^Message-Id:/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ($label,$msgid) = split(/: /, $response[$i]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; push (@$msgs,$msgid);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&amp;nbsp; trim&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; remove leading and trailing spaces from a string&lt;br /&gt;sub trim {&lt;br /&gt;&lt;br /&gt;local (*string) = @_;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $string =~ s/^\s+//;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $string =~ s/\s+$//;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub sslmode {&lt;br /&gt;&lt;br /&gt;my $host = shift;&lt;br /&gt;my $port = shift;&lt;br /&gt;my $mode;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Determine whether to make an SSL connection&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; to the host.&amp;nbsp; Return &#39;SSL&#39; if so.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $port == 143 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Standard non-SSL port&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &#39;&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; } elsif ( $port == 993 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Standard SSL port&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &#39;SSL&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; unless ( $ssl_installed ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; We don&#39;t have SSL installed on this machine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &#39;&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; For any other port we need to determine whether it supports SSL&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; my $conn = IO::Socket::SSL-&amp;gt;new(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Proto&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; &quot;tcp&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSL_verify_mode =&amp;gt; 0x00,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PeerAddr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $host,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PeerPort&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $port,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $conn ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; close( $conn );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $mode = &#39;SSL&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $mode = &#39;&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return $mode;&lt;br /&gt;}&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/407259300487051349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2014/02/dumptoimappl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/407259300487051349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/407259300487051349'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2014/02/dumptoimappl.html' title='dumptoIMAP.pl'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-1967710233954406337</id><published>2014-02-20T03:18:00.001-08:00</published><updated>2014-02-20T03:18:10.629-08:00</updated><title type='text'> imapdump.pl</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
#!/usr/bin/perl&lt;br /&gt;&lt;br /&gt;# $Header: /mhub4/sources/imap-tools/imapdump.pl,v 1.12 2011/10/26 15:26:37 rick Exp $&lt;br /&gt;&lt;br /&gt;#######################################################################&lt;br /&gt;#&amp;nbsp;&amp;nbsp; Program name&amp;nbsp;&amp;nbsp;&amp;nbsp; imapdump.pl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp; Written by&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rick Sanders&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp; Date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1/03/2008&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp; Description&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp; imapdump.pl is a utility for extracting all of the mailboxes&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp; and messages in an IMAP user&#39;s account.&amp;nbsp; When supplied with&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # &lt;br /&gt;#&amp;nbsp;&amp;nbsp; host/user/password information and the location of a directory&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp; on the local system imapdump.pl will connect to the IMAP server,&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp; extract each message from the user&#39;s account, and write it to&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp; a file.&amp;nbsp; The result looks something like this:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/backups/INBOX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 2 3 4 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/backups/Drafts&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/backups/Notes/2002&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 2 3 4 5 6 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /var/backups/Notes/2003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 2 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; etc etc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp; imapdump.pl is called like this:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ./imapdump.pl -S host/user/password -f /var/backup&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp; Optional arguments:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp; -d debug&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -I show IMAP protocol exchanges&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -L logfile&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -m mailbox list (dumps only the specified mailboxes, see&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; the usage notes for syntax)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#######################################################################&lt;br /&gt;&lt;br /&gt;use Socket;&lt;br /&gt;use IO::Socket;&lt;br /&gt;use FileHandle;&lt;br /&gt;use Fcntl;&lt;br /&gt;use Getopt::Std;&lt;br /&gt;use File::Path;&lt;br /&gt;&lt;br /&gt;#################################################################&lt;br /&gt;#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Main program.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;#################################################################&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; init();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Get list of all messages on the source host by Message-Id&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;&amp;nbsp;&amp;nbsp; connectToHost($sourceHost, \$conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp; unless ( login($sourceUser,$sourcePwd, $conn) ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Check your username and password&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print STDOUT &quot;Login failed: Check your username and password\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; @mbxs = getMailboxList($sourceUser, $conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp; foreach $mbx ( @mbxs ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Dumping messages in $mbx mailbox&quot;) if $dump_flags;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my @msgs;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $sent_after ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getDatedMsgList( $mbx, $sent_after, \@msgs, $conn, &#39;EXAMINE&#39; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getMsgList( $mbx, \@msgs, $conn, &#39;EXAMINE&#39; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $i = $#msgs + 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;$mbx has $i messages&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $msgnums;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach $msgnum ( @msgs ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ($msgnum) = split(/\|/, $msgnum);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $message = fetchMsg( $msgnum, $mbx, $conn );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mkpath( &quot;$dir/$mbx&quot; ) if !-d &quot;$dir/$mbx&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msgfile = $msgnum;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msgfile .= $extension if $extension;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( !open (M, &quot;&amp;gt;$dir/$mbx/$msgfile&quot;) ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Error opening $dir/$mbx/$msgfile: $!&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;&amp;nbsp;&amp;nbsp; Copying message $msgnum&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print M $message;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; close M;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $added++;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msgnums .= &quot;$msgnum &quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; deleteMsg( $conn, $msgnums, $mbx ) if $remove_msgs; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; expungeMbx( $conn, $mbx )&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if $remove_msgs;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; logout( $conn );&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;$added total messages dumped&quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sub init {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $version = &#39;V1.0&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $os = $ENV{&#39;OS&#39;};&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; processArgs();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ($timeout eq &#39;&#39;) { $timeout = 60; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Open the logFile&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $logfile ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( !open(LOG, &quot;&amp;gt;&amp;gt; $logfile&quot;)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print STDOUT &quot;Can&#39;t open $logfile: $!\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select(LOG); $| = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;\n$0 starting&quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Determine whether we have SSL support via openSSL and IO::Socket::SSL&lt;br /&gt;&amp;nbsp;&amp;nbsp; $ssl_installed = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; eval &#39;use IO::Socket::SSL&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $@ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ssl_installed = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $dump_flags ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Dumping only those messages with one of the following flags: $dump_flags&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; sendCommand&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; This subroutine formats and sends an IMAP protocol command to an&lt;br /&gt;#&amp;nbsp; IMAP server on a specified connection.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;sub sendCommand&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; local($fd) = shift @_;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; local($cmd) = shift @_;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print $fd &quot;$cmd\r\n&quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($showIMAP) { Log (&quot;&amp;gt;&amp;gt; $cmd&quot;,2); }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; readResponse&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; This subroutine reads and formats an IMAP protocol response from an&lt;br /&gt;#&amp;nbsp; IMAP server on a specified connection.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;sub readResponse&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; local($fd) = shift @_;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $response = &amp;lt;$fd&amp;gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; chop $response;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $response =~ s/\r//g;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; push (@response,$response);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($showIMAP) { Log (&quot;&amp;lt;&amp;lt; $response&quot;,2); }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; Log&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; This subroutine formats and writes a log message to STDERR.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;sub Log {&lt;br /&gt;&lt;br /&gt;my $str = shift;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; If a logile has been specified then write the output to it&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Otherwise write it to STDOUT&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $logfile ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($year &amp;lt; 99) { $yr = 2000; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else { $yr = 1900; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $line = sprintf (&quot;%.2d-%.2d-%d.%.2d:%.2d:%.2d %s %s\n&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $mon + 1, $mday, $year + $yr, $hour, $min, $sec,$$,$str);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print LOG &quot;$line&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print STDOUT &quot;$str\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&amp;nbsp; Make a connection to an IMAP host&lt;br /&gt;&lt;br /&gt;sub connectToHost {&lt;br /&gt;&lt;br /&gt;my $host = shift;&lt;br /&gt;my $conn = shift;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;Connecting to $host&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; ($host,$port) = split(/:/, $host);&lt;br /&gt;&amp;nbsp;&amp;nbsp; $port = 143 unless $port;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; # We know whether to use SSL for ports 143 and 993.&amp;nbsp; For any&lt;br /&gt;&amp;nbsp;&amp;nbsp; # other ones we&#39;ll have to figure it out.&lt;br /&gt;&amp;nbsp;&amp;nbsp; $mode = sslmode( $host, $port );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $mode eq &#39;SSL&#39; ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unless( $ssl_installed == 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; warn(&quot;You must have openSSL and IO::Socket::SSL installed to use an SSL connection&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;You must have openSSL and IO::Socket::SSL installed to use an SSL connection&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Attempting an SSL connection&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $$conn = IO::Socket::SSL-&amp;gt;new(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Proto&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; &quot;tcp&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSL_verify_mode =&amp;gt; 0x00,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PeerAddr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $host,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PeerPort&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $port,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unless ( $$conn ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $error = IO::Socket::SSL::errstr();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Error connecting to $host: $error&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Non-SSL connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Attempting a non-SSL connection&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $$conn = IO::Socket::INET-&amp;gt;new(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Proto&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; &quot;tcp&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PeerAddr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $host,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PeerPort&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $port,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unless ( $$conn ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Error connecting to $host:$port: $@&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; warn &quot;Error connecting to $host:$port: $@&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;Connected to $host on port $port&quot;);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub sslmode {&lt;br /&gt;&lt;br /&gt;my $host = shift;&lt;br /&gt;my $port = shift;&lt;br /&gt;my $mode;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Determine whether to make an SSL connection&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; to the host.&amp;nbsp; Return &#39;SSL&#39; if so.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $port == 143 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Standard non-SSL port&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &#39;&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; } elsif ( $port == 993 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Standard SSL port&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &#39;SSL&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; unless ( $ssl_installed ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; We don&#39;t have SSL installed on this machine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return &#39;&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; For any other port we need to determine whether it supports SSL&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; my $conn = IO::Socket::SSL-&amp;gt;new(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Proto&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; &quot;tcp&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SSL_verify_mode =&amp;gt; 0x00,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PeerAddr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $host,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PeerPort&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; $port,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $conn ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; close( $conn );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $mode = &#39;SSL&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $mode = &#39;&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return $mode;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&amp;nbsp; trim&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; remove leading and trailing spaces from a string&lt;br /&gt;sub trim {&lt;br /&gt;&lt;br /&gt;local (*string) = @_;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $string =~ s/^\s+//;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $string =~ s/\s+$//;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#&amp;nbsp; login&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; login in at the source host with the user&#39;s name and password&lt;br /&gt;#&lt;br /&gt;sub login {&lt;br /&gt;&lt;br /&gt;my $user = shift;&lt;br /&gt;my $pwd&amp;nbsp; = shift;&lt;br /&gt;my $conn = shift;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand ($conn, &quot;1 LOGIN $user \&quot;$pwd\&quot;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; while (1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ( $conn );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($response =~ /^1 OK/i) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif ($response =~ /NO/) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;unexpected LOGIN response: $response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;Logged in as $user&quot;) if $debug;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#&amp;nbsp; logout&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; log out from the host&lt;br /&gt;#&lt;br /&gt;sub logout {&lt;br /&gt;&lt;br /&gt;my $conn = shift;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; ++$lsn;&lt;br /&gt;&amp;nbsp;&amp;nbsp; undef @response;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand ($conn, &quot;$lsn LOGOUT&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; while ( 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ($conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /^$lsn OK/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif ( $response !~ /^\*/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;unexpected LOGOUT response: $response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; close $conn;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#&amp;nbsp; getMailboxList&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; get a list of the user&#39;s mailboxes from the source host&lt;br /&gt;#&lt;br /&gt;sub getMailboxList {&lt;br /&gt;&lt;br /&gt;my $user = shift;&lt;br /&gt;my $conn = shift;&lt;br /&gt;my @mbxs;&lt;br /&gt;my @mailboxes;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Get a list of the user&#39;s mailboxes&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;&amp;nbsp; if ( $mbxList ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; The user has supplied a list of mailboxes so only processes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; the ones in that list&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @mbxs = split(/,/, $mbxList);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach $mbx ( @mbxs ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; trim( *mbx );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push( @mailboxes, $mbx );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return @mailboxes;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ($debug) { Log(&quot;Get list of user&#39;s mailboxes&quot;,2); }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand ($conn, &quot;1 LIST \&quot;\&quot; *&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; undef @response;&lt;br /&gt;&amp;nbsp;&amp;nbsp; while ( 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ($conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /^1 OK/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif ( $response !~ /^\*/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;unexpected response: $response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; undef @mbxs;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; for $i (0 .. $#response) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $response[$i] =~ s/\s+/ /;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response[$i] =~ /&quot;$/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $response[$i] =~ /\* LIST \((.*)\) &quot;(.+)&quot; &quot;(.+)&quot;/i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $mbx = $3;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } elsif ( $response[$i] =~ /\* LIST \((.*)\) NIL (.+)/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $mbx= $2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $response[$i] =~ /\* LIST \((.*)\) &quot;(.+)&quot; (.+)/i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $mbx = $3;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $mbx =~ s/^\s+//;&amp;nbsp; $mbx =~ s/\s+$//;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($response[$i] =~ /NOSELECT/i) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ($debug) { Log(&quot;$mbx is set NOSELECT,skip it&quot;,2); }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; next;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (($mbx =~ /^\#/) &amp;amp;&amp;amp; ($user ne &#39;anonymous&#39;)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Skip public mbxs unless we are migrating them&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; next;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($mbx =~ /^\./) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; # Skip mailboxes starting with a dot&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; next;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; push ( @mbxs, $mbx ) if $mbx ne &#39;&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $mbxList ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; The user has supplied a list of mailboxes so only processes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; those&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @mbxs = split(/,/, $mbxList);&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return @mbxs;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&amp;nbsp; getMsgList&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; Get a list of the user&#39;s messages in the indicated mailbox on&lt;br /&gt;#&amp;nbsp; the source host&lt;br /&gt;#&lt;br /&gt;sub getMsgList {&lt;br /&gt;&lt;br /&gt;my $mailbox = shift;&lt;br /&gt;my $msgs&amp;nbsp;&amp;nbsp;&amp;nbsp; = shift;&lt;br /&gt;my $conn&amp;nbsp;&amp;nbsp;&amp;nbsp; = shift;&lt;br /&gt;my $mode&amp;nbsp;&amp;nbsp;&amp;nbsp; = shift;&lt;br /&gt;my $seen;&lt;br /&gt;my $empty;&lt;br /&gt;my $msgnum;&lt;br /&gt;my $from;&lt;br /&gt;my $flags;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $mode = &#39;EXAMINE&#39; unless $mode;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand ($conn, &quot;1 $mode \&quot;$mailbox\&quot;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; undef @response;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $empty=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; while ( 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ( $conn );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ / 0 EXISTS/i ) { $empty=1; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /^1 OK/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif ( $response !~ /^\*/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;unexpected response: $response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand ( $conn, &quot;1 FETCH 1:* (uid flags internaldate body[header.fields (From Date)])&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; undef @response;&lt;br /&gt;&amp;nbsp;&amp;nbsp; while ( 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ( $conn );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /^1 OK/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; last if $response =~ /^1 NO|^1 BAD|^\* BYE/;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; @msgs&amp;nbsp; = ();&lt;br /&gt;&amp;nbsp;&amp;nbsp; $flags = &#39;&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; for $i (0 .. $#response) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; last if $response[$i] =~ /^1 OK FETCH complete/i;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($response[$i] =~ /FLAGS/) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Get the list of flags&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $response[$i] =~ /FLAGS \(([^\)]*)/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $flags = $1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $flags =~ s/\\Recent//;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response[$i] =~ /INTERNALDATE/) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $response[$i] =~ /INTERNALDATE (.+) BODY/i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # $response[$i] =~ /INTERNALDATE &quot;(.+)&quot; BODY/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date = $1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date =~ /&quot;(.+)&quot;/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date = $1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date =~ s/&quot;//g;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # if ( $response[$i] =~ /\* (.+) [^FETCH]/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response[$i] =~ /\* (.+) FETCH/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ($msgnum) = split(/\s+/, $1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $msgnum &amp;amp;&amp;amp; $date ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; push (@$msgs,&quot;$msgnum|$date|$flags&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msgnum = $date = &#39;&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return 1;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#&amp;nbsp; getDatedMsgList&lt;br /&gt;#&lt;br /&gt;#&amp;nbsp; Get a list of the user&#39;s messages in a mailbox on&lt;br /&gt;#&amp;nbsp; the host which were sent after the specified date&lt;br /&gt;#&lt;br /&gt;sub getDatedMsgList {&lt;br /&gt;&lt;br /&gt;my $mailbox = shift;&lt;br /&gt;my $cutoff_date = shift;&lt;br /&gt;my $msgs&amp;nbsp;&amp;nbsp;&amp;nbsp; = shift;&lt;br /&gt;my $conn&amp;nbsp;&amp;nbsp;&amp;nbsp; = shift;&lt;br /&gt;my $oper&amp;nbsp;&amp;nbsp;&amp;nbsp; = shift;&lt;br /&gt;my ($seen, $empty, @list,$msgid);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Get a list of messages sent after the specified date&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Searching for messages after $cutoff_date&quot;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @list&amp;nbsp; = ();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @$msgs = ();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sendCommand ($conn, &quot;1 $oper \&quot;$mailbox\&quot;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ($conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ / EXISTS/i) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $response =~ /\* ([^EXISTS]*)/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Log(&quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; There are $1 messages in $mailbox&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } elsif ( $response =~ /^1 OK/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } elsif ( $response =~ /^1 NO/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;unexpected SELECT response: $response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } elsif ( $response !~ /^\*/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;unexpected SELECT response: $response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my ($date,$ts) = split(/\s+/, $cutoff_date);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Get list of messages sent before the reference date&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Get messages sent after $date&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $nums = &quot;&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sendCommand ($conn, &quot;1 SEARCH SINCE \&quot;$date\&quot;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ($conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /^1 OK/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif ( $response =~ /^\*\s+SEARCH/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ($nums) = ($response =~ /^\*\s+SEARCH\s+(.*)/i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif ( $response !~ /^\*/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;unexpected SEARCH response: $response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;$nums&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $nums eq &quot;&quot; ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $mailbox has no messages sent before $date&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my @number = split(/\s+/, $nums);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $n = $#number + 1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $nums =~ s/\s+/ /g;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @msgList = ();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @msgList = split(/ /, $nums);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($#msgList == -1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; No msgs in this mailbox&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $n = $#msgList + 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;there are $n messages after $sent_after&quot;);&lt;br /&gt;&lt;br /&gt;@$msgs&amp;nbsp; = ();&lt;br /&gt;for $num (@msgList) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sendCommand ( $conn, &quot;1 FETCH $num (uid flags internaldate body[header.fields (Message-Id Date)])&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; undef @response;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ( 1 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse&amp;nbsp;&amp;nbsp; ( $conn );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if&amp;nbsp;&amp;nbsp; ( $response =~ /^1 OK/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; last if $response =~ /^1 NO|^1 BAD|^\* BYE/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $flags = &#39;&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $msgid;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach $_ ( @response ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; last&amp;nbsp;&amp;nbsp; if /^1 OK FETCH complete/i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( /FLAGS/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Get the list of flags&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /FLAGS \(([^\)]*)/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $flags = $1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $flags =~ s/\\Recent//;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( /Message-Id:\s*(.+)/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msgid = $1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( /INTERNALDATE/) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /INTERNALDATE (.+) BODY/i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date = $1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date =~ /&quot;(.+)&quot;/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date = $1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $date =~ s/&quot;//g;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ####&amp;nbsp; next if check_cutoff_date( $date, $cutoff_date );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( /\* (.+) FETCH/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ($msgnum) = split(/\s+/, $1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $msgnum and $date ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; push (@$msgs,&quot;$msgnum|$date|$flags|$msgid&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msgnum=$msgid=$date=$flags=&#39;&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; foreach $_ ( @$msgs ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;getDated found $_&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sub fetchMsg {&lt;br /&gt;&lt;br /&gt;my $msgnum = shift;&lt;br /&gt;my $mbx&amp;nbsp;&amp;nbsp;&amp;nbsp; = shift;&lt;br /&gt;my $conn&amp;nbsp;&amp;nbsp; = shift;&lt;br /&gt;my $message;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;&amp;nbsp;&amp;nbsp; Fetching msg $msgnum...&quot;) if $debug;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand( $conn, &quot;1 FETCH $msgnum (rfc822)&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; while (1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ($conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /^1 OK/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $size = length($message);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif ($response =~ /message number out of range/i) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;Error fetching uid $uid: out of range&quot;,2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $stat=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif ( $response =~ /^1 NO|^1 BAD/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;$response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif ($response =~ /Bogus sequence in FETCH/i) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;Error fetching uid $uid: Bogus sequence in FETCH&quot;,2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $stat=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif ( $response =~ /message could not be processed/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;Message could not be processed, skipping it ($user,msgnum $msgnum,$destMbx)&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; push(@errors,&quot;Message could not be processed, skipping it ($user,msgnum $msgnum,$destMbx)&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $stat=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elsif &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ($response =~ /^\*\s+$msgnum\s+FETCH\s+\(.*RFC822\s+\{[0-9]+\}/i) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ($len) = ($response =~ /^\*\s+$msgnum\s+FETCH\s+\(.*RFC822\s+\{([0-9]+)\}/i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $cc = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $message = &quot;&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while ( $cc &amp;lt; $len ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $n = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $n = read ($conn, $segment, $len - $cc);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $n == 0 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Log (&quot;unable to read $len bytes&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $message .= $segment;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $cc += $n;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return $message;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sub usage {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print STDOUT &quot;usage:\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print STDOUT &quot; imapdump.pl -S Host/User/Password -f &amp;lt;dir&amp;gt;\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print STDOUT &quot; &amp;lt;dir&amp;gt; is the file directory to write the message structure\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print STDOUT &quot; Optional arguments:\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print STDOUT &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -F &amp;lt;flags&amp;gt;&amp;nbsp; (eg dump only messages with specified flags\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print STDOUT &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -d debug\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print STDOUT &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -x &amp;lt;extension&amp;gt;&amp;nbsp; File extension for dumped messages\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print STDOUT &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -r remove messages after dumping them\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print STDOUT &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -L logfile\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print STDOUT &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -m mailbox list (eg \&quot;Inbox, Drafts, Notes\&quot;. Default is all mailboxes)\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; print STDOUT &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -a &amp;lt;DD-MMM-YYYY&amp;gt; copy only messages after this date\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub processArgs {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( !getopts( &quot;dS:L:m:hf:F:Ix:ra:&quot; ) ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usage();&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $opt_S =~ /\\/ ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ($sourceHost, $sourceUser, $sourcePwd) = split(/\\/, $opt_S);&lt;br /&gt;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ($sourceHost, $sourceUser, $sourcePwd) = split(/\//, $opt_S);&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $mbxList = $opt_m;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $logfile = $opt_L;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $dir&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = $opt_f;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $extension&amp;nbsp;&amp;nbsp; = $opt_x;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $dump_flags&amp;nbsp; = $opt_F;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $remove_msgs = 1 if $opt_r;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $debug&amp;nbsp;&amp;nbsp;&amp;nbsp; = 1 if $opt_d;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $showIMAP = 1 if $opt_I;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $sent_after&amp;nbsp; = $opt_a;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( !$dir ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;You must specify the file directory where messages will\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;be written using the -f argument.\n\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; usage();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; validate_date( $sent_after ) if $sent_after;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; mkpath( &quot;$dir&quot; ) if !-d &quot;$dir&quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( !-d $dir ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Fatal Error: $dir does not exist\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $dump_flags ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach my $flag ( split(/,/, $dump_flags) ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $flag = ucfirst( lc($flag) );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $flag = &#39;Seen&#39;&amp;nbsp;&amp;nbsp; if $flag eq &#39;Read&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $flag = &#39;Unseen&#39; if $flag eq &#39;Unread&#39;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $dump_flags{$flag} = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $extension ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $extension = &#39;.&#39; . $extension unless $extension =~ /^\./;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; usage() if $opt_h;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub findMsg {&lt;br /&gt;&lt;br /&gt;my $conn&amp;nbsp; = shift;&lt;br /&gt;my $msgid = shift;&lt;br /&gt;my $mbx&amp;nbsp;&amp;nbsp; = shift;&lt;br /&gt;my $msgnum;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;SELECT $mbx&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand ( $conn, &quot;1 SELECT \&quot;$mbx\&quot;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; while (1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ($conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; last if $response =~ /^1 OK/;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;Search for $msgid&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand ( $conn, &quot;1 SEARCH header Message-Id \&quot;$msgid\&quot;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; while (1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ($conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /\* SEARCH /i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ($dmy, $msgnum) = split(/\* SEARCH /i, $response);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; ($msgnum) = split(/ /, $msgnum);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; last if $response =~ /^1 OK/;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; last if $response =~ /complete/i;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return $msgnum;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub deleteMsg {&lt;br /&gt;&lt;br /&gt;my $conn&amp;nbsp;&amp;nbsp;&amp;nbsp; = shift;&lt;br /&gt;my $msgnums = shift;&lt;br /&gt;my $mbx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = shift;&lt;br /&gt;my $rc;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $msgnums =~ s/\s+$//;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; foreach my $msgnum ( split(/\s+/, $msgnums) ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sendCommand ( $conn, &quot;1 STORE $msgnum +FLAGS (\\Deleted)&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ($conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /^1 OK/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $rc = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Log(&quot;&amp;nbsp;&amp;nbsp; Marked msgnum $msgnum for delete&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /^1 BAD|^1 NO/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Log(&quot;Error setting \\Deleted flag for msg $msgnum: $response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; $rc = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return $rc;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sub expungeMbx {&lt;br /&gt;&lt;br /&gt;my $conn&amp;nbsp; = shift;&lt;br /&gt;my $mbx&amp;nbsp;&amp;nbsp; = shift;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;SELECT $mbx&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand ( $conn, &quot;1 SELECT \&quot;$mbx\&quot;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; while (1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ($conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; last if $response =~ /^1 OK/;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /^1 NO|^1 BAD/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; Log(&quot;Error selecting mailbox $mbx: $response&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; sendCommand ( $conn, &quot;1 EXPUNGE&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; while (1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; readResponse ($conn);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; last if $response =~ /^1 OK/;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $response =~ /^1 BAD|^1 NO/i ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; print &quot;Error expunging messages: $response\n&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; last;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub flags_ok {&lt;br /&gt;&lt;br /&gt;my $flags = shift;&lt;br /&gt;my $ok = 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; If the user has specified that only messages with&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; certain flags be dumped then honor his request.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return 1 unless %dump_flags;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $flags =~ s/\\//g;&lt;br /&gt;&amp;nbsp;&amp;nbsp; Log(&quot;flags $flags&quot;) if $debug;&lt;br /&gt;&amp;nbsp;&amp;nbsp; foreach $flag ( split(/\s+/, $flags) ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $flag = ucfirst( lc($flag) );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ok = 1 if $dump_flags{$flag};&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Special case for Unseen messages for which there isn&#39;t a &lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; standard flag.&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $dump_flags{Unseen} ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Unseen messages should be dumped too.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ok = 1 unless $flags =~ /Seen/;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; return $ok;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;sub validate_date {&lt;br /&gt;&lt;br /&gt;my $date = shift;&lt;br /&gt;my $invalid;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; #&amp;nbsp; Make sure the &quot;after&quot; date is in DD-MMM-YYYY format&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; my ($day,$month,$year) = split(/-/, $date);&lt;br /&gt;&amp;nbsp;&amp;nbsp; $invalid = 1 unless ( $day &amp;gt; 0 and $day &amp;lt; 32 );&lt;br /&gt;&amp;nbsp;&amp;nbsp; $invalid = 1 unless $month =~ /Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec/i;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $invalid = 1 unless $year &amp;gt; 1900 and $year &amp;lt; 2999;&lt;br /&gt;&amp;nbsp;&amp;nbsp; if ( $invalid ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Log(&quot;The &#39;Sent after&#39; date $date must be in DD-MMM-YYYY format&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/1967710233954406337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2014/02/imapdumppl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/1967710233954406337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/1967710233954406337'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2014/02/imapdumppl.html' title=' imapdump.pl'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-8318904342515760595</id><published>2014-01-30T19:26:00.004-08:00</published><updated>2014-01-30T19:45:11.444-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu 12.04"/><title type='text'>How to change the IP address on Linux</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
We already have an Ubuntu 9.04 server which is our email server and we also control sharing of Internet with it. A couple of days back our Dell server failed.So we are trying the installation of Ubuntu 12.04. We had put the same IP address that we normally use for the Linux server but meanwhile we managed to get a machine up with the hard disk from our server which is now down. So we needed to know how to change the IP address on Ubuntu 12.04 to something else now. Run the following commands and it will do the trick.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;sudo su&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;contents &quot;&gt;&lt;b&gt;&lt;span class=&quot;cmd command&quot;&gt;ifconfig eth0 192.168.100.101 netmask 255.255.255.0&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;
&lt;br /&gt;
Run ifconfig to make sure that the change has taken effect.But this is not all.&lt;br /&gt;
Edit the following file using the vi editor and change the IP adress here too.&lt;br /&gt;
&lt;b&gt;vi /etc/network/interfaces&lt;/b&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/8318904342515760595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2014/01/how-to-change-ip-address-on-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/8318904342515760595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/8318904342515760595'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2014/01/how-to-change-ip-address-on-linux.html' title='How to change the IP address on Linux'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-6658010869497342825</id><published>2013-06-18T23:26:00.001-07:00</published><updated>2013-06-18T23:26:37.480-07:00</updated><title type='text'>How to make space in C drive</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Ever faced the situation when you were trying to install some software on your C partition and were not able to do so due to lack of space on the C drive? Sometimes there are a lot of temporary files created by Windows which are not really required and can be deleted. Do the following steps to make space on your C drive:&lt;br /&gt;
Click on Start button.&lt;br /&gt;
Click on Run&lt;br /&gt;
Type %temp% in the text box&lt;br /&gt;
Click on OK button.&lt;br /&gt;
A temp folder opens up.&lt;br /&gt;
Ctrl A to mark all the files.&lt;br /&gt;
Now, press the Delete key on your keyboard.&lt;br /&gt;
Go to your desktop (press the Windows and D keys together)&lt;br /&gt;
Empty recycle bin.&lt;br /&gt;
Check your disk space on the C partition.&lt;br /&gt;
&lt;br /&gt;
Depending on when you last did this, you could clear over 1 GB of disk space for use.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/6658010869497342825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2013/06/how-to-make-space-in-c-drive.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/6658010869497342825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/6658010869497342825'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2013/06/how-to-make-space-in-c-drive.html' title='How to make space in C drive'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-6267319890348132567</id><published>2012-11-25T21:38:00.003-08:00</published><updated>2012-11-25T21:38:42.675-08:00</updated><title type='text'></title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I was getting the following error while loading Front Accounting :&lt;br /&gt;
&quot;OpenSSL PHP extension have to be enabled to use extension repository system.&quot;&lt;br /&gt;
Nothing I tried seemed to work and yes, the openssl line in php.ini was uncommented.&lt;br /&gt;
If I put phpinfo() in a test.php and ran it, it showed me : OpenSSL support + disabled (install ext/openssl)&lt;br /&gt;
&lt;br /&gt;
Finally I copied all the lib*.dll files from PHP folder to the \windows\system32 folder on my Win XP PC. That did the trick!&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/6267319890348132567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/11/i-was-getting-following-error-while.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/6267319890348132567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/6267319890348132567'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/11/i-was-getting-following-error-while.html' title=''/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-53504177475852580</id><published>2012-11-23T01:22:00.002-08:00</published><updated>2012-11-23T01:26:43.225-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>Cannot send session cache limiter - headers already sent</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
If you are getting an error which looks like : &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at&lt;/b&gt;&lt;br /&gt;
or an error which looks like this : &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Cannot modify header information - headers already sent by (output started at &lt;/b&gt;&lt;br /&gt;
do the following: &lt;br /&gt;
Open php.ini from your php folder and change &lt;br /&gt;
&lt;b&gt;output_buffering=off &lt;/b&gt;to &lt;b&gt;output_buffering=4096&lt;/b&gt;&lt;br /&gt;
Then restart your Apache server. &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
The problem gets eliminated.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/53504177475852580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/11/cannot-send-session-cache-limiter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/53504177475852580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/53504177475852580'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/11/cannot-send-session-cache-limiter.html' title='Cannot send session cache limiter - headers already sent'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-4684272893147558821</id><published>2012-03-07T21:55:00.003-08:00</published><updated>2012-03-07T21:57:19.622-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="automate a task on Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Automate SquirrelMail Backup on Ubuntu 9.04"/><category scheme="http://www.blogger.com/atom/ns#" term="how to schedule a task in Windows"/><title type='text'>Automating Task on Linux</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
If you have been looking for a way to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/automating-task-on-linux.html&quot;&gt;Automate a task on Linux&lt;/a&gt;, then this is the place for you. We used this in a bid to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/automating-task-on-linux.html&quot;&gt;Automate SquirrelMail Backup on Ubuntu 9.04&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Open &lt;b&gt;/etc/crontab&lt;/b&gt; and add the following line in it:&lt;br /&gt;
&lt;b&gt;50 08 * * * root /bak&lt;/b&gt;&lt;br /&gt;
This indicates that the executabe file named bak in / will run everyday at 08:50 am&lt;br /&gt;
we created the /bak file to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/how-to-backup-squirrelmail-on-ubuntu.html&quot;&gt;backup IMAP folders in SquirrelMail &lt;/a&gt;on Ubuntu 9.04&lt;br /&gt;
&lt;br /&gt;
To learn how to schedule a task in Windows, click &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/schedule-task-on-windows.html&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/4684272893147558821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/automating-task-on-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/4684272893147558821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/4684272893147558821'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/automating-task-on-linux.html' title='Automating Task on Linux'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-3762112537856027979</id><published>2012-03-07T21:29:00.003-08:00</published><updated>2012-03-07T21:57:51.285-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="automate a task on Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="automate a task on Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="copy a file from Linux to Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="how to copy a file from Windows to Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Schedule a task on Windows"/><title type='text'>Schedule a task on Windows</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
If you are looking to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/schedule-task-on-windows.html&quot;&gt;Schedule a task on Windows&lt;/a&gt; or automate a task on Windows then you have indeed come to the right place. Read on...&lt;br /&gt;
We tried this on Windows XP with SP2:&lt;br /&gt;
&lt;br /&gt;
Click on Start button&lt;br /&gt;
Click on All Programs&lt;br /&gt;
Click on Accessories&lt;br /&gt;
Click on System Tools&lt;br /&gt;
Click on Scheduled Tasks&lt;br /&gt;
Click on File&lt;br /&gt;
Click on New&lt;br /&gt;
Click on Scheduled Task&lt;br /&gt;
Name it what you want to.&lt;br /&gt;
Double click on it.&lt;br /&gt;
Click on Browse and select the program yo would like to run; in our case it was the batch file that we created &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/how-to-copy-file-from-linux-to-windows.html&quot;&gt;here&lt;/a&gt; to copy a file from Linux to Windows.&lt;br /&gt;
Click on the Schedule tab and schedule task as per your needs.&lt;br /&gt;
I used Daily. Set the start time as per your requirement.&lt;br /&gt;
This will automatically carry out the task for you at the predefined time. This way I am able to automatically get the file copied from Ubuntu 9.04 to Windows. Only make sure the WIN XP is on at the predefined time.&lt;br /&gt;
If you might be interested in learning how to copy a file from Windows to Linux, read about it &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/copy-file-from-windows-to-linux.html&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I found this solution in a bid to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/how-to-backup-squirrelmail-on-ubuntu.html&quot;&gt;Backup SquirrelMail on Ubuntu 9.04&lt;/a&gt;. If you want to learn how to automate a task on Linux, check it out &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/automating-task-on-linux.html&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/3762112537856027979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/schedule-task-on-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/3762112537856027979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/3762112537856027979'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/schedule-task-on-windows.html' title='Schedule a task on Windows'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-4656205591706776319</id><published>2012-03-07T20:56:00.000-08:00</published><updated>2012-03-07T21:14:58.901-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="copy a file from Linux to Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux equivalent of deltree on DOS.automate SquirrelMail Backup on Ubuntu 9.04"/><title type='text'>Automating SquirrelMail Backup on Ubuntu 9.04</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
If you are looking to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/automating-squirrelmail-backup-on.html&quot;&gt;automate SquirrelMail Backup on Ubuntu 9.04&lt;/a&gt; or on any other flavor of Linux for that matter, read on...&lt;br /&gt;
&lt;br /&gt;
Create a file called &lt;b&gt;bak &lt;/b&gt;with the following contents and &lt;b&gt;chmod 744 bak &lt;/b&gt;to make it executable.&lt;br /&gt;
&lt;b&gt;rm&amp;nbsp; /backup/*.zip&lt;br /&gt;rm -rf /backup/user_name&lt;br /&gt;/usr/local/imap_tools/imapdump.pl&amp;nbsp; -f /backup/user_name -S localhost/user_name@your_domain/user_password&lt;br /&gt;zip -r /backup/user_name_`date &#39;+%d%m%Y&#39;` /backup/user_name/.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The first line will delete any zipped files existing in the backup folder called backup in this case.&lt;br /&gt;
&lt;br /&gt;
The second line will delete the backup of the IMAP folders that already exist from last time&#39;s backup. This is important since if the user had 20 emails in the last backup and he has thereafter deleted 5 emails that he does not require, the numbers get moved up and he will have 15 emails backed up numbering from 1 to 15 which will overwrite the emails numbered 1 to 15 from the previous backup. But the numbers 16 to 20 will still exist giving the user emails that he did not want and had deleted in case you want to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/restore-squirrelmail-backup.html&quot;&gt;restore SquirrelMail backup&lt;/a&gt;. Hence the deletion of the entire tree structure. The command &lt;b&gt;rm -rf foldername&lt;/b&gt; removes the entire directory tree with all its files and subfolders and files.It is the Linux equivalent of deltree on DOS.&lt;br /&gt;
&lt;br /&gt;
The third line backs up the IMAP folders of user user_name with password user_password on domain your_domain, storing it in folder /backup/user_name.&lt;br /&gt;
&lt;br /&gt;
The fourth line zips the folder contents with subfolders and files creating a file with the username followed by date in DDMMYY format.&lt;br /&gt;
&lt;br /&gt;
Learn how to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/copy-file-from-windows-to-linux.html&quot;&gt;copy a file from Linux to Windows &lt;/a&gt;here. &lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/4656205591706776319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/automating-squirrelmail-backup-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/4656205591706776319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/4656205591706776319'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/automating-squirrelmail-backup-on.html' title='Automating SquirrelMail Backup on Ubuntu 9.04'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-5116412084604575784</id><published>2012-03-07T02:47:00.001-08:00</published><updated>2012-03-07T02:47:43.165-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="backup SquirrelMail"/><category scheme="http://www.blogger.com/atom/ns#" term="restore SquirrelMail backup"/><title type='text'>Restore SquirrelMail Backup</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
If you are looking to  restore SquirrelMail backup, then you can follow the how to here:&lt;br /&gt;
First, copy the backup file from Windows to Linux using the instructions &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/copy-file-from-windows-to-linux.html&quot;&gt;here&lt;/a&gt;. Or if it is already on Linux, you have nothing to worry about.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;cd /backup&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
where backup is the folder where you &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/how-to-backup-squirrelmail-on-ubuntu.html&quot;&gt;backup squirrelmail&lt;/a&gt; and zip it.&lt;br /&gt;
&lt;br /&gt;
Just unzip the zipped file by giving the command:&lt;br /&gt;
&lt;b&gt;unzip zipfilename -d tmp&lt;/b&gt;This will unzip the folders and files under tmp folder.&lt;br /&gt;
&lt;br /&gt;
If you have followed the instructions on &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/how-to-backup-squirrelmail-on-ubuntu.html&quot;&gt;how to Backup SquirrelMail on Ubuntu 9.04&lt;/a&gt; then you will have already copied  &lt;a href=&quot;http://www.athensfbc.com/imap_tools/files/dumptoIMAP.pl&quot;&gt;dumptoIMAP.pl&lt;/a&gt; to /usr/local/imap_tools.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Create a user called test using ISPConfig.&lt;br /&gt;
The following command will restore the INBOX from SquirrelMail to user testuser.&lt;br /&gt;
&lt;b&gt;/usr/local/imap_tools/dumptoIMAP.pl -i localhost/test@genopharma.com/password -L dumptoIMAP.log -D /backup/tmp/backup/username/INBOX -m INBOX&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
You will have to restore each mail folder this way. The following command will restore the Sent folder.&amp;nbsp; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;/usr/local/imap_tools/dumptoIMAP.pl -i 
localhost/test@genopharma.com/password -L dumptoIMAP.log -D 
/backup/tmp/backup/username/INBOX.Sent -m INBOX.Sent&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
You will have to do this for as many mail folders that might exist for that user.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/5116412084604575784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/restore-squirrelmail-backup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/5116412084604575784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/5116412084604575784'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/restore-squirrelmail-backup.html' title='Restore SquirrelMail Backup'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-7940329374659898567</id><published>2012-03-07T02:11:00.002-08:00</published><updated>2012-03-07T20:16:00.203-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="copy a file from Win XP to Ubuntu 9.04"/><title type='text'>Copy a file from Windows to Linux</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
If you are looking to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/copy-file-from-windows-to-linux.html&quot;&gt;copy a file from Win XP to Ubuntu 9.04&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
On your Windows PC, download pscp.exe from &lt;a href=&quot;http://the.earth.li/%7Esgtatham/putty/0.62/x86/pscp.exe&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Suppose you copied the pscp.exe to a folder called linux on D drive and the file you want to transfer from Windows to Linux is bak.zip then the command :&lt;br /&gt;
&lt;b&gt;d:\linux\pscp.exe d:\bak.zip linux_user@linux_ip_address:/windows&lt;/b&gt;&lt;br /&gt;
will copy the d:\bak.zip to a folder called windows under / on Linux.&lt;br /&gt;
&lt;br /&gt;
If you get an error like :&lt;br /&gt;
&lt;b&gt;pscp: unable to open &amp;lt;file name&amp;gt;: permission denied. &lt;/b&gt;&lt;br /&gt;
It means that the linux_user you are looing into the server with does not have write permissions to the specified folder called windows in this case. This folder was probably made by su or at least logged in as sudo su. &lt;br /&gt;
Run the following command logged in as sudo su to eliminate this problem.&lt;br /&gt;
&lt;b&gt;chown &lt;/b&gt;&lt;b&gt; linux_user /windows&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
To learn how to transfer a file from Linux to Windows, click &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/how-to-copy-file-from-linux-to-windows.html&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/7940329374659898567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/copy-file-from-windows-to-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/7940329374659898567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/7940329374659898567'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/copy-file-from-windows-to-linux.html' title='Copy a file from Windows to Linux'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-2804994381175631006</id><published>2012-03-07T01:51:00.002-08:00</published><updated>2012-03-07T02:25:17.393-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="copy a file from Linux to Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="copy a file from Windows to Linux"/><title type='text'>How to copy a file from Linux to Windows</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
If you are looking to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/how-to-copy-file-from-linux-to-windows.html&quot;&gt;copy a file from Linux to Windows&lt;/a&gt;, look no further.&lt;br /&gt;
Download pscp.exe from &lt;a href=&quot;http://the.earth.li/%7Esgtatham/putty/0.62/x86/pscp.exe&quot;&gt;here&lt;/a&gt;. The one I downloaded earlier gave me the error : pscp.exe is not a valid win32 application. Hence, I downloaded it from &lt;a href=&quot;http://the.earth.li/%7Esgtatham/putty/0.62/x86/pscp.exe&quot;&gt;here&lt;/a&gt;.
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
On your Windows PC, create a folder. I created d:\bak on my WIN XP 
PC and copied the pscp.exe there. I also ran a batch file 
called bak.bat which contains:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;pscp.exe -pw users_password user@server_ip_addr:/backup/*.zip d:\bak &lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This will copy all the zip files from the backup folder on your Linux machine to the bak folder in the D drive of your Windows PC. This was tested on a PC running WIN XP.&lt;br /&gt;
&lt;br /&gt;
If you would like to learn how to &lt;b&gt;copy a file from Windows to Linux&lt;/b&gt;, click &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/copy-file-from-windows-to-linux.html&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/2804994381175631006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/how-to-copy-file-from-linux-to-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/2804994381175631006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/2804994381175631006'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/how-to-copy-file-from-linux-to-windows.html' title='How to copy a file from Linux to Windows'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-1593923516949415238</id><published>2012-03-07T01:45:00.001-08:00</published><updated>2012-03-07T02:26:00.429-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="zip folder in Linux"/><title type='text'>Zip folder with subfolders in Linux</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
If you are looking to zip folder in Linux with all its contents including subfolders you can make use of this : &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;zip -r zip_file_name&amp;nbsp; /path_of_folder_with_subfolders&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
For example :&lt;br /&gt;
&lt;b&gt;zip -r backup&amp;nbsp; /backup/user&lt;/b&gt;&lt;br /&gt;
will&amp;nbsp; backup the entire contents of /backup/user including files and subfolders&lt;b&gt; &lt;/b&gt;to a file backup.zip&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/1593923516949415238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/zip-folder-with-subfolders-in-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/1593923516949415238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/1593923516949415238'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/zip-folder-with-subfolders-in-linux.html' title='Zip folder with subfolders in Linux'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-1385461952902138477</id><published>2012-03-07T01:29:00.002-08:00</published><updated>2014-02-20T03:21:02.065-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="backup SquirrelMail"/><category scheme="http://www.blogger.com/atom/ns#" term="copy a file from Linux to Windows"/><category scheme="http://www.blogger.com/atom/ns#" term="how to zip folder in Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="restore SquirrelMail"/><title type='text'>How to Backup SquirrelMail on Ubuntu 9.04</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
If you have been looking for ways to backup SquirrelMail then this is the place for you.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
To start with, I found that the emails are stored one in each file in /var/vmail/our-domain-name/user/cur when read and in /var/vmail/our-domain-name/user/new when unread. I tried to make a test user using ISPConfig and copied the mail folder /var/vmail/our-domain-name/user to /var/vmail/our-domain-name/testuser but I did not get the results that I was looking for. After searching the Net and learning a few things, I have come up with this how-to for other Linux enthusiasts so that they can easily backup SquirrelMail.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
After logging in as sudo su:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
1. Create a folder called imap_tools under /usr/local.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;
2. Download these files to this folder :&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;http://our-tech-tips.blogspot.in/2014/02/imapdumppl.html&quot; target=&quot;_blank&quot;&gt;imapdump.pl&lt;/a&gt; : This is to backup the squirrel mail folders or IMAP folders&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&amp;nbsp;&amp;nbsp; &lt;a href=&quot;http://our-tech-tips.blogspot.in/2014/02/dumptoimappl.html&quot; target=&quot;_blank&quot;&gt;dumptoIMAP.pl&lt;/a&gt; : This is to put the backed up folders back into SquirrelMail if ever the need arises due to a server crash or some such.&amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
3. Create a folder called backup under root (/). You can create one with a different name or in some other location if you wish.&amp;nbsp; &lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
4. &lt;b&gt;/usr/local/imap_tools/imapdump.pl -f /backup/user -S localhost/user@yourdomain/users-passwd&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This command will backup SquirrelMail folders belonging to user to the /backup/user folder. You will have one folder for each mailbox and the emails will be stored therein, one file per e-mail.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
5. &lt;b&gt;zip -r /backup/user_`date &#39;+%d%m%Y&#39;` /backup/user/&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This command will create a file called user_07032012 (if today&#39;s date is 07/03/2012) in the /backup folder by zipping the folders and files under /backup/user. This is your answer if you did not know &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/zip-folder-with-subfolders-in-linux.html&quot;&gt;how to zip a folder with its subfolders in Linux&lt;/a&gt; or how to zip folder recursively on Linux.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
6.&amp;nbsp; Next download pscp.exe from &lt;a href=&quot;http://the.earth.li/%7Esgtatham/putty/0.62/x86/pscp.exe&quot;&gt;here&lt;/a&gt;. The one I downloaded earlier gave me the error : pscp.exe is not a valid win32 application. Hence, I downloaded it from &lt;a href=&quot;http://the.earth.li/%7Esgtatham/putty/0.62/x86/pscp.exe&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
7. On your Windows PC, create a folder. I created d:\sqbak on my WIN XP PC and copied the pscp.exe here. I also created and ran a batch file called sqbak.bat which contains:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;pscp.exe -pw users_password user@server_ip_addr:/backup/*.zip d:\sqbak&amp;nbsp;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This is your answer to copy a file from Linux to Windows. &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
To schedule this task to automatically copy a file from Linux to Windows, you can make use of the Scheduler available in Windows. For more information, click here.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
8. The zipped file will now be backed up from your Linux server onto your Windows PC in d:\sqbak.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
9. To check whether your SquirrelMail backup is authentic or to restore SquirrelMail backup in case of a server crash or when you upgrade to a new server or a later version of Linux.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/1385461952902138477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/how-to-backup-squirrelmail-on-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/1385461952902138477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/1385461952902138477'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/how-to-backup-squirrelmail-on-ubuntu.html' title='How to Backup SquirrelMail on Ubuntu 9.04'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-4084684715622278961</id><published>2012-03-01T23:21:00.001-08:00</published><updated>2012-03-01T23:42:55.561-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="copy songs from PC to iPad"/><category scheme="http://www.blogger.com/atom/ns#" term="copy songs from PC to iPhone"/><category scheme="http://www.blogger.com/atom/ns#" term="copy songs from PC to iPod"/><category scheme="http://www.blogger.com/atom/ns#" term="transfer music files from PC to iPad"/><category scheme="http://www.blogger.com/atom/ns#" term="transfer music files from PC to iPhone"/><category scheme="http://www.blogger.com/atom/ns#" term="transfer music files from PC to iPod"/><title type='text'>Transfer music from PC to iPhone</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Here you will learn how to copy songs from PC to iPhone, copy songs from PC to iPod or copy songs from PC to iPad.&lt;br /&gt;
&lt;br /&gt;
Now that we managed to successfully &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/transfer-music-from-ipod-to-pc.html&quot;&gt;transfer music files from iPod to PC&lt;/a&gt;, we were now asked to transfer the files from PC to iPhone. One can do it using iTunes, but it is always at a risk since the synchronization might happen in the wrong direction and you might be left with your existing files wiped out.&lt;br /&gt;
&lt;br /&gt;
This time we downloaded another software that we got for free, the Copy Trans Suite (Install_CopyTrans_Suite.exe) which we downloaded &lt;a href=&quot;http://www.copytrans.net/bin/Install_CopyTrans_Suite.exe&quot;&gt;here&lt;/a&gt;. This time we used the Apple iPhone A1387 model. However, when we installed the software, it did not detect the iPhone. We did a restart although it didn&#39;t ask us to and thereafter it detected the iPhone as a 4S. We then successfully copied the files from the PC to the iPhone.&lt;br /&gt;
&lt;br /&gt;
You can use this how-to to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/transfer-music-from-pc-to-iphone.html&quot;&gt;transfer music files from PC to  iPad&lt;/a&gt; and also to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/transfer-music-from-pc-to-iphone.html&quot;&gt;transfer music files from PC to iPod&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/4084684715622278961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/transfer-music-from-pc-to-iphone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/4084684715622278961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/4084684715622278961'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/transfer-music-from-pc-to-iphone.html' title='Transfer music from PC to iPhone'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-3977938858643481616</id><published>2012-03-01T23:06:00.000-08:00</published><updated>2012-03-01T23:46:13.105-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="copy songs from iPad to PC"/><category scheme="http://www.blogger.com/atom/ns#" term="copy songs from iPhone to PC"/><category scheme="http://www.blogger.com/atom/ns#" term="copy songs from iPod to PC"/><category scheme="http://www.blogger.com/atom/ns#" term="transfer music files from iPad to PC"/><category scheme="http://www.blogger.com/atom/ns#" term="transfer music files from iPhone to PC"/><category scheme="http://www.blogger.com/atom/ns#" term="transfer music files from iPod to PC"/><title type='text'>Transfer music from iPod to PC</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Here you will learn how to copy songs from iPod to PC, copy songs from iPhone to PC or copy songs from iPad to PC.&lt;br /&gt;
&lt;br /&gt;
If you have been looking to find out how to transfer music files from your iPod to your PC, you have indeed come to the right place. You&amp;nbsp; may use iTunes but this is very risky as if you don&#39;t turn off the synchronizing option, you can lose all your music files from your iPod.&lt;br /&gt;
&lt;br /&gt;
Hence, we looked for something else other than iTunes.We used iPod PC Transfer Suite (ipssetup.exe) which we downloaded &lt;a href=&quot;http://software-files-a.cnet.com/s/software/12/41/26/89/ipssetup.exe?token=1330550875_ae71bb1dbf39bb7e2c401169f6ba7969&amp;amp;lop=link&amp;amp;ptype=3001&amp;amp;ontid=2140&amp;amp;siteId=4&amp;amp;edId=3&amp;amp;spi=1200a49f803ea59b3bf6c7da412e7138&amp;amp;pid=12412689&amp;amp;psid=10920862&amp;amp;&amp;amp;fileName=ipssetup.exe&quot;&gt;here&lt;/a&gt;. This is a software that can be purchased for something like $30. In this free trial, you can save the music files to compute but then you have to click on each one and save manually; you cannot save them all at one shot for which you have to purchase the software. This was a painstaking job considering there were about 150 files on the iPod. But it worked well and safely. We tried this out on an iPod A1288 model.&lt;br /&gt;
&lt;br /&gt;
However, you can use this how-to to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/transfer-music-from-ipod-to-pc.html&quot;&gt;transfer music files from iPhone to PC&lt;/a&gt; and also to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/03/transfer-music-from-ipod-to-pc.html&quot;&gt;transfer music files from iPad to PC&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
Next, we were given the task of transferring these music files from PC to iPhone. Read about it &lt;a href=&quot;http://our-tech-tips.blogspot.in/2012/03/transfer-music-from-pc-to-iphone.html#%21http://our-tech-tips.blogspot.com/2012/03/transfer-music-from-pc-to-iphone.html&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/3977938858643481616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/transfer-music-from-ipod-to-pc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/3977938858643481616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/3977938858643481616'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/03/transfer-music-from-ipod-to-pc.html' title='Transfer music from iPod to PC'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-5946928061551950640</id><published>2012-02-28T01:26:00.002-08:00</published><updated>2012-02-28T01:26:24.809-08:00</updated><title type='text'>WIN 2003 TFTP Password</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
When our diskless nodes stopped booting from the server today, we restarted the server and after that we found that the TFTP service was stopped. (You can learn &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/02/win-2003-diskless-nodes-not-booting.html&quot;&gt;how to restart TFTP service&lt;/a&gt; here). This was the first reboot we had done after changing the administrator password on the WIN 2003 server. When we tried to restart the service, we got the error:&lt;br /&gt;
&lt;b&gt;Could not start the terminal FTP Daemon service on local computer. Error 1069: Service did not start due to login failure.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
At first, we just changed the password back to the old one and got it to work. Read more &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/02/win-2003-diskless-nodes-not-booting.html&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
On playing around some more, we found that the user name and password are stored in the services itself.&lt;br /&gt;
(Click on Start button, click on Administrative tools, click on Services, scroll down till you find Trivial FTP Daemon, double click on it, click on the &quot;Logon&quot; tab and you will find the administrator&amp;nbsp;user name and the password. This is why the service would not start; the &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/02/changing-administrator-password-on-win.html&quot;&gt;administrator password was changed&lt;/a&gt; and it was not changed for this service here. So if you are using TFTP with your WIN 2003 server, make sure you remember to &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/02/changing-administrator-password-on-win.html&quot;&gt;change the WIN 2003 administrator password&lt;/a&gt; in both these places.&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/5946928061551950640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/02/win-2003-tftp-password.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/5946928061551950640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/5946928061551950640'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/02/win-2003-tftp-password.html' title='WIN 2003 TFTP Password'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-9003380089404325631</id><published>2012-02-28T00:00:00.000-08:00</published><updated>2012-02-28T00:00:22.116-08:00</updated><title type='text'>Windows 2003 Password Policy</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
While attempting to change the administrator password on WIN 2003 you might get the fillowing error; in such cases you might need to alter your password policy.&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Error : Windows cannot set the password for &amp;lt;so-and-so user&amp;gt;&amp;nbsp; because: The password does
 not meet the password policy requirements. Check the minimum password 
length, password complexity and password history requirements.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt; &lt;br /&gt;
To relax the Win 2003 password policy or password restrictions we&amp;nbsp; made the necessary changes 
((Click on Start button, click on Administrative tools, click on 
Security Settings, click on Account Policies, click on Password Policy.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;For each of the parameters on the right, double click on each one and uncheck &quot;Define this policy setting&quot;.&lt;br /&gt;
Next go to the command prompt (Click Start button, click on Run and type
 cmd in the window that pops up and click on OK).&lt;br /&gt;
&lt;br /&gt;
Then type&lt;b&gt; gpupdate /force&lt;/b&gt; so that the changes take effect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To return to Windows, type &lt;b&gt;exit&lt;/b&gt; and hit &lt;b&gt;Enter &lt;/b&gt;key.&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/9003380089404325631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/02/windows-2003-password-policy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/9003380089404325631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/9003380089404325631'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/02/windows-2003-password-policy.html' title='Windows 2003 Password Policy'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-6195587573511824016</id><published>2012-02-27T23:54:00.000-08:00</published><updated>2012-02-28T01:08:17.164-08:00</updated><title type='text'>Changing Administrator Password on WIN 2003 Server</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
If you are looking to change the administrator password on WIN 2003 server, do the following:&lt;br /&gt;
Click Start button, 
click on Administrative Tools, click on Active directory Users and 
Computer, Scroll to the bottom on the left, click on Users, click on 
Administrator on the right side right at the top, right click and then 
click on Reset Password.&lt;br /&gt;
&lt;br /&gt;
While changing the password, if you get an error message like the following, see how to resolve it &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/02/windows-2003-password-policy.html&quot;&gt;here&lt;/a&gt;. &lt;br /&gt;
&lt;b&gt;Windows cannot set the password for &amp;lt;so-and-so user&amp;gt;&amp;nbsp; because: The password does
 not meet the password policy requirements. Check the minimum password 
length, password complexity and password history requirements.&lt;/b&gt; &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/6195587573511824016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/02/changing-administrator-password-on-win.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/6195587573511824016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/6195587573511824016'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/02/changing-administrator-password-on-win.html' title='Changing Administrator Password on WIN 2003 Server'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8111623621612599396.post-3614045586145403118</id><published>2012-02-27T23:18:00.001-08:00</published><updated>2012-02-28T01:27:55.862-08:00</updated><title type='text'>WIN 2003 - Diskless nodes not booting</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Today we had a strange problem; the diskless nodes were not booting into our WIN 2003 server. On scrutiny it was found that the TFTP service was not started.&lt;br /&gt;
If you don&#39;t know how to restart the TFTP Daemon service, (Click on Start button, click on Administrative tools, click on Services, scroll down till you find Trivial FTP Daemon, right click on it and click on Start)&lt;br /&gt;
But we got an error like : &lt;b&gt;Could not start the terminal FTP Daemon service on local computer. Error 1069: Service did not start due to login failure.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
We did &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/02/changing-administrator-password-on-win.html&quot;&gt;change the WIN 2003 server password&lt;/a&gt; a few days earlier. Because the error mentioned something about login failure we suspected it might be the new password that was causing the problem so we tried to change the password back. But meanwhile after installing the server we had changed the password policy so we were now getting this error while attempting to change the password back to the old one:&lt;br /&gt;
&lt;b&gt;Windows cannot set the password for &amp;lt;so-and-so user&amp;gt;&amp;nbsp; because: The password does
 not meet the password policy requirements. Check the minimum password 
length, password complexity and password history requirements.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Learn how to relax the password restrictions on WIN 2003 &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/02/windows-2003-password-policy.html&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Now you can change the administrator password. If you don&#39;t know how, click &lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/02/changing-administrator-password-on-win.html&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Now try restarting the TFTP Daemon service.&lt;br /&gt;
&lt;br /&gt;
It worked for us but how it was linked to the old password we still have to find out! Watch out for a later post...&lt;a href=&quot;http://our-tech-tips.blogspot.com/2012/02/win-2003-tftp-password.html&quot;&gt;this one&lt;/a&gt;!&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://our-tech-tips.blogspot.com/feeds/3614045586145403118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://our-tech-tips.blogspot.com/2012/02/win-2003-diskless-nodes-not-booting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/3614045586145403118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8111623621612599396/posts/default/3614045586145403118'/><link rel='alternate' type='text/html' href='http://our-tech-tips.blogspot.com/2012/02/win-2003-diskless-nodes-not-booting.html' title='WIN 2003 - Diskless nodes not booting'/><author><name>marulu</name><uri>http://www.blogger.com/profile/17164496765518895886</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>