Nokia E6 Symbian Anna IMAP with push mail

Nokia Symbian based phones have a terrible IMAP support. If you have IMAP server of your own, you only have two options

  • Use “Nokia Messaging” which means you receive your emails via Nokia servers (similar to blackberry) and it’d not be your phone but nokia servers which would connect to your IMAP server and push mails to your phone. This works better, but then you’re giving your details to Nokia, and could be a privacy issue for some.
  • Use the in-built IMAP client. This would mean you don’t have a ‘push’ email, but a check interval of 5 minutes. Not awesome.

Following is one more way to set to use IMAP via the Nokia Mail for Exchange client, and you don’t need to have any Microsoft Exchange setup.

 

Concept

  1. You need to be running an IMAP server.
  2. There’s an open source PHP based software called “z-push” which allows activesync connectivity and has IMAP backend, which means you can use it to ‘sync’ your phones using the Nokia Mail for Exchange client.
  3. You need Apache web server with php5 and php5-imap support where z-push would be setup.
  4. You download and configure z-push.
  5. You configure your phone settings, and then use Nokia Mfe client to connect to your IMAP server and thus have “push” functionality.

 

Assumptions

  1. An IMAP server is running with SSL support with self-signed certificates (I used dovecot), which has usernames as ‘user@domain.com‘ format.
  2. You have Apache with PHP5 and php-imap support. On ubuntu/debian you can install it using apt-get install php5-imap.
  3. Nokia Mail For Exchange supports only a single account on a phone. So if you have multiple email accounts to be synced, bad luck.
  4. It was tested on a Nokia E6 running Symbian Anna. Your setup may vary or could be different.

 

