<?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: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-827592504967969395</id><updated>2012-02-17T03:15:54.345Z</updated><category term='9.04'/><category term='zoho crm'/><category term='access 2010'/><category term='logs'/><category term='SMB'/><category term='document management'/><category term='grub-install'/><category term='RAID'/><category term='Model'/><category term='business plan'/><category term='freenx'/><category term='astierks-mysql'/><category term='backuppc'/><category term='JetPrint'/><category term='NAS'/><category term='RPM'/><category term='social crm'/><category term='outgoing'/><category term='windows 7'/><category term='firefox'/><category term='zohocrm'/><category term='VPN'/><category term='Trends'/><category term='queuing'/><category term='Haworth'/><category term='e-mail'/><category term='notepad'/><category term='Mac'/><category term='email'/><category term='sip trunks'/><category term='redirect'/><category term='clonezilla'/><category term='cdr'/><category term='disconnect'/><category term='reporting'/><category term='google wave'/><category term='business'/><category term='dovecot'/><category term='CRM'/><category term='mysql'/><category term='webdav'/><category term='dts'/><category term='Data Mining'/><category term='azure'/><category term='pl/sql'/><category term='bespoke'/><category term='policy'/><category term='innovation vouchers'/><category term='FreeBSD'/><category term='cloud'/><category term='OpenLDAP'/><category term='houston'/><category term='olap'/><category term='WOL'/><category term='sub-reporting'/><category term='filter'/><category term='nwda'/><category term='Windows Server'/><category term='asterisk'/><category term='zoho'/><category term='socket'/><category term='permissions'/><category term='shared folders'/><category term='case management'/><category term='patent'/><category term='fridge'/><category term='asterisk-addons'/><category term='fax'/><category term='consumption'/><category term='errors'/><category term='SSAS'/><category term='sqlbits'/><category term='CMS'/><category term='power'/><category term='ssl'/><category term='DMS'/><category term='network'/><category term='dhcp'/><category term='clamav'/><category term='legal software'/><category term='ASP.Net'/><category term='Ash cloud'/><category term='procmail'/><category term='bulk load'/><category term='MBR'/><category term='Printing'/><category term='education'/><category term='exim4'/><category term='skills'/><category term='nuxeo'/><category term='apple'/><category term='hang'/><category term='SQL Server'/><category term='SME'/><category term='backup operators'/><category term='sugarcrm'/><category term='Consulting'/><category term='retail'/><category term='ipad'/><category term='fetchmail'/><category term='dnsmasq'/><category term='sip'/><category term='Alfresco'/><category term='customisation'/><category term='Oracle'/><category term='blackburn college'/><category term='Domain'/><category term='Changegate'/><category term='electricity'/><category term='green'/><category term='GRUB'/><category term='Plone'/><category term='ldap'/><category term='steve jobs'/><category term='knowledgeroot'/><category term='ext4'/><category term='cheap CPU'/><category term='Exim'/><category term='FORALL'/><category term='sp1'/><category term='access'/><category term='Facebook'/><category term='lancashire'/><category term='database'/><category term='apache'/><category term='crash'/><category term='freepbx'/><category term='IPP'/><category term='LAMP'/><category term='SAMBA'/><category term='magic packet'/><category term='vision'/><category term='office'/><category term='boot'/><category term='APIC'/><category term='election'/><category term='cloud computing'/><category term='wake on lan'/><category term='php'/><category term='Karmic Koala'/><category term='IMAP'/><category term='voip'/><category term='ssh'/><category term='backups'/><category term='MS'/><category term='add ons'/><category term='file permissions'/><category term='DM'/><category term='sql azure'/><category term='MFP'/><category term='nat'/><category term='umbraco'/><category term='CUPS'/><category term='pipelining'/><category term='sql'/><category term='servers'/><category term='PDC'/><category term='Linux'/><category term='kernel'/><category term='Sharepoint'/><category term='BI'/><category term='virus'/><category term='microsoft'/><category term='Mobile client'/><category term='LCM'/><category term='Ubuntu'/><category term='iptables'/><category term='virtualisation'/><category term='squirrelmail'/><category term='iax'/><category term='Analysis'/><title type='text'>Salik Rafiq's Linux Diary</title><subtitle type='html'>Salik Rafiq's Technology Blog. Where I discuss technology matters such as Linux, and server issues and fixes. I consolidate many hours of searching into concise solutions.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.chameeya.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default?start-index=26&amp;max-results=25'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>54</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-2352165927887140223</id><published>2011-12-16T11:55:00.000Z</published><updated>2011-12-16T11:59:38.926Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='exim4'/><category scheme='http://www.blogger.com/atom/ns#' term='outgoing'/><category scheme='http://www.blogger.com/atom/ns#' term='filter'/><category scheme='http://www.blogger.com/atom/ns#' term='email'/><category scheme='http://www.blogger.com/atom/ns#' term='Exim'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Saving away outgoing emails in Exim</title><content type='html'>In our office we use internet fax by &lt;a href="http://myfax.com/"&gt;myfax.com&lt;/a&gt;&amp;nbsp;who are simply excellent btw. Stay away from the other guys.&lt;br /&gt;&lt;br /&gt;Incoming faxes are dropped into a common folder via a bit of procmail script in a common user's home folder. This user has shared folder setup, see my other post on setting up shared folders in this way.&lt;br /&gt;&lt;br /&gt;However, from time to time there is a need for staff to see a fax, which has been sent by another&amp;nbsp;colleague. Usually one&amp;nbsp;colleague&amp;nbsp;had to forward the e-mail to the other so they could view it.&lt;br /&gt;&lt;br /&gt;Today, I decided that was a small simple issue that could easily be resolved. We use Exim4 as our e-mail transport. Exim4 is excellent, but I find its documentation a little on the terse side. But I persevered and found two blog entries which helped me out&amp;nbsp;immensely.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://abusedcompetence.com/2011/02/26/how-to-bcc-monitor-both-incoming-and-outgoing-e-mail-on-a-cpanel-server-without-the-affected-party-knowing-it/#comment-76"&gt;first blog&lt;/a&gt;&amp;nbsp;explains how to setup a filter file to&amp;nbsp;truly&amp;nbsp;blind copy all outgoing mail from a user to another user. However for Ubuntu users the file setup mentioned will not work. Ubuntu uses the flat-file configuration to make life simpler for user, and it does! So this &lt;a href="http://davesource.com/Solutions/20100922.Ubuntu-Exim4-reply-to-rewriting.html"&gt;blog&amp;nbsp;&lt;/a&gt;&amp;nbsp;entry sorts it all out for us.&lt;br /&gt;&lt;br /&gt;Now if you'd rather copy it to the shared folder, and your user's have rights you can use the Exim save command documented &lt;a href="http://www.exim.org/exim-html-3.30/doc/html/filter_14.html"&gt;here&lt;/a&gt;. I plopped it through as e-mail and let procmail take care to drop it into the correct box.&lt;br /&gt;&lt;br /&gt;I hope you find this of great use to you and if you have other solutions, feel free to let me know by posting below.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-2352165927887140223?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/2352165927887140223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=2352165927887140223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/2352165927887140223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/2352165927887140223'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2011/12/saving-away-outgoing-emails-in-exim.html' title='Saving away outgoing emails in Exim'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-492864644158959235</id><published>2011-09-18T14:26:00.002+01:00</published><updated>2011-09-22T11:40:02.705+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hang'/><category scheme='http://www.blogger.com/atom/ns#' term='logs'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='crash'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='APIC'/><title type='text'>Random crash of Backup server</title><content type='html'>I have been trying to nail down an issue with my backup server. I thought I had solved it with a boot option of &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;noapic&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; , because the server worked fine after this setup. It booted reliably up each time.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Until yesterday, when it did something that it had done before. That is the NIC seems to turn off all by itself and then the OS sort of hangs. Before this point the server had sent out its e-mails and even started a couple of backups.&amp;nbsp;I'm not able to login at the console, so the only option I have is a power off and then a boot.&lt;br /&gt;&lt;br /&gt;Checking through the logs reveals nothing. DMESG, syslog, messages reveals nothing. No panic, nothing. All I can see is that after sometime backuppc can no longer ping machines and then backuppc soon stops -&amp;nbsp;perhaps because the server is now hung. Pinging the backup server does not work either, so the server really is locked up.&lt;br /&gt;&lt;br /&gt;It is very annoying to say the least. The previous server was rock-solid in this regard. It was extremely slow, but at least it booted and stayed up. This maybe because it had a more modern BIOS than the current unit. Which makes me think I will now have to hunt down a updated BIOS.&lt;br /&gt;&lt;br /&gt;This really is the first Ubuntu/Linux unreliability I have had in over four (4) years of using Linux.&lt;br /&gt;&lt;br /&gt;If anyone has some place to begin, please don't hesitate to comment. I am running Ubuntu 10.04 LTS server edition. Its only purpose is to run Backuppc and this server is woken by WOL each night to start the backup and then shutsdown early morning when all backups are done.&lt;br /&gt;&lt;br /&gt;edit: Just to let you know that this appeared to be a hardware issue and I have switched everything over to the original backup machine. Which is much slower but at least works. I now need to wonder what the problem is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-492864644158959235?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/492864644158959235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=492864644158959235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/492864644158959235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/492864644158959235'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2011/09/random-crash-of-backup-server.html' title='Random crash of Backup server'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-901098870156828896</id><published>2011-08-30T18:28:00.001+01:00</published><updated>2011-08-30T18:30:09.470+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GRUB'/><category scheme='http://www.blogger.com/atom/ns#' term='clonezilla'/><category scheme='http://www.blogger.com/atom/ns#' term='grub-install'/><category scheme='http://www.blogger.com/atom/ns#' term='boot'/><title type='text'>Fixing the CloneZilla GRUB issue</title><content type='html'>Yesterday I wrote how I was experiencing some troubles rebooting a system after using clonezilla to clone the current drive onto a fresh HD. The old drive was 11 years old. It probably could have gone on for a couple mor years, but why take a chance.&lt;br /&gt;&lt;br /&gt;A lot of the "fixes" for this issue are based on the older GRUB and these commands are simply not available in GRUB 2.0. These fixes ask you to use command like&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;find /boot/grub/stage1&lt;br /&gt;boot (hd0,0)&lt;br /&gt;setup hd(0)&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Those are not there in GRUB 2.0&lt;br /&gt;&lt;br /&gt;I managed to fix my issue by getting the machine to boot in a live disk. Well actually I used the older drive as the boot drive and the new drive as the secondary drive. With this setup I mounted the partition where the /boot folder was. In my case it was within the / mount point.&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;mount /dev/sdb1 /mnt&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;And then run the grub-install command as such&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;grub-install --no-floppy --root-directory=/mnt /dev/sdb&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;The process completes and the machine will reboot immediately - meaning that I don't have a chance to shutdown and remove the older drive.&lt;br /&gt;&lt;br /&gt;I got the machine up now, but the NIC was not being recognised. It was odd, the card had power, but a lspci did not list it as a device. A quick reseat of the card solved that issue and my machine was back up.&lt;br /&gt;&lt;br /&gt;I need to keep this notes for the next machine...the NAS, eeek!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-901098870156828896?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/901098870156828896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=901098870156828896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/901098870156828896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/901098870156828896'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2011/08/fixing-clonezilla-grub-issue.html' title='Fixing the CloneZilla GRUB issue'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-8005146416080360563</id><published>2011-08-29T23:37:00.000+01:00</published><updated>2011-08-29T23:37:42.919+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MBR'/><category scheme='http://www.blogger.com/atom/ns#' term='GRUB'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='clonezilla'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='boot'/><title type='text'>Conezilla and GRUB a match</title><content type='html'>The backup server in the office is obviously a quite critical machine. Its the only thing preventing user's from permanently losing their data. The machine was an old machine that I had bought from a charity. I replaced the powesupply and the internal fans and upgrade the NIC and installed a RAID. &lt;br /&gt;&lt;br /&gt;Well I had been checking the drive health by SMART using the LINUX package smartctl. I don't fully understand the statistics in this package but it did look like the drive was wearing and due for a replacement. So I'd heard of &lt;a href="http://clonezilla.org/"&gt;Clonezilla&lt;/a&gt; and thought this was the perfect solution.&lt;br /&gt;&lt;br /&gt;I had a 160GB drive I bought over a year ago for just this purpose. So I installed it and turned off the RAID while I figured things out.&lt;br /&gt;&lt;br /&gt;I fired up clonezilla and went through the steps. I ran into a couple of hitches along the way.&lt;br /&gt;Clonezilla failed to copy one of the partitions because it wasn't clean. I had to fsck that partition and start over.&lt;br /&gt;&lt;br /&gt;The second was that&amp;nbsp;I asked Clonezilla to copy over the GRUB in the MBR - but this also failed as I was still on GRUB 1.x and Clonezilla wanted to put in GRUB 2.0. So on the reboot the machine did not boot. It dumped me into a min-GRUB command line. This didn't have all the commands of the OS version. So I was a bit stuck.&lt;br /&gt;&lt;br /&gt;Now the frustrating bit. Somehow as I was rejigging the cables and devices the machine failed to POST, which was sad indeed. I have a spare but this sad as this machine really had been a workhorse for four years now.&lt;br /&gt;&lt;br /&gt;I now have to use another unused machine (lucky me) to take over the backup duties. I did try the Ubuntu repair-system process but this failed to install GRUB for some reason. Which does worry me a lot. Obviously another way would be to re-install Ubuntu fresh to the disk and clone over the partitions. That would be a last resort.&lt;br /&gt;&lt;br /&gt;Any advice would be most welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-8005146416080360563?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/8005146416080360563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=8005146416080360563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/8005146416080360563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/8005146416080360563'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2011/08/conezilla-and-grub-match.html' title='Conezilla and GRUB a match'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-2464982689335367333</id><published>2011-08-26T11:12:00.000+01:00</published><updated>2011-08-26T11:12:58.513+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='steve jobs'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Is this so long for Steve Jobs?</title><content type='html'>The news this week that the very ill &lt;a href="http://www.thisislondon.co.uk/standard/techandgadgets/article-23980970-steve-jobs-quits-as-apple-chief-executive.do"&gt;Steve Jobs has left Apple&lt;/a&gt; I'm sure caught everyone off guard. However he has been ill for quite some time and had handed over the day-today running of the company long ago. His main contributions were in product ideas and announcements.&lt;br /&gt;&lt;br /&gt;I've grown up with Apple. I used an Apple II+ and Apple IIe in high school and have used their original Macintosh computers in University. I remember how they marketed the Macintoshes as a kind of transportable computer with ads of students carrying them around. I really doubt anyone actually did.&lt;br /&gt;&lt;br /&gt;But the Mac had flaws, its was expensive, there was no way to expand any part of it. If you didn't like the monitor tough, you wanted more memory hmmmm, colour? go away. A radical departure from the Apple II line which was expandable. Its main flaw was a shortage of business applications and when competing with IBM and Microsoft that was a killer. Steve Wozniak (remember him) left Apple over the killing of the Apple II/III line.&lt;br /&gt;&lt;br /&gt;Shortly after that Jobs left, but he shortly reappeared as the founder of NeXT which developed a cube which ran a graphical UNIX OS. Apple was now floundering, with little direction and computers which looked like IBM PC's and still a lack of applications. Apple was bleeding money it had wasted on Newton and the never-ending development of a new OS. Steve Jobs saw his opportunity and convinced Apple to buy NeXT, for its OS, and he was back at the helm of his baby.&lt;br /&gt;&lt;br /&gt;Jobs came back with a new Mac, then spotted the potable MP3 market and selling music online and the rest is history. While Apple's computers are still very much a niche market - I don't really think they sell very many - Apple is more of a desirable gadget company now. I wonder how Woz thinks about that?&lt;br /&gt;&lt;br /&gt;Will Apple still be able to innovate, well surely it wasn't all just down to one man. I certainly hope not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-2464982689335367333?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/2464982689335367333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=2464982689335367333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/2464982689335367333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/2464982689335367333'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2011/08/is-this-so-long-for-steve-jobs.html' title='Is this so long for Steve Jobs?'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-2582215176249185318</id><published>2011-08-19T13:29:00.000+01:00</published><updated>2011-08-19T13:29:33.312+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='backup operators'/><category scheme='http://www.blogger.com/atom/ns#' term='backuppc'/><category scheme='http://www.blogger.com/atom/ns#' term='Domain'/><category scheme='http://www.blogger.com/atom/ns#' term='SAMBA'/><title type='text'>Backuppc+Samba and Backup Operators confusion</title><content type='html'>I have been using the excellent backup server &lt;a href="http://backuppc.sourceforge.net/"&gt;Backuppc&lt;/a&gt;&amp;nbsp;and if you need a network backup facility which can backup Windows, Unix and Linux systems give it a look.&lt;br /&gt;&lt;br /&gt;It does have one flaw in it however and this may catch you out if you get confused by the Backup Operators group.&lt;br /&gt;&lt;br /&gt;On every Windows machine there is a group called Backup Operators which if look at the description says:&lt;br /&gt;&lt;blockquote&gt;Backup Operators can override security restrictions for the sole purpose of backing up or restoring files&lt;/blockquote&gt;So you think to yourself, "Great I can put the backuppc user into that group on the Samba PDC and I'll be able to backup all the files I want".&lt;br /&gt;&lt;br /&gt;Unfortunately it does not work out that way, for two reasons:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The domain Backup Operators can only be used on domain controllers.&lt;/li&gt;&lt;li&gt;Backuppc uses smbclient to connect and not Windows Backup API.&lt;/li&gt;&lt;/ol&gt;A look on technet explains the &lt;a href="http://technet.microsoft.com/en-us/library/cc756898(WS.10).aspx"&gt;privileges&lt;/a&gt; the Backup Operator group has. So putting the backuppc user into the domain Backup Operators group does not give it privileges to backup all the PCs.&lt;br /&gt;&lt;br /&gt;And putting the backuppc user into the Backup Operators group will not solve the problem either because of no. 2. Samba's smbclient will login as a normal user and the OS will use the file system ACLs to determine rights. Those rights to read all files regardless of the ACL permissions applies only when the Windows Backup API is being used.&lt;br /&gt;&lt;br /&gt;So you have two choices really.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Add &amp;nbsp;read, traverse, list folder contents for the Backup Operators group to the files and folders you want the backup to read. And place the backuppc user into the Backup Operators group on the PC.&lt;/li&gt;&lt;li&gt;Use the administrator account&lt;/li&gt;&lt;/ul&gt;The first choice is obviously very tedious and error prone and the second choice has some security risks with it. I chose the latter and I suspect most users will too.&lt;br /&gt;&lt;br /&gt;I have read something about &lt;a href="http://www.zmanda.com/amanda-client-windows.html"&gt;Zmanada's Windows Client&lt;/a&gt; for Amanda but I'm not sure if it uses the Backup API or not and would solve this problem. It is something for me to look into.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-2582215176249185318?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/2582215176249185318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=2582215176249185318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/2582215176249185318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/2582215176249185318'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2011/08/backuppcsamba-and-backup-operators.html' title='Backuppc+Samba and Backup Operators confusion'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-9214731231577673485</id><published>2011-08-13T19:36:00.002+01:00</published><updated>2011-08-16T23:16:24.272+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='backuppc'/><category scheme='http://www.blogger.com/atom/ns#' term='wake on lan'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='WOL'/><category scheme='http://www.blogger.com/atom/ns#' term='magic packet'/><category scheme='http://www.blogger.com/atom/ns#' term='backups'/><title type='text'>Backuppc and waking machines</title><content type='html'>In our office there are 9 machines, all of which are backed up nightly with &lt;a href="http://backuppc.sourceforge.net/"&gt;Backuppc&lt;/a&gt;. However I did often notice that machines did not get backed up, usually because the machine was not turned on. This was becoming a problem and over half of the machines were not being backed up nightly and some had not been done for many weeks. The nagging e-mails that Backuppc sends out were also being ignored as well.&lt;br /&gt;&lt;br /&gt;I needed a way to ensure the machines were on, at least when it was their turn to be backed up. Enter the linux program etherwake. Etherwake sends out a magic packed to a specific machine by it MAC address. Typically machines will not wake when they are pinged, only a specific so-called "magic packet" will wake a machine. &lt;br /&gt;&lt;br /&gt;Backuppc does not however have anything currently builtin which invokes etherwake before attempting to wake it. It also has a habit of doing a nmblookup before backup as well, which will most likely fail if the machine has been off for some time.&lt;br /&gt;&lt;br /&gt;What I did was replace the ping command in backuppc with a bash shell script and disable the nmblookup. Here's how I did it.&lt;br /&gt;&lt;br /&gt;First write a script in bash and place where you like. It will be someplace where the backuppc user will have rights to access to it. I put the script in the backuppc user's home.&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;#this script is totally designed for the backuppc ping command&lt;br /&gt;#which is the first thing it does before it starts a backup&lt;br /&gt;#this is a substitute which pings the machine, if it is not&lt;br /&gt;#awake then it wakes it using a magic packet - using the wol.bsh script&lt;br /&gt;#then pings again to make sure&lt;br /&gt;&lt;br /&gt;PING=/bin/ping&lt;br /&gt;ARG1=$1&lt;br /&gt;ARG2=$2&lt;br /&gt;WAKEHOST=$3&lt;br /&gt;ETHWAKE=/usr/sbin/etherwake&lt;br /&gt;SLEEPTIME=3m&lt;br /&gt;&lt;br /&gt;logger "Backuppc pinging  $1 $2 $3"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function fwol {&lt;br /&gt;        TO_WAKEUP=$1&lt;br /&gt;        sudo $ETHWAKE $1&lt;br /&gt;        if [ $? -eq 0 ]&lt;br /&gt;        then&lt;br /&gt;           WOL_RES="OK"&lt;br /&gt;        else&lt;br /&gt;           WOL_RES="FAIL"&lt;br /&gt;        fi&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$PING $ARG1 $ARG2 $WAKEHOST &amp;gt;&amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;&lt;br /&gt;if [ $? -ne 0 ]; then&lt;br /&gt;        fwol $WAKEHOST&lt;br /&gt;        if [ "$WOL_RES" = "FAIL" ]; then&lt;br /&gt;                exit 1&lt;br /&gt;        fi&lt;br /&gt;        sleep $SLEEPTIME&lt;br /&gt;        $PING $ARG1 $ARG2 $WAKEHOST&lt;br /&gt;        if [ $? -eq 0 ]&lt;br /&gt;        then&lt;br /&gt;           logger "success waking $WAKEHOST."&lt;br /&gt;        else&lt;br /&gt;           logger "unable to wake $WAKEHOST."&lt;br /&gt;           exit 1&lt;br /&gt;        fi&lt;br /&gt;else&lt;br /&gt;   $PING $ARG1 $ARG2 $WAKEHOST&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;exit 0&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;I saved this a wolping.bsh. Essentially this first checks if the machine is up by pinging it. If it does respond then it simply drops out and pings again. Otherwise it invokes etherwake, waits for three minutes and then ping again. Note that in the backuppc code it will invoke the ping command twice, the first time as a wakeup and second the check the roundtrip time. Which is why I first send the ping to /dev/null and then ping again, I don't want the first output read by backuppc.&lt;br /&gt;&lt;br /&gt;Now in backuppc in the server config, you will need to do the following:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Set &lt;span style="color: black;"&gt;&lt;strong&gt;PingPath &lt;/strong&gt;&lt;/span&gt;to the path to where you saved the script above&lt;/li&gt;&lt;li&gt;Set &lt;strong&gt;NmbLookupFindHostCmd&lt;/strong&gt; on Backup Settings to blank&lt;/li&gt;&lt;/ul&gt;Removing the NmbLookup will disable this "feature" and prevent backuppc from reporting the machine down before it wakes up.&lt;br /&gt;&lt;br /&gt;That's it for the backuppc configuration. There is one last item which is needed. Remember etherwake only understands MAC addresses, but backuppc is invoking our script with a host name. So how can you make a host name to a MAC address?&lt;br /&gt;&lt;br /&gt;Etherwake will search a /etc/ethers file when it is given a host name. So create one, you'll need to obtain the MAC addresses of all the machines you want to respond and add them into a ethers file as MAC hostname pairs, similar to a hosts file, eg:&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;00:3B:56:89:1A:22&amp;nbsp;&amp;nbsp; myhost&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;And that's all there is to it. I now even have the backup server woken up by the router when needed. There is no reason to have any more machines on than necessary.&lt;br /&gt;&lt;br /&gt;Next post I'll get into how you set this up on Linux and Windows to respond to these WOL/magic packet requests.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-9214731231577673485?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/9214731231577673485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=9214731231577673485' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/9214731231577673485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/9214731231577673485'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2011/08/backuppc-and-waking-machines.html' title='Backuppc and waking machines'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-7694439975182613386</id><published>2011-07-29T22:31:00.001+01:00</published><updated>2011-07-29T22:33:57.365+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='webdav'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='sp1'/><title type='text'>Webdav "improvements" in Win7 SP1</title><content type='html'>I previously wrote about the problems I have had using webdav in Windows 7 to my webdav server. If you haven't read it follow this &lt;a href="http://blog.chameeya.com/2010/09/windows-7-webdav-and-basic.html"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Essentialy using the Window 7 webDAV client to a server using basic authentication over SSL did not work. No matter how hard you tried.&lt;br /&gt;&lt;br /&gt;This situation has only been slight rectified in Win7 SP1, but with other issues. When I tried to create the drive mapping to the server I get some real weirdness.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;When the mapping is created I get an error that the mapping already exists, which is very weird. A look under &lt;strong&gt;My Computer&lt;/strong&gt; reveals three identical links have been created.&lt;/li&gt;&lt;li&gt;Using one of the links does connect to the server and I can see the folders and files. But I cannot navigate through the folders, nor can I open and of the files! Which makes it quite useless.&lt;/li&gt;&lt;/ol&gt;I have attempted to look for a solution to this issue, but nothing has turned up so. Its entirely possible that I'm the only one encountering this problem. For the moment I'll still keep using the 3rd party client I have been using for the past year.&lt;br /&gt;&lt;br /&gt;Anyone with a solution please feel free to comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-7694439975182613386?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/7694439975182613386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=7694439975182613386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/7694439975182613386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/7694439975182613386'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2011/07/webdav-improvements-in-win7-sp1.html' title='Webdav &quot;improvements&quot; in Win7 SP1'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-5117423234711609575</id><published>2011-05-16T12:52:00.000+01:00</published><updated>2011-05-16T12:52:04.748+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bespoke'/><category scheme='http://www.blogger.com/atom/ns#' term='vision'/><category scheme='http://www.blogger.com/atom/ns#' term='business plan'/><category scheme='http://www.blogger.com/atom/ns#' term='zohocrm'/><category scheme='http://www.blogger.com/atom/ns#' term='sugarcrm'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='customisation'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Thinking of the CRM future.</title><content type='html'>To be honest business really has fallen flat here at Chameeya. I've no one to blame but myself really. That's one of the Botty Rules:&lt;br /&gt;&lt;blockquote&gt;As a business owner I am 100% responsible for everything.&lt;/blockquote&gt;It seems the database programmer market really has fallen through the floor. This may be because businesses are cutting back on development budgets and/or shifting work to other areas such as Eastern Europe or South Asia.&lt;br /&gt;&lt;br /&gt;So rather than put my head in my hands...well okay so I have done that. I am looking for new opportunities. As I look around I can see that eCommerce, Website, CRM and web applications are still in demand. In fact finding people with good PHP, Drupal, Wordpress skills are in high demand. I have known from my mentor that small businesses need help with CRM and contacting and maintaining contact with their businesses.&lt;br /&gt;&lt;br /&gt;I've begun thinking that learning PHP and a package like SugarCRM or ZohoCRM might be worthwhile. I would still need to market it however. Really marketing is my week point. The rate at which I blog probably gives you an idea how bad I am! I'm still in the database area, CRM's rely heavily on databases, and its still programming. Customers will need customisation and that's where my programming skills come into play. And they will need&amp;nbsp;maintenance&amp;nbsp;contracts. Smaller customers can use an Access system, and larger customers can use a in-house or hosted SugarCRM system.&lt;br /&gt;&lt;br /&gt;And when you think about it, businesses really need to keep in touch with contacts and customers more than ever now. Now is the time when they need a CRM more than anyone else.&lt;br /&gt;&lt;br /&gt;Does this sound like a good vision of the future. I'm seriously asking for advice. seriously.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-5117423234711609575?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/5117423234711609575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=5117423234711609575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/5117423234711609575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/5117423234711609575'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2011/05/thinking-of-crm-future.html' title='Thinking of the CRM future.'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-761526551567296949</id><published>2010-12-02T14:24:00.000Z</published><updated>2010-12-02T14:24:41.267Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='power'/><category scheme='http://www.blogger.com/atom/ns#' term='consumption'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualisation'/><category scheme='http://www.blogger.com/atom/ns#' term='electricity'/><category scheme='http://www.blogger.com/atom/ns#' term='green'/><title type='text'>Why server virtualisation is important</title><content type='html'>The other day our electricity bill arrived and uh, well it was quite large. It quite shocked us. And it also showed us that we were using a lot more power than we were last year. I began to think what had changed which so increased our power consumption over the last year.&lt;br /&gt;&lt;br /&gt;In the past year I had just started to leave the servers, all five of them, on 24/7. I am hypothesising that that is the difference. I don't have a energy meter on each server but some have 4 fans and five hard disks. In theory they should spin down over time, but whenever I've checked it hasn't happened. And with a small office the servers are only utilized 25% of time, max.&lt;br /&gt;&lt;br /&gt;So now I have begun a crusade to reduce our power consumption. I've already shutdown the Asterisk server and have all phones going direct to the VOIP provider. I have shutdown the Windows server which hadn't been used in two months. I moved services from the backup server to the NAS server. I configured the backup server to turn off at 8am everyday - I just have to remember to turn it on before I go.&lt;br /&gt;&lt;br /&gt;Now I need to move services from my webmail server to the NAS machine. That will make one machine responsible for DNS, DHCP, LDAP, Samba, e-mail, IMAP, WEBDAV and Squirrel mail.&lt;br /&gt;&lt;br /&gt;When I need a server turned on, to do Oracle or Umbraco or SQL Server testing, then I'll just turn it on when needed. I don't know what possessed me to build so many servers...no real use is it? This is why virtualisation is so important. Under utilised machines now become utilized and less servers means less power.&lt;br /&gt;&lt;br /&gt;Glad I thought of it! (lol) Just being cheeky.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-761526551567296949?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/761526551567296949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=761526551567296949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/761526551567296949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/761526551567296949'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/12/why-server-virtualisation-is-important.html' title='Why server virtualisation is important'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-6384731675925461405</id><published>2010-10-22T13:55:00.001+01:00</published><updated>2010-10-22T14:00:44.674+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='zoho'/><category scheme='http://www.blogger.com/atom/ns#' term='zoho crm'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><category scheme='http://www.blogger.com/atom/ns#' term='access 2010'/><title type='text'>CRMs and just the basics please</title><content type='html'>I've been speaking with my mentor last week about the work I do. Mainly it was about straightening out my&amp;nbsp;skill set&amp;nbsp;towards the market needs. As I market towards small business, it really is important to leave all the techno-lingo out of the marketing. That works fine for larger consulting houses who are looking for help - ie: a contractor. But it doesn't work for a small businessman who knows nothing about technology. They just want something to solve their need.&lt;br /&gt;&lt;br /&gt;Lately I've been doing more and more simple systems in Access - mainly with CRM capabilities. Access is perfect for a single man shop. There is no installation requirement, it can use the Access runtime component. And as long as you don't need it to integrate with e-mail, its works a charm. Plus it can be extended to do so many other things.&lt;br /&gt;&lt;br /&gt;For the web one can go and get ZOHO CRM which is a very simple system with basic customisability. And free for first three users and reasonable charges there after. Plus a developer can addon any forms and other customisation. This is a new avenue for Chameeya. It still uses a database in the back - so we utilise our database programming skills - and a UI - so we utilise our UI skills.&lt;br /&gt;&lt;br /&gt;So many websites go on an on about technology - and I'm no different. This is probably because we are essentially geeks and think (or expect) everyone else to have an understanding of computers. Time for me to update and simplify the website.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-6384731675925461405?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/6384731675925461405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=6384731675925461405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/6384731675925461405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/6384731675925461405'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/10/crms-and-just-basics-please.html' title='CRMs and just the basics please'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-5722378708994718973</id><published>2010-10-19T11:21:00.000+01:00</published><updated>2010-10-19T11:21:54.473+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VPN'/><category scheme='http://www.blogger.com/atom/ns#' term='cheap CPU'/><category scheme='http://www.blogger.com/atom/ns#' term='azure'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='sql azure'/><title type='text'>My take on the Cloud (pt1)</title><content type='html'>The Cloud. You knew I eventually had to get there didn't you? What is all this hubub about the "Cloud". Well I'll try and explain what I think, without creating yet another definition. I think there are about 68 definitions now. Well According to &lt;a href="http://www.youtube.com/watch?v=okqLxzWS5R4"&gt;Simon Wardley&lt;/a&gt; there are.&lt;br /&gt;&lt;br /&gt;The Cloud is the next step in the gradual evolution of computer services from innovative tool to commodity. These days hardware is relatively cheap. CPU cycles are relatively cheap. Gone are the days when computers were only used by wizards with special hats. Now anyone has access to CPU cycles, and for cheap.&lt;br /&gt;&lt;br /&gt;Will we all end up eventually using the Cloud, whether we know it or not? I think that is eventually the end game. &amp;nbsp;We'll have small local physical hardware with virtual desktops. The software is there now to do it. We're just waiting for the infrastructure to do it. The average connection speed in the UK is so slow it makes something like that undoable.&lt;br /&gt;&lt;br /&gt;Currently we'll just have to put up with browser-based apps with about 75% functionality of the desktop apps. Developers will use Clouds for development. Teams will be dispersed around the world and VPNs will die a most honourable death.&lt;br /&gt;&lt;br /&gt;We here at Chameeya have embraced this concept by signing up with &lt;a href="http://www.microsoft.com/windowsazure/"&gt;Azure &lt;/a&gt;and SQL Azure. We see this as the way forward. Particularily for small firms which can now offer big iron when needed and no iron when not. Azure is a wonderful platform and its right that Microsoft has "bet their company on it". Though I don't think they have....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-5722378708994718973?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/5722378708994718973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=5722378708994718973' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/5722378708994718973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/5722378708994718973'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/10/my-take-on-cloud-pt1.html' title='My take on the Cloud (pt1)'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-7417454970778482893</id><published>2010-10-15T12:49:00.000+01:00</published><updated>2010-10-15T12:49:46.398+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shared folders'/><category scheme='http://www.blogger.com/atom/ns#' term='e-mail'/><category scheme='http://www.blogger.com/atom/ns#' term='dovecot'/><category scheme='http://www.blogger.com/atom/ns#' term='file permissions'/><category scheme='http://www.blogger.com/atom/ns#' term='errors'/><category scheme='http://www.blogger.com/atom/ns#' term='IMAP'/><title type='text'>Finally think I've got Dovecot sorted (I think!)</title><content type='html'>In the last blog I wrote on - at some length I might add - about setting up public shared folders in Dovecot and about just how hard that is! There are some annoyances with Dovecot, but that's the evolution of something free (the old "you get what you pay for" line). I haven't tried &lt;a href="http://wiki2.dovecot.org/FrontPage"&gt;Dovecot 2.0&lt;/a&gt; yet. Perhaps in 18 months when the next LTS of Ubuntu is available I'll get there.&lt;br /&gt;&lt;br /&gt;After getting the basics of the configuration working I set out to start using and testing the setup. What I found initially is that Dovecot will use the root folder permissions as the permissions for manipulating files. This is particularily problematic when sharing folders as typically you need to enable group permissions. Eg:&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;rwx-----  user  mail  .&lt;br /&gt;rwxrwx--  user  Pubmail .&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;In the dovecot error log, or just in mail.err, you'll see plenty of informative error messages about fchown, dotlock etc.. and in there will be information about the group being used Eg:&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;dovecot: IMAP(infocss): fchown(/home/infocss/Mail/subscriptions.lock, -1, 8(mail)) failed: Operation not permitted (egid=513(Domain Users), group based on /home/infocss/Mail)&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;In this case you can see that it used the permissions of the group to perform the operation and this failed. That group doesn't have the permissions - from Dovecot - to perform that operation.&lt;br /&gt;&lt;br /&gt;The only way I have found to "fix" this is to allow additional groups to have privileged permissions within Dovecot. This is in addition to the group permissions you need on the files - though I must add that I haven't tried reducing the file permissions. I'm afraid of breaking something that works!&lt;br /&gt;&lt;br /&gt;To do this you need to modify a line in the config file, as described in the &lt;a href="http://wiki.dovecot.org/SharedMailboxes/Permissions"&gt;Dovecot Wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;...&lt;br /&gt;mail_access_groups = Group1,Group2&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;The wiki, while telling you that you can have multiple groups here, doesn't tell you whether the line is comma delimiter or space delimited. It is comma delimited.&lt;br /&gt;&lt;br /&gt;That should get your public shared boxes working. Though I still wonder how this setup will work with use shared boxes. I still had tremendous problems with that.&lt;br /&gt;&lt;br /&gt;In the last post I pondered about the ACL and how group will work there. Dovecot only really recognises a user's primary group but not supplementary ones. The "workaround" to this, and to get ACLs really working is to use Post Login Scripting. This is thankfully explained &lt;a href="http://wiki.dovecot.org/PostLoginScripting"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I haven't tried this. Presumably the script can be put in an appropriate place - /usr/local/bin ??&lt;br /&gt;&lt;br /&gt;The guys at &lt;a href="http://www.chameeya.com/landg/hireme01.htm"&gt;Chameeya &lt;/a&gt;now have full access to the info e-mail box to answer and respond to customer enquiries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-7417454970778482893?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/7417454970778482893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=7417454970778482893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/7417454970778482893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/7417454970778482893'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/10/finally-think-ive-got-dovecot-sorted-i.html' title='Finally think I&apos;ve got Dovecot sorted (I think!)'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-1958492046782852709</id><published>2010-10-11T16:48:00.002+01:00</published><updated>2011-08-16T23:11:28.899+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shared folders'/><category scheme='http://www.blogger.com/atom/ns#' term='permissions'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='e-mail'/><category scheme='http://www.blogger.com/atom/ns#' term='dovecot'/><category scheme='http://www.blogger.com/atom/ns#' term='IMAP'/><title type='text'>Shared folders in dovecot (aka how to hide useful information)</title><content type='html'>Along with the installation of squirrelmail in the office it became inconvenient for people to monitor the public e-mail addresses of the business. You know the info@companyname.com and support@companyname.com through the web interface. The user would have to log out and then in with the shared account - annoying.&lt;br /&gt;&lt;br /&gt;In most IMAP systems where is a way to implement shared folders so user's can stored documents or monitor public e-mail accounts. For example you have a public support or sales account and you'd like the entire team or company access to these e-mails.&lt;br /&gt;&lt;br /&gt;I use dovecot IMAP server v 1.2.9 which came with Ubuntu 10.04. The latest version is 2.0 but Ubuntu 10.04 is not using it yet. These instructions&amp;nbsp;&lt;i&gt;may&lt;/i&gt;&amp;nbsp;apply to 1.2+ but you'd be best going to the &lt;a href="http://wiki2.dovecot.org/"&gt;dovecot wiki&lt;/a&gt; instead. As well I tried the shared folders setup but I had all sorts of permissions issues and one issue with the shared dict file which I could not resolve so I gave up. I assume it is a bug.&lt;br /&gt;&lt;br /&gt;Firstly I am sharing a user's account e-mail and as stated above. This would have been the right way to do this, but I could not get it work.&lt;br /&gt;&lt;br /&gt;First make a backup of the dovecot.conf file&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;cd /etc/dovecot&lt;br /&gt;cp dovecot.conf dovecot.conf.bak&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Then open the dovecot.conf file using your favorite editor and scroll down to find the following section&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;# REMEMBER: If you add any namespaces, the default namespace must be added&lt;br /&gt;# explicitly, ie. mail_location does nothing unless you have a namespace&lt;br /&gt;# without a location setting. Default namespace is simply done by having a&lt;br /&gt;# namespace with empty prefix.&lt;br /&gt;#namespace private {&lt;br /&gt;# Hierarchy separator to use. You should use the same separator for all&lt;br /&gt;# namespaces or some clients get confused. '/' is usually a good one.&lt;br /&gt;# The default however depends on the underlying mail storage format.&lt;br /&gt;#separator =&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;This is the default in dovecot, there is no namespaces at all. To implement a public (or shared) namespace, you will &lt;b&gt;NEED&lt;/b&gt; to implement the private namespace. To do this uncomment the appropriate lines so that the following are set:&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;namespace private {&lt;br /&gt;separator = /&lt;br /&gt;prefix = &lt;br /&gt;inbox = yes&lt;br /&gt;subscriptions = yes&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Don't worry about the commented lines. Leave them in there, these are the only lines you need to change.&lt;br /&gt;&lt;br /&gt;Now you need to add in the public namespace for the public folders to sit &lt;u&gt;underneath&lt;/u&gt;. Note that I couldn't get this work directly to a e-mail folder. I'll get into what I did below along with the messy filesystem permissions and ACLs.&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;namespace public {&lt;br /&gt;separator = /&lt;br /&gt;prefix = Public/&lt;br /&gt;location = maildir:/var/mail/Public&lt;br /&gt;subscriptions = no&lt;br /&gt;hidden = no&lt;br /&gt;list = children&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;So this is a public namespace, the choices are private, shared and public. The separator, for subscriptions and e-mail clients is '/' which is the most common. In the subscriptions list the prefix for this mail boxes is 'Public'. The public folder is located at /var/mail/Public. The subscriptions are handled by the 'parent' namespace ie: the user's subscription list. This is probably what you want. And the Public folder is only listed if there are folders underneath being shared. Note that the actual path /var/mail/Public is just a container for the maildir folders underneath. The &lt;a href="http://wiki.dovecot.org/SharedMailboxes/Public"&gt;wiki for dovecot&lt;/a&gt; give more information on your choices here.&lt;br /&gt;&lt;br /&gt;Then you'll need to add in two more lines to enable the ACL which will allow you to restrict/enable access to the shared mailboxes to the specific users you want.&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;protocol imap {&lt;br /&gt;...&lt;br /&gt;mail_plugins = acl imap_acl&lt;br /&gt;}&lt;br /&gt;...&lt;br /&gt;plugin {&lt;br /&gt;...&lt;br /&gt;acl = vfile&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Now things are setup in the imap server, but don't restart it yet! Now we need to get the filesystem and acl files right. &lt;br /&gt;&lt;br /&gt;I then create the folder and shared subfolders.&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;cd /var/mail&lt;br /&gt;mkdir Public&lt;br /&gt;chgrp mail Public&lt;br /&gt;touch dovecot-acl&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;I then symlink in the maildir folder I want users to have access to. I did this because the account already existed and I didn't want to effect any symlinks in the system pointing (and delivering e-mail) to this folder.&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;ln -s infobox ./Public/.info&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Now I need to give users access the Public folder - but not yet the subfolders. The wiki misses some important points here. Firstly you need to allow users to read/list the public folder. I do this by editing the dovecot-acl file and allowing anyone read access&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;cd Public&lt;br /&gt;nano dovecot-acl&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;add the following line&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;anyone lr&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;You need the put the same file in the maildir folders (not the cur/new/tmp folders) and any subfolders you want users to access. The wiki gives good explanation of what goes in the acl mine looked like&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;user=me keilrswtx&lt;br /&gt;owner akxeilprwts&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;I could not get the group option working. Though I think if you read this then usage of the mail_access_groups flag &lt;i&gt;may&lt;/i&gt; fix it. I haven't tried it.&lt;br /&gt;&lt;br /&gt;Now the last bit is to give the correct file permissions for access. I did this with file system acl (using setfacl and getfacl). I won't get into the details here as they are well documented in many places.&lt;br /&gt;&lt;br /&gt;This is what I did.&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;cd /var/mail/Public&lt;br /&gt;chmod o+rx .&lt;br /&gt;setfacl -dm g:GRP:rwx .info&lt;br /&gt;cd .info&lt;br /&gt;setfacl -dm g:GRP:rwx cur&lt;br /&gt;setfacl -dm g:GRP:rwx new&lt;br /&gt;setfacl -dm g:GRP:rwx tmp&lt;br /&gt;setfacl -m g:GRP:rw cur/*&lt;br /&gt;setfacl -m g:GRP:rw new/*&lt;br /&gt;setfacl -m g:GRP:rw tmp/*&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Now I can restart the dovecot server&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;service dovecot restart&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Using my e-mail client I can see and subscribe to the public folders and read the e-mails. &lt;br /&gt;&lt;br /&gt;Job done!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-1958492046782852709?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/1958492046782852709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=1958492046782852709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/1958492046782852709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/1958492046782852709'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/10/shared-folders-in-dovecot-aka-how-to.html' title='Shared folders in dovecot (aka how to hide useful information)'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-6801503828098337825</id><published>2010-10-01T12:21:00.000+01:00</published><updated>2010-10-01T12:21:50.873+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='skills'/><category scheme='http://www.blogger.com/atom/ns#' term='lancashire'/><category scheme='http://www.blogger.com/atom/ns#' term='disconnect'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><category scheme='http://www.blogger.com/atom/ns#' term='blackburn college'/><title type='text'>Lets not pressure higher ed too much guys</title><content type='html'>Yesterday I have the pleasure of attending a workshop on getting business and education together on providing the right skills to business.&lt;br /&gt;&lt;br /&gt;This was an excellent day and I met a lot of people and learned a lot. A few key points came out of this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;There needs to be identification of those students that want to either be an&amp;nbsp;entrepreneur, employees or academics. There needs to be separate tracks for these, two at minimum.&lt;/li&gt;&lt;li&gt;Work placements need to be longer. I suggested something along the lines of &amp;nbsp;the co-op program where students are on work placement (paid) for six months at a time, interleaved with course work.&lt;/li&gt;&lt;li&gt;Lecturers should also take work placements. This gets them out of the "Ivory Towers" to see how things are really done&lt;/li&gt;&lt;li&gt;Students need to be given advice on aptitude, communication and attitude. Strong communication -&amp;nbsp;particularly&amp;nbsp;face to face and working with others is extremely important. These skills seem to be in decline or were never&amp;nbsp;taught&amp;nbsp;in the first place. Computer Science programmes rarely teach documentation and&amp;nbsp;communication&amp;nbsp;skills. They should, these are essential to work in any environment.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I was bemused to hear of one local employer that was complaining that they could not find people with a specific skill set. He complained that this was due to cost. Universities were teaching using freely available technologies like Java whereas he uses more expensive Microsoft technologies. This really takes the disconnect to the extreme&lt;br /&gt;&lt;br /&gt;I have always been passionate that universities cannot cater for every business need. If they teach fundamental skills these are easily&amp;nbsp;transferable&amp;nbsp;to &lt;u&gt;any&lt;/u&gt; technology. Being an experienced programmer myself I know that I can easily learn another computer technology in days. This is simply a case where an employer is shirking their training&amp;nbsp;responsibilities.&lt;br /&gt;&lt;br /&gt;As I say to any employer, if you want specific skills from universities, then put your money where your mouth is and fund them! They might just prove more&amp;nbsp;useful&amp;nbsp;to your business, and the student, then your Ferrari.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-6801503828098337825?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/6801503828098337825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=6801503828098337825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/6801503828098337825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/6801503828098337825'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/10/lets-not-pressure-higher-ed-too-much.html' title='Lets not pressure higher ed too much guys'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-4675981006847730835</id><published>2010-10-01T11:50:00.000+01:00</published><updated>2010-10-01T11:50:27.953+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='squirrelmail'/><category scheme='http://www.blogger.com/atom/ns#' term='IMAP'/><title type='text'>There is a reason SquirrelMail is so popular</title><content type='html'>As my wife now has two offices it was necessary to tie them together. I think I have spoken out this in previous posts. &amp;nbsp;Previously I have spoke about getting WebDAV working on her server and the problems encountered with Windows 7. Now to get e-mail working.&lt;br /&gt;&lt;br /&gt;My ISP, a strangly named, Big Wet Fish, offers me webmail using a very light and simple UI named squirrelmail. Which anyone can download freely from &lt;a href="http://squirrelmail.org/"&gt;squirrelmail.org&lt;/a&gt;. This product is also extremely easy to install using the supplied quick install &lt;a href="http://squirrelmail.org/docs/admin/admin-3.html#ss3.2"&gt;instructions&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I followed these very closely. I already had Apache and PHP and a Dovecot IMAP server, so I simply substituted where necessary. I also setup Apache with a virtual server with SSL for external access.&lt;br /&gt;&lt;br /&gt;SquirrelMail is so quick and light that even over the slow connection on the server side (1Mbps upload and 3.5Mbps download) that its hardly noticable with the quickness of squirrelmail. Highly recommended.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-4675981006847730835?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/4675981006847730835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=4675981006847730835' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/4675981006847730835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/4675981006847730835'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/10/there-is-reason-squirrelmail-is-so.html' title='There is a reason SquirrelMail is so popular'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-8955704231358646847</id><published>2010-09-22T16:13:00.000+01:00</published><updated>2010-09-22T16:13:57.557+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='webdav'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><category scheme='http://www.blogger.com/atom/ns#' term='MS'/><title type='text'>Windows 7, WebDav and basic authentication</title><content type='html'>In a recent post I gave some tips and experience on setting up a WebDAV server on lighttpd. Now one thing you noticed is that the authentication was basic. This means that the password is sent clear to the server from the client. Unfortunately most web servers which use LDAP as the authentication and authorization back end can only do so using basic authentication.&lt;br /&gt;&lt;br /&gt;This is fine using Windows XP. Its WebDAV client doesn't care. In Vista it will work with basic as long as the connection is encrypted. In Windows 7 it will only work with digest authentication whether or not the connection is encrypted. Well that is my expereince. If someone has a way to get the Win7 WebDAV client to work over a SSL link to a WebDAV server which uses basic authentication please tell us.&lt;br /&gt;&lt;br /&gt;As it is we must now use 3rd party WebDAV clients. Typically you have to pay in order to get one that is at least as good as the Windows supplied client.&lt;br /&gt;&lt;br /&gt;Microsoft please sort this issue out and take it back to the Vista functionality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-8955704231358646847?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/8955704231358646847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=8955704231358646847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/8955704231358646847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/8955704231358646847'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/09/windows-7-webdav-and-basic.html' title='Windows 7, WebDav and basic authentication'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-694446844780930902</id><published>2010-09-15T12:29:00.000+01:00</published><updated>2010-09-15T12:29:36.361+01:00</updated><title type='text'>A simple e-mail client and WebDAV</title><content type='html'>Last week I explored two fabulous products which has made one of my clients very happy. This client has two separate offices with separate broadband connections. Now we're talking about a three person operation so a micro business really. Can't really afford a dedicated leased line between the two offices. ADSL broadband will have to do.&lt;br /&gt;&lt;br /&gt;I began looking at the services which are needed. Currently e-mail and files access. I had two options really. VPN and or web services. VPN is dead simple to implement and maintaining passwords will be simpler with a domain. But over a slow connection VPN really drags. So I implemented that on either end and it is working using ipSec on Vista. I followed the instructions &lt;a href="https://www.publicvpn.com/support/Vista.php"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I decided then also to implement web services for those times when a user simply wants to come in and check their e-mail or grab a file off the server. Turns out there are two simple products to do this, SquirrelMail and WebDAV.&lt;br /&gt;&lt;br /&gt;WebDAV is more or less "builtin" to every Linux distribution out there. If you have lighttpd or apache on your machine you can turn on WebDAV and bingo you're set. WebDAV is defined as&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: small;"&gt;Web-based Distributed Authoring and Versioning, or WebDAV, is a set of extensions to the Hypertext Transfer Protocol (HTTP) that allows computer-users to edit and manage files collaboratively on remote World Wide Web servers. RFC 4918 defines the extensions&lt;/span&gt;&lt;/blockquote&gt;This can be bolted on to almost every webserver - even IIS!. I used lighttpd and all it takes is to follow the following steps:&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;apt-get install lighttpd lighttpd-mod-webdav apache2-utils&lt;/code&gt;&lt;/pre&gt;Then enable the webdav and authentication modules in lighttpd&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;lighty-enable-mod auth&lt;br /&gt;lighty-enable-mod webdav&lt;/code&gt;&lt;/pre&gt;Then edit your /etc/lighttpd/lighttpd.conf file and uncomment the mod_auth and mod_webdav lines from the file. It should look similar to this:&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;server.modules              = (&lt;br /&gt;            "mod_access",&lt;br /&gt;            "mod_alias",&lt;br /&gt;            "mod_accesslog",&lt;br /&gt;            "mod_compress",&lt;br /&gt;#           "mod_rewrite",&lt;br /&gt;#           "mod_redirect",&lt;br /&gt;#           "mod_evhost",&lt;br /&gt;#           "mod_usertrack",&lt;br /&gt;#           "mod_rrdtool",&lt;br /&gt;           "mod_webdav",&lt;br /&gt;#           "mod_expire",&lt;br /&gt;#           "mod_flv_streaming",&lt;br /&gt;#           "mod_evasive"&lt;br /&gt;)&lt;/code&gt;&lt;/pre&gt;Then add something similar into the file to setup the WebDAV location:&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;alias.url = ( "/webdav" =&amp;gt; "/var/www/webee" )&lt;br /&gt;$HTTP["url"] =~ "^/webdav($|/)" {&lt;br /&gt;webdav.activate = "enable"&lt;br /&gt;webdav.is-readonly = "disable"&lt;br /&gt;webdav.sqlite-db-name = "/var/run/lighttpd/lighttpd.webdav_lock.db"&lt;br /&gt;auth.backend = "htpasswd"&lt;br /&gt;auth.backend.htpasswd.userfile = "/var/www/webee/passwd.dav"&lt;br /&gt;auth.require = ( "" =&amp;gt; ( "method" =&amp;gt; "basic",&lt;br /&gt;"realm" =&amp;gt; "webdav",&lt;br /&gt;"require" =&amp;gt; "valid-user" ) )&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;Then restart lighty&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;sudo service lighttpd restart&lt;/code&gt;&lt;/pre&gt;You can use Windows to setup a WebDAV connection, the process differs from XP to Vista and Windows 7. You can find some instructions &lt;a href="http://barracudaserver.com/products/BarracudaDrive/tutorials/mapping_windows_drive.lsp"&gt;here&lt;/a&gt; - just ignore the top bit. I find that on XP certain files (typically .pdf files) cannot be opened. And in Vista you don't double-click to open a folder or a file. You have to use the right-mouse context menu and select &lt;b&gt;open&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Now that gets you an unencrypted WebDAV connection. For some this maybe okay, but for professional installations you won't want important client files flying over public wires unencrypted. For this we'll need to turn on lighttpd's SSL capabilities. This is fairly simple, First we need to get lighty to listen on the appropriate port and select the proper certificate. Let's start with the certificate first.&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;sudo openssl req -new -x509 -keyout /etc/ssl/certs/webdav.pem -out /etc/ssl/certs/webdav.pem -days 3650 -nodes&lt;/code&gt;&lt;/pre&gt;Fill in the questions as appropriate. Make sure to put in your external web address - the one you are using either from your website host or from DynDNS (or similar) - when it asks for YOUR name. Note that the private and public key are in the same file.&lt;br /&gt;&lt;br /&gt;Open lighttpd.conf again and add this into it.&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;$SERVER["socket"] == ":443" {&lt;br /&gt;ssl.engine                  = "enable" &lt;br /&gt;ssl.pemfile                 = "/etc/ssl/certs/webdav.pem" &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;This gets lighty listening on port 443, the standard one for SSL connections. You can change this port &amp;nbsp;whatever you like. I like to use something else to help prevent hacking into my network.&lt;br /&gt;&lt;br /&gt;Now to get this enables on the WebDAV piece we add these changes to the original setup.&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;alias.url = ( "/webdav" =&amp;gt; "/var/www/webee" )&lt;br /&gt;$HTTP["scheme"] == "https" {&lt;br /&gt;server.document-root = "/var/www/webee"&lt;br /&gt;webdav.activate = "enable"&lt;br /&gt;webdav.is-readonly = "disable"&lt;br /&gt;webdav.sqlite-db-name = "/var/run/lighttpd/lighttpd.webdav_lock.db"&lt;br /&gt;auth.backend = "htpasswd"&lt;br /&gt;auth.backend.htpasswd.userfile = "/var/www/web1/passwd.dav"&lt;br /&gt;auth.require = ( "" =&amp;gt; ( "method" =&amp;gt; "basic",&lt;br /&gt;"realm" =&amp;gt; "webdav",&lt;br /&gt;"require" =&amp;gt; "valid-user" ) )&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;This is slighty different to the previous setup as lighty is setup to switch into HTTPS and WebDAV when the user connects to the webdav folder. To connect using a client you'll need to change the address to https://&lt;machine&gt;/.&lt;br /&gt;&lt;br /&gt;Now restart lighty&lt;br /&gt;&lt;/machine&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;sudo service lighttpd restart&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;One issue you will run into is that the webserver is running under the www-data account and group and all your files will need to be accessible by this account. You have a couple of options here:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Change the running account of lightty to a user with the same group&amp;nbsp;privileges&amp;nbsp;as your other users. A decent option if the server will only be handling WebDAV.&lt;/li&gt;&lt;li&gt;Add each of your users' into the www-data group. Not as nice as the above option and can give users abilities to delete or over write files in other parts of your web server.&lt;/li&gt;&lt;li&gt;Use ACL's to allow additional write&amp;nbsp;privileges&amp;nbsp;for the sets of users in www-data and other groups. Probably tricky to manage the&amp;nbsp;privileges&amp;nbsp;and ensure they are inherited properly.&lt;/li&gt;&lt;/ul&gt;Being a bit lazy I am trying the last option.&lt;br /&gt;&lt;br /&gt;There you have it. very simple really. I've run out of room and will have to discuss squirrelmail in a further post. The guys here at &lt;a href="http://www.chameeya.com/"&gt;Chameeya &lt;/a&gt;are very chuffed at this setup. Wow wee!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-694446844780930902?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/694446844780930902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=694446844780930902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/694446844780930902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/694446844780930902'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/09/simple-e-mail-client-and-webdav.html' title='A simple e-mail client and WebDAV'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-4135630893847775707</id><published>2010-09-03T11:59:00.001+01:00</published><updated>2010-09-03T12:00:40.483+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LCM'/><category scheme='http://www.blogger.com/atom/ns#' term='DMS'/><category scheme='http://www.blogger.com/atom/ns#' term='umbraco'/><category scheme='http://www.blogger.com/atom/ns#' term='document management'/><category scheme='http://www.blogger.com/atom/ns#' term='DM'/><category scheme='http://www.blogger.com/atom/ns#' term='CMS'/><category scheme='http://www.blogger.com/atom/ns#' term='legal software'/><category scheme='http://www.blogger.com/atom/ns#' term='case management'/><category scheme='http://www.blogger.com/atom/ns#' term='nuxeo'/><title type='text'>Comparing CMSs is very hard to do</title><content type='html'>I have a requirement from my wife to build a case management system for her with a bundling capability. Now rather than start from scratch, which is tempting, I would look into what's available now.&lt;br /&gt;&lt;br /&gt;There are legal case management systems around, though far too expensive for a small operation like my wife's. I did find one that was free (yay!) but development had stopped on it. None the less, no reason I couldn't have a look and try it out and use it as a template. The LCM from &lt;a href="http://www.blogger.com/post-edit.g?blogID=827592504967969395&amp;amp;postID=4135630893847775707"&gt;these guys&lt;/a&gt;. free for non-profit and NGO's and recommends using &lt;a href="http://www.civicrm.org/"&gt;CiviCRM&lt;/a&gt;. But having tried CiviCRM I'm not sure that I agree. CiviCRM will need customisation before it can do all of what LCM can do.&lt;br /&gt;&lt;br /&gt;Then I started looking at other platforms to build or modify a solution on. I looked at Dot Net Nuke. This is a highly popular solution built on .Net, but after reading through the experiences of application developers it does seem to be difficult to extend. So I have crossed it off my list. Next came Umbraco and mojoPortal. This looks highly promising. Both are light and put almost zero constraints on controls and layouts, which is perfect really. Both are using (or will soon use) the ASP.Net MVC model which is another winner. And both use SQL Server which I am highly skilled.&lt;br /&gt;&lt;br /&gt;Another choice will will work on all platforms is &lt;a href="http://www.nuxeo.com/en/products/case-management"&gt;Nuxeo DM&lt;/a&gt;. This is a enterprise CM tool which runs on Java is highly standards compliant. Full open source and nothing is held back, unlike Alfresco or KnowledgeTree. This is a great product but is perhaps overkill for what she needs.&lt;br /&gt;&lt;br /&gt;My conclusion is that it is a race between Umbraco and mojoPortal. And one that I think Umbraco might just win. But the race ain't over till the fat lady sings. I am terrible the guys at &lt;a href="http://www.chameeya.com/landg/hireme03.htm"&gt;chameeya &lt;/a&gt;will be throwing paper balls at me now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-4135630893847775707?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/4135630893847775707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=4135630893847775707' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/4135630893847775707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/4135630893847775707'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/09/comparing-cmss-is-very-hard-to-do.html' title='Comparing CMSs is very hard to do'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-9134846543213620890</id><published>2010-08-27T17:08:00.001+01:00</published><updated>2010-08-27T17:10:03.336+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asterisk-addons'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='freepbx'/><category scheme='http://www.blogger.com/atom/ns#' term='asterisk'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='astierks-mysql'/><title type='text'>Final Asterisk clean up</title><content type='html'>This time I'm going to go through the final&amp;nbsp;pieces&amp;nbsp;of the Asterisk clean up on my Ubuntu 10.04 setup.&lt;br /&gt;&lt;br /&gt;There were two annyoing things left behind by my install and &lt;a href="http://blog.chameeya.com/2010/08/getting-those-asterisk-addons-into.html"&gt;setup&lt;/a&gt; of Asterisk.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;When I shutdown freepbx (aka amportal) the Asterisk instance would crash and then restart&lt;/li&gt;&lt;li&gt;Ubuntu would want to update asterisk-mysql package&lt;/li&gt;&lt;/ol&gt;I'm going to show you how I got around these two issues. Firstly the amportal startup string and how to kill that nasty Asterisk crash and core dump.&lt;br /&gt;&lt;br /&gt;The script I use to startup freepbx is below&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;### BEGIN INIT INFO&lt;br /&gt;# Provides:          asterisk&lt;br /&gt;# Required-Start:    \$network \$syslog&lt;br /&gt;# Required-Stop:     \$network \$syslog&lt;br /&gt;# Default-Start:     2 3 4 5&lt;br /&gt;# Default-Stop:      0 1 6&lt;br /&gt;# Short-Description: Asterisk daemon.&lt;br /&gt;# Description:       This script handles start/stop states of asterisk.&lt;br /&gt;### END INIT INFO&lt;br /&gt;&lt;br /&gt;set -e&lt;br /&gt;set -a&lt;br /&gt;PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin&lt;br /&gt;DESC="Asterisk"&lt;br /&gt;NAME=amportal&lt;br /&gt;DAEMON=/usr/sbin/$NAME&lt;br /&gt;&lt;br /&gt;#test -x $DAEMON || exit 0&lt;br /&gt;&lt;br /&gt;d_start() {&lt;br /&gt;    amportal start&lt;br /&gt;}&lt;br /&gt;d_stop() {&lt;br /&gt;    amportal stop&lt;br /&gt;}&lt;br /&gt;d_reload() {&lt;br /&gt;    amportal restart&lt;br /&gt;}&lt;br /&gt;case "$1" in&lt;br /&gt;start)&lt;br /&gt;    echo -n "Starting $DESC: $NAME"&lt;br /&gt;    d_start&lt;br /&gt;    echo "."&lt;br /&gt;;;&lt;br /&gt;stop)&lt;br /&gt;    echo -n "Stopping $DESC: $NAME"&lt;br /&gt;    d_stop&lt;br /&gt;    echo "."&lt;br /&gt;;;&lt;br /&gt;restart|force-reload)&lt;br /&gt;    echo -n "Restarting $DESC: $NAME"&lt;br /&gt;    d_stop&lt;br /&gt;    sleep 10&lt;br /&gt;    d_start&lt;br /&gt;    echo "."&lt;br /&gt;;;&lt;br /&gt;*)&lt;br /&gt;    echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" &amp;gt;&amp;amp;2&lt;br /&gt;    exit 3&lt;br /&gt;;;&lt;br /&gt;esac&lt;br /&gt;exit 0&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Save this to /etc/init.d/amportal and then do the following&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;update_rc.d amportal defaults 80 20&lt;br /&gt;update_rc.d -f asterisk remove&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;so that FreePBX will come up when you boot and remove the Asterisk from starting on its own. You could also use the sysv-rc-conf tool which allows you to do this visually.&lt;br /&gt;You notice that this runs the amportal script which is located at /usr/local/sbin. Inside of there andother script is invoke called freepbx_engine. This is typically located at /var/lib/asterisk/bin. Inside there you will see lines like&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;killall -9 safe_asterisk&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;/usr/sbin/safe_asterisk -U asterisk ...&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;/usr/sbin/asterisk -rx "core stop gracefully" | grep -v "No such command"&lt;br /&gt;/usr/sbin/asterisk -rx "stop gracefully" | grep -v -E "No such command|deprecated"&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;What is Safe_Asterisk? This is a script which starts a loop and runs Asterisk inside the loop. If Asterisk was to die for some reason then it detects this and restarts Asterisk.&lt;br /&gt;&lt;br /&gt;There are two problems which I had with this. Firstly safe_asterisk starts Asterisk in the foreground, so my startup script would appear to hang after Asterisk started. Second when I killed the script (by using Ctrl+C), Asterisk would stop and crash and then restart and sometimes it would fail to restart and keep re-trying.&lt;br /&gt;&lt;br /&gt;Getting Asterisk to start in the background was simple enough, but the crashes and attempted restarts still happened when I shutdown freepbx.&lt;br /&gt;&lt;br /&gt;The solution I found was to do utilize the existing Asterisk startup script. I replaced the above lines with this&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;#killall -9 safe_asterisk&lt;br /&gt;killall -9 asterisk&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;#/usr/sbin/safe_asterisk -U asterisk -G $AMPASTERISKGROUP&lt;br /&gt;/etc/init.d/asterisk start&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;#/usr/sbin/asterisk -rx "core stop gracefully" | grep -v "No such command"&lt;br /&gt;#/usr/sbin/asterisk -rx "stop gracefully" | grep -v -E "No such command|deprecated"&lt;br /&gt;/etc/init.d/asterisk stop&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;That solved all my problems with the starting and stopping of freepbx.&lt;br /&gt;&lt;br /&gt;Now, if you've added on the Asterisk Addon from my previous post. You may find that next time you do a apt-get or aptitude to update your OS that it wants to pull down an "updated" asterisk-mysql. Do not do this! It will overwrite the addons and they will then not load. To keep from being prompted you need to pin this package at the version that its on and you will not be prompted anymore. This is thanks to this &lt;a href="https://help.ubuntu.com/community/PinningHowto"&gt;page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;echo asterisk-mysql hold | dpkg --set-selections&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;and to check that worked you do&lt;br /&gt;&lt;pre class="source-code"&gt;&lt;code&gt;&lt;br /&gt;dpkg --get-selections | grep asterisk&lt;br /&gt;&lt;br /&gt;asterisk                                        install&lt;br /&gt;asterisk-config                                 install&lt;br /&gt;asterisk-mysql                                  hold&lt;br /&gt;asterisk-sounds-extra                           install&lt;br /&gt;asterisk-sounds-main                            install&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;what more could a man want!&lt;br /&gt;&lt;br /&gt;I hope that helps a lot more of you with using FreePBX which just gets better and better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-9134846543213620890?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/9134846543213620890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=9134846543213620890' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/9134846543213620890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/9134846543213620890'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/08/final-asterisk-clean-up.html' title='Final Asterisk clean up'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-1887870652269212862</id><published>2010-08-24T16:09:00.001+01:00</published><updated>2010-08-24T16:09:33.563+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='document management'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='CMS'/><category scheme='http://www.blogger.com/atom/ns#' term='legal software'/><category scheme='http://www.blogger.com/atom/ns#' term='case management'/><title type='text'>Is it better to extend or rewrite</title><content type='html'>I have been dealing with this conondrum for sometime now. The problem, well its not really a problem. Lets say that its an opportunity then. I have this opportunity to develop some software for a small legal practise I know of. They are very small, tiny is closer to the description as it consists of a single solicitor and spouse as the unpaid 'volunteer' helping out.&lt;br /&gt;&lt;br /&gt;This person approached me a while back to come up with a small and cheap system which would provide basic needs of case management. They also want something that can build bundles a lot easier than the very manual process the have now.&lt;br /&gt;&lt;br /&gt;So over the past while I have umm'd and ahhh'd over this. Being a software programmer, but mainly in desktop and database applications I have no contact at all with the legal case management area. So do what everyone else in my situation does. I google.&lt;br /&gt;&lt;br /&gt;After a lot of looking around, I've come to the conclusion that I can either take a CMS and extend it to perform legal case management. Or I can write on from scratch. The latter does sound tempting as tying yourself into an existing framework can hamper some future&amp;nbsp;customisations&amp;nbsp;one wishes to do. Then there is technology, .Net or LAMP? (well there are more choices than that really).&lt;br /&gt;&lt;br /&gt;Not being an expert in web technologies I have to decide this without really knowing anything. Who do I ask? &amp;nbsp;Maybe somebody in LinkedIn knows?&lt;br /&gt;&lt;br /&gt;My choices are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.civicrm.org/"&gt;CiviCRM&lt;/a&gt; and extend it.&lt;/li&gt;&lt;li&gt;DotNetNuke and extend&lt;/li&gt;&lt;li&gt;Build from scratch on LAMP&lt;/li&gt;&lt;li&gt;Build from scratch on ASP.Net&lt;/li&gt;&lt;/ul&gt;The technology choices are quite open as I'd have to learn ASP.Net or PHP or whatever anyway. Though I'd rather stay away from MySQL and stick with something better like SQL Server and I do like Linq. So one choice made, it must be on ASP.Net!&lt;div&gt;&lt;br /&gt;Then I found this book&amp;nbsp;&lt;a href="http://www.amazon.co.uk/gp/product/1430227125/ref=ord_cart_shr?ie=UTF8&amp;amp;m=AHRB2OK2Q2YCL"&gt;Pro ASP.NET 4.0 CMS&lt;/a&gt;. I started to think. Yeah, all the source, no licences at all. Sounds good. Sounds very good.&lt;br /&gt;&lt;br /&gt;Me and gang at &lt;a href="http://www.chameeya.com/"&gt;Chameeya&lt;/a&gt;&amp;nbsp;are gonna give this a go.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-1887870652269212862?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/1887870652269212862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=1887870652269212862' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/1887870652269212862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/1887870652269212862'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/08/is-it-better-to-extend-or-rewrite.html' title='Is it better to extend or rewrite'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-9196558806868335630</id><published>2010-08-18T16:14:00.000+01:00</published><updated>2010-08-18T16:14:27.558+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cdr'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='freepbx'/><category scheme='http://www.blogger.com/atom/ns#' term='add ons'/><category scheme='http://www.blogger.com/atom/ns#' term='asterisk'/><title type='text'>Getting those Asterisk Addons into Ubuntu</title><content type='html'>I have this VOIP server in my office which is running &lt;a href="http://www.freepbx.org/"&gt;FreePBX &lt;/a&gt;and &lt;a href="http://www.asterisk.org/"&gt;Asterisk&lt;/a&gt;. Well its not in my office, its in a server room down the hall. Its a small AMD Duron of about 1Ghz, which is enough.&lt;br /&gt;&lt;br /&gt;FreePBX is a great GUI and management interface for Asterisk and I encourage anyone to use it. I originally used the AsteriskGUI, but that was buggy and had severe limitations. Also, development had basically stopped on it. You know when Digium (the sponsors of Asterisk) start shipping FreePBX with Asterisk in its AsteriskNOW package - their own GUI is dead.&lt;br /&gt;&lt;br /&gt;It took a bit of trial and error to get FreePBX installed on Ubuntu 10.04 - as there is no package for it. I also managed to get it working with lighty (lighttpd) which saved a lot of memory. And as an additional tip, disable innoDB in MySQL which will save you even more memory.&lt;br /&gt;&lt;br /&gt;By default Asterisk logs all the calls to a CSV file. These files are very ugly and impossible to read. There is a panel in FreePBX which allows you to interrogate CDR or call records. This panel queries a MySQL database. This database is part of the &lt;a href="http://www.freepbx.org/support/documentation/installation/install-process-for-ubuntu-6-06"&gt;FreePBX install script&lt;/a&gt;&amp;nbsp;which managed to work for me. But to log to the database Asterisk must have the cdr_mysql addon. This does not come straight with a ubuntu package. There are a couple of steps you need to go through.&lt;br /&gt;&lt;br /&gt;First, do not go out an grab the svn sources from digium site and compile and install. This will not work. You will most likely get these types of errors in your Asterisk full log:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Module 'app_addon_sql_mysql.so' was not compiled with the same compile-time options as this version of Asterisk.&lt;br /&gt;Module 'app_addon_sql_mysql.so' will not be initialized as it may cause instability.&lt;br /&gt;Module 'app_addon_sql_mysql.so' could not be loaded.&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Follow these steps though and you will have success:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;~# apt-get build-dep asterisk-mysql&lt;br /&gt;~# apt-get -b source asterisk-mysql&lt;br /&gt;~# dpkg -i asterisk-mysql_1.6.2.0-1_i386.deb&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;So what does this do? The first step downloads all the build&amp;nbsp;dependencies&amp;nbsp;for the add ons. The next builds the addons from the source. The last step installs the addons into the Asterisk modules folder. Thanks to the guys as Launchpad for helping everyone sort this out. See &lt;a href="https://bugs.launchpad.net/ubuntu/+source/asterisk-addons/+bug/560656"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Then restart your Asterisk server and you are done. I think next time I'll show you how to get around the core dump when you shutdown Asterisk using the scripts which come with FreePBX.&lt;br /&gt;&lt;br /&gt;Now if we could only nail down the call quality, me and the other guys at &lt;a href="http://www.chameeya.com/"&gt;cham&lt;span id="goog_1631986657"&gt;&lt;/span&gt;&lt;span id="goog_1631986658"&gt;&lt;/span&gt;eeya &lt;/a&gt;would be so happy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-9196558806868335630?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/9196558806868335630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=9196558806868335630' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/9196558806868335630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/9196558806868335630'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/08/getting-those-asterisk-addons-into.html' title='Getting those Asterisk Addons into Ubuntu'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-5143105716175386703</id><published>2010-08-17T14:26:00.000+01:00</published><updated>2010-08-17T14:26:34.217+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virus'/><category scheme='http://www.blogger.com/atom/ns#' term='procmail'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='clamav'/><category scheme='http://www.blogger.com/atom/ns#' term='e-mail'/><title type='text'>Even Linux needs to scan for Windows Viruses</title><content type='html'>What! you say. Why would Linux need to scan for Windows viruses, surely they don't affect Linux. Well, yes it is true that a standard Linux O/S setup cannot be affected by Windows viruses. However, almost all setups I read about with Linux&amp;nbsp;involve&amp;nbsp;either acting as a server for Windows machines or as a dual boot/wine host.&lt;br /&gt;&lt;br /&gt;In these cases it is essential to run a antivirus tool to prevent your Windows machines from being infected by files sitting on a samba share, shared e-mail server or wine. In my case, my office server stores Windows documents on samba shares and shares e-mail via dovecot IMAP server. The e-mails are fetched from various sources using fetchmail and passed through procmail for delivery to the correct mail folder.&lt;br /&gt;&lt;br /&gt;The most common antivirus package on Linux is &lt;a href="http://www.clamav.org/"&gt;ClamAV&lt;/a&gt;. There are others available from:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.avast.com/en-gb/linux-unix-edition"&gt;Avast!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://free.avg.com/gb-en/download.prd-afl"&gt;AVG&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I will be speaking about my setup with ClamAV. ClamAV is the most common anti-virus you will find on a Linux setup. This is because it is completely open source and free and available as part of the major Linux distributions. I use Ubuntu throughout my business and ClamAV is included in the main repositories.&lt;br /&gt;&lt;br /&gt;To get started the simplest thing to do is install:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo apt-get install clamav-base freshclam-daemon clamav-daemon clamassassin&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;let's go through this. We install the base tools and software (clam-base), then a daemon to download the latest virus and malware signatures (freshclam-daemon), the clamav daemon &amp;nbsp;- very useful for scanning e-mail and a script for processing e-mail virus scans (clamassassin).&lt;br /&gt;&lt;br /&gt;There are two ways to scan your files, with &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;clamscan&lt;/span&gt;&lt;/span&gt; or with &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;clamdscan &lt;/span&gt;&lt;/span&gt;which uses the daemon. Using &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;clamdscan&lt;/span&gt;&lt;/span&gt; is usually faster as all the virus definitions are loaded in memory. However, the daemon runs under its own user (clamav) and you need to add it to any groups necessary to scan your files.&lt;br /&gt;&lt;br /&gt;I use clamscan within a script file which is then invoked through cron to provide a nightly scan with a e-mail summary.&lt;br /&gt;&lt;br /&gt;To scan e-mail I needed to add in a procmail recipe. &lt;a href="http://www.procmail.org/"&gt;Procmail&lt;/a&gt; is a wonderful piece of software which could use a better web page. Procmail delivers mail based on a set of rules/patterns which are set in a global and user's rules file.&lt;br /&gt;&lt;br /&gt;My current setup I have fetchmail bringing down e-mail from my ISP and various other sources. Procmail which is dropping the e-mails into the correct folders. Exim which is currently only acting as a local and forwarding e-mail server. There is a way to tie in ClamAV into Exim but this would only catch outgoing e-mails which I'm not worried about. The only place appropriate was in Procmail.&lt;br /&gt;&lt;br /&gt;After some looking around I came up with this procmail recipe:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;MAILDIR=/var/spool/mail&lt;br /&gt;DEFAULT=$MAILDIR/$LOGNAME/&lt;br /&gt;SUBJ_=`formail -xSubject: | expand | sed -e 's/^[ ]*//g' -e 's/[ ]*$//g'`&lt;br /&gt;&lt;br /&gt;# check if there is a virus and indicate in subject, don't actually delete it!&lt;br /&gt;:0fw&lt;br /&gt;| /usr/bin/clamassassin&lt;br /&gt;&lt;br /&gt;:0&lt;br /&gt;* ^X-Virus-Status: Yes&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;:0: fhw&lt;br /&gt;&amp;nbsp;&amp;nbsp; | formail -I"Subject: [**VIRUS**] ${SUBJ_}"&lt;br /&gt;&amp;nbsp;&amp;nbsp;:0: fhw&lt;br /&gt;&amp;nbsp;&amp;nbsp; | formail -A"X-VIRUS-INFO: BLOCKED BY CLAMASSASSIN"&lt;br /&gt;&amp;nbsp;&amp;nbsp;LOG="VIRUS "&lt;br /&gt;&amp;nbsp;&amp;nbsp;:0:&lt;br /&gt;&amp;nbsp;&amp;nbsp;$DEFAULT/.virus&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;To test it go to &lt;a href="http://eicar.org/anti_virus_test_file.htm"&gt;http://eicar.org/anti_virus_test_file.htm&lt;/a&gt;&amp;nbsp;where you can download a sample virus and then send it to yourself. The e-mail should be trapped and dropped into your virus folder with the subject altered.&lt;br /&gt;&lt;br /&gt;My&amp;nbsp;colleagues&amp;nbsp;appreciated not having to worry any longer about e-mails with suspect viruses coming through the e-mail system. I also have made some adjustments to our Windows e-mail clients for any remote accounts accessed by IMAP (like info and enquiries). Some e-mail clients like to cache the e-mails and attachments from these accounts and this bypasses our e-mail scanner. I have turned off that caching because as you can imagine these accounts get a lot of spam and malicious attachments.&lt;br /&gt;&lt;br /&gt;We here at &lt;a href="http://www.chameeya.com/"&gt;chameeya &lt;/a&gt;now feel much more secure. We are even improving in other areas by removing local admin rights for many users and ensuring everyone is logging in with domain accounts.&lt;br /&gt;&lt;br /&gt;Now to see if I can get a proxy server to keep out all the porn!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-5143105716175386703?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/5143105716175386703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=5143105716175386703' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/5143105716175386703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/5143105716175386703'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/08/even-linux-needs-to-scan-for-windows.html' title='Even Linux needs to scan for Windows Viruses'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-2196722350558533501</id><published>2010-08-05T14:56:00.001+01:00</published><updated>2010-08-05T14:57:02.034+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sqlbits'/><category scheme='http://www.blogger.com/atom/ns#' term='houston'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='sql azure'/><title type='text'>The future wave of SQL development?</title><content type='html'>Last month Microsoft released the SQL Azure management tool currently code named project Houston. You can read more about it &lt;a href="http://blogs.msdn.com/b/sqlazure/archive/2010/07/21/10040258.aspx"&gt;here&lt;/a&gt;. Houston is a Silverlight tool which provides a GUI to managed and create items within your SQL Azure database instance. I would encourage everyone to watch the demos and get hooked.&lt;br /&gt;&lt;br /&gt;Houston will allow those developers not familiar with SQL Server to build tables, views and stored procedures quickly as part of their web project. Though if someone can code a stored procedure they wouldn't really be a simple developer would they?&lt;br /&gt;&lt;br /&gt;It is, in a sense, a kind of Access-ish type of interface to SQL Azure. SQL Azure really does allow a small operation like &lt;a href="http://www.chameeya.com/"&gt;us&lt;/a&gt;&amp;nbsp;to build robust applications for enterprises, hosted in the cloud and managed by us. No need for us to rent expensive servers and setup all the software on our own or, eek!, build our own with the expense and SLA requirements. The cloud&amp;nbsp;commoditises&amp;nbsp;all that and lets us develop and someone else manage. But with the additional flexibility that a customer can turn it off when not needed. So you only pay for the CPU and storage you are using.&lt;br /&gt;&lt;br /&gt;This month I hope to attend several more seminars on SQL Server. And at the end of September there is SQLbits. For anyone who hasn't been or heard of SQLBits, this is a community conference which has now expanded beyond its original Saturday format. Check out their &lt;a href="http://sqlbits.com/"&gt;website&lt;/a&gt; and register. This time they are in York.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-2196722350558533501?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/2196722350558533501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=2196722350558533501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/2196722350558533501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/2196722350558533501'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/08/future-wave-of-sql-development.html' title='The future wave of SQL development?'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-827592504967969395.post-807519105718638711</id><published>2010-07-23T15:18:00.000+01:00</published><updated>2010-07-23T15:18:14.727+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sub-reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='pl/sql'/><category scheme='http://www.blogger.com/atom/ns#' term='office'/><category scheme='http://www.blogger.com/atom/ns#' term='reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Access reporting using sub-reports</title><content type='html'>Access isn't well regarded for its reporting. In my experience a lot of users use Excel as the Access reporting tool. But there is one category where Access excels above Excel. (nice pun eh?). That is sub reporting. This is where two separate pieces of information must be brought together on a Access report.&lt;br /&gt;&lt;br /&gt;An example is the personnel assignment report below:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_DHvo1dN1-TM/TEmfvpmMapI/AAAAAAAAACQ/-XIWkmfMW9A/s1600/report01.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/_DHvo1dN1-TM/TEmfvpmMapI/AAAAAAAAACQ/-XIWkmfMW9A/s640/report01.JPG" width="441" /&gt;&lt;/a&gt;&lt;/div&gt;In this report there are three different pieces of information brought together.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Individual basic details&lt;/li&gt;&lt;li&gt;The professional qualifications&lt;/li&gt;&lt;li&gt;Individual assignment history&lt;/li&gt;&lt;/ol&gt;This normally cannot be done in Access. So how does on accomplish this. With sub reports.&lt;br /&gt;&lt;br /&gt;Now look at the same report in design view:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_DHvo1dN1-TM/TEmhKHX6gVI/AAAAAAAAACY/-x7V9HRqJOE/s1600/report02.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/_DHvo1dN1-TM/TEmhKHX6gVI/AAAAAAAAACY/-x7V9HRqJOE/s640/report02.JPG" width="442" /&gt;&lt;/a&gt;&lt;/div&gt;Its a bit messy - working with&amp;nbsp;sub-reports&amp;nbsp;always is. But here you can see that for each person in the detail section are two&amp;nbsp;sub-reports. One is their profile, skills, wage number, education. And second&amp;nbsp;their&amp;nbsp;work assignment history. These&amp;nbsp;sub-reports&amp;nbsp;are always stored as separate reports within Access.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_DHvo1dN1-TM/TEmiRU-EihI/AAAAAAAAACg/4Zr-1CvuiCs/s1600/report03.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="222" src="http://1.bp.blogspot.com/_DHvo1dN1-TM/TEmiRU-EihI/AAAAAAAAACg/4Zr-1CvuiCs/s400/report03.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;This does help make it easier to layout the reports.&lt;br /&gt;&lt;br /&gt;Lets take a look at how the&amp;nbsp;sub-reports&amp;nbsp;are linked to the main report. There must be a unique way to join the two.&amp;nbsp;otherwise&amp;nbsp;the&amp;nbsp;sub-reports&amp;nbsp;will display either no data or all data. We want the&amp;nbsp;sub-report&amp;nbsp;to only show the related data. Lets take a look at the assignment history sub report.&lt;br /&gt;&lt;br /&gt;To do this you must have the subreport item selected. Don't click on the top left as that it is the report. When you've got it right you'll see small resize handles around the sides of the subreport.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_DHvo1dN1-TM/TEmjpHW-NMI/AAAAAAAAACo/nbZXeWtd1NI/s1600/report04.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="193" src="http://2.bp.blogspot.com/_DHvo1dN1-TM/TEmjpHW-NMI/AAAAAAAAACo/nbZXeWtd1NI/s400/report04.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In this case you can see the sub-report field resourceID it linked with the main report field ID. This ensures you are reporting on the right data.&lt;br /&gt;&lt;br /&gt;And you can carry this forward with sub-reports containing sub-reports. I'm not sure how far it goes as I've only gone to the sub-sub-report level myself.&lt;br /&gt;&lt;br /&gt;This is just a sample of the project that my&amp;nbsp;colleagues&amp;nbsp;and I at &lt;a href="http://www.chameeya.com/"&gt;chameeya&lt;/a&gt;&amp;nbsp;take on on a regular basis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/827592504967969395-807519105718638711?l=blog.chameeya.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.chameeya.com/feeds/807519105718638711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=827592504967969395&amp;postID=807519105718638711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/807519105718638711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/827592504967969395/posts/default/807519105718638711'/><link rel='alternate' type='text/html' href='http://blog.chameeya.com/2010/07/access-reporting-using-sub-reports.html' title='Access reporting using sub-reports'/><author><name>Salik Rafiq, Director Us 3 Software</name><uri>http://www.blogger.com/profile/00015398884806508418</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_DHvo1dN1-TM/SnL67N1K19I/AAAAAAAAAAM/W0PdfD-krOE/S220/2a1207a.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_DHvo1dN1-TM/TEmfvpmMapI/AAAAAAAAACQ/-XIWkmfMW9A/s72-c/report01.JPG' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