Server side setup

  1. Download z-push from Source Forge http://z-push.sf.net ; I used version z-push-1.5.4RC-705.tar.gz.
  2. Extract it in a suitable location, for example, /var/www/z-push
  3. You can refer to the INSTALL document too for more information inside the z-push extracted files.
  4. Make the ‘state’ directory web server user writable. So do chown www-data.www-data state or chmod 777 state.
  5. Configure z-push. We will modify the following
    $BACKEND_PROVIDER = "BackendIMAP";
    
    // ************************
    //  BackendIMAP settings
    // ************************
    
    define('IMAP_SERVER', 'localhost');
    define('IMAP_PORT', 993);
    define('IMAP_OPTIONS', '/ssl/novalidate-cert');
    define('IMAP_DEFAULTFROM', 'domain');
    define('IMAP_SENTFOLDER', 'Sent');
    define('IMAP_USE_IMAPMAIL', false);
  6. So that the “Sender Name” when sending out email works well, there’s a IMAP_DEFAULTFROM setting, which didn’t work too well in my case, so I modified the backend file to display the “Sender’s Name” correctly in the format Firstname Lastname <user@domain.com>. The following changes were done in backend/imap.php
    # Added the following lines in the section below
    # $v = "$this->_domain <$this->_username>";
    # $envelopefrom = "-f$this->_username";
    
                if ($k == "from") {
                    if (trim($v)) {
                        $changedfrom = true;
                        $v = "$this->_domain <$this->_username>";
                        $envelopefrom = "-f$this->_username";
                    } elseif (! trim($v) && IMAP_DEFAULTFROM) {
  7. In Apache configuration, I have SSL setup. So in the configuration file for the SSL, I specified an alias as under
            Alias /Microsoft-Server-ActiveSync "/var/www/z-push/index.php"
  8. Restart Apache and your z-push is ready.

 

Client side/phone setup

  1. Now that the server side setup is ready, we’ll configure the phone.
  2. You can enter the settings as per the requirements while configuring the Mail For Exchange client.
  3. The “domain” would be your full name (as you wish to display when you send someone an email).
  4. That’s all. Sync it and you’re ready to go!

 

Troubleshooting

  1. To enable debug logs, create a file debug.txt in the z-push directory and assign it web server user writeable privileges. For example:
    cd /var/www/z-push
    touch debug.txt
    chown www-data.www-data debug.txt # or; chmod 777 debug.txt
  2. You may want to experiment with the IMAP_OPTIONS by referring to http://php.net/imap_open
  3. Your ‘Sent’ items folder could be different. You may want to keep it blank (the default).
Advertisements

Recovering contacts from Backup.arc on Nokia Series 60 3rd edition devices

I have a Nokia E61 (Symbian Series 60 3rd Edition – v9.1). I usually take backups on my memory card in the phone (I’ve three of them) and restore them in case it’s necessary. However, today when I tried to do it, it wouldn’t restore and always ask for a “Restart” after flashing “Restoring…” screen for a split second. I tried all my other backups made during last 1 year and it just won’t work. I even hard-reset/formatted the phone by pressing *,3 and call key and then starting the phone, assuming that maybe there’s some issue with the firmware. It just didn’t work. I’d my latest backup available on my memory card and I couldn’t use it. After spending more than a few hours, I managed to retrieve information, more importantly my contacts.

Credit goes to

Here’s how I retrieved all the Contacts. It assumes you have a Backup.arc with you. If you’ve taken backup on the memory card and view the contents of the memory card on computer, you’ll see a Backup/ folder in which the Backup.arc would be there. If not, tough luck.

  1. It works only on Windows. I used Windows XP.
  2. Install NbuExplorer from http://nbuexplorer.sourceforge.net – it requires .Net Framework 2.0 which I downloaded from Microsoft website, so install the framework prior to opening NbuExplorer.
  3. Install Java 1.4.2 and Symbian SDK. As of now I’m not too sure that Java 1.4.2 would be necessary at all. For Symbian SDK, you need to be a member of Nokia Forum – the version that I downloaded was S60-SDK-0548-3.0-f.3.215f.zip
  4. Now open NbuExplorer and point it to the Backup.arc file. It should show the contents in it including pictures, sounds etc.
  5. You need to locate the file having the name Contacts and ending with the extension .cdb. In my case the name was DBS_100065FF_Contacts.cdb and it was under C: -> private -> 100012a5 within the NbuExplorer interface. Once you locate it, right-click on the file name and select ‘Export selected file(s)’. It’ll ask you for a location – you may select “Desktop”. Keep that file safe – it has all your contacts.
  6. Now close NbuExplorer and start Symbian Emulator. It would open a Symbian interface – you need to add a new contact in there. You can add anything. We just want it to build a contact database of its own which we’ll eventually replace with our own contact database. Once done, close the Emulator.
  7. Next step is to replace the contact database created by the emulator by our actual database which has our contacts. In my case I went to C:\Symbian\9.1\S60_3rd\Epoc32\winscw\c\private\100012a5. The file DBS_100065FF_Contacts.cdb was already present. I replaced it with my actual file which I’d retrieved via NbuExplorer.
  8. We’ll add a memory card to our Symbian Emulator. For that edit the file epoc.iniwhich is located in C:\Symbian\9.1\S60_3rd\Epoc32\Data and modify the following values so that they look like the following
    _EPOC_DRIVE_E \epoc32\winscw\e
    _EPOC_LocDrv_1 E: FAT
  9. Let’s start the Emulator now. If you go to contacts, if all goes well you should be seeing all your contact listing. Hurray! Step 1 done.
  10. Now we’ll need to transfer the contacts to the memory card. Mark all contacts and then select “Copy to memory card” from within the emulator interface. It should say that it has copied them to the memory card.
  11. Now go to the “e” drive created via epoc.ini, that is, in C:\Symbian\9.1\S60_3rd\Epoc32\winscw\e. There would be a folder called “Others” inside which there’d be “Contacts”. If all goes well, you should see a lot of .vcf entries inside it. Those are your contacts. Copy them to an actual memory card of the phone – in the same directory (Others\Contacts). Now put the memory card in your phone.
  12. In your phone, open “Contacts”, and then select the option Copy -> From memory card. The contacts would be copied. For me it retrieved all information with precision.

I had evaluated Nokisoft.com’s Noki Explorer application. There were two things I wasn’t sure of, (a) it retrieved 30 contacts in the trial version, but the data that was retrieved was not complete; and (b) it seemed to be a tad expensive for one time use. Nokisoft’s explorer may be easier to retrieve contacts – that you can decide.