Using Microsoft Exchange (Zimbra Server) from an Android Phone

I’ve been using K-9 on my Android phone for email, and wanted to get emails as soon as they arrived without having to poll the server for them (using an IMAP account). K-9 has support for Exchange, but not sub-folders and not recent versions of Exchange – and not Zimbra Server.

Researching the clients turned up two: the often-recommended TouchDown (for $20) or the newer RoadSync (for $10). There are trials in the Android Market for both TouchDown (30 days) and for RoadSync (14 days). TouchDown is an independent company with a long history of supporting Exchange on Android; however, their user interface is not quite as user-friendly as one might want.

RoadSync is also a venerable company, but the Android client is new. The software is sold by DataViz, the people behind DocumentsToGo. The user interface is a joy to use.

Both TouchDown and RoadSync support sub-folders, which is a must for me. I handle email by sorting it extensively when it comes in, placing just about every email into a folder.

However, there is one interesting item: the search for the best Exchange support for me started with looking for “push” mail – that is, having the server notify me of new mail, and not waiting for a poll. IMAP now has the IMAP IDLE command. What does this mean? It means that IMAP will thus push mail to the client. Your IMAP server has to support the IDLE command, but if it does, you don’t need to run an Exchange client to get your email notifications.

If you want to know the technical details of the IMAP IDLE command, it is described in RFC2177 (from 1997!).

One more thing – since I’m using K-9 with the IMAP IDLE command, and have trials of TouchDown and RoadSync running – now every email I get instantly gives me three notifications! Woot!

Is System Administration a people-oriented career?

Many people might think that being a server administrator is solely a computer profession, and that you deal with the computer all day long. These people might think that people skills are not necessary since you don’t deal with people – and they would be mistaken.

A system administrator has to deal with people much more than you would think. There are many people who an administrator has to deal with every day – and in a variety of ways.

One of the most common groups of people is the users. If you don’t keep the users happy – and you must try to do this no matter what happens – then people will be unhappy with your performance and it can shorten your career. Educate the users on what to expect from you and from the machines you administer, and keep them informed when things happen that affect them. Users are the place where your policies and actions have the biggest test.

Another group of people to keep happy is the executives of the company. The goal of IT is to realize the business goals of the corporation. Even if you have the best technology, an executive will not care – what they care about is the company, and if they are one of the founders then it’s personal, too. Show the executive staff how your technology will further their needs and they’ll sign on willingly.

Your coworkers in IT are also important. Whenever you have a pet project that touches a system administered by someone else, that someone else will have to be convinced that your project will not adverse affect their systems – and that the benefits (whether to them or not) are worth the risks involved. Each administrator will be protective of their systems – protective because stability is of ultimate importance. If a system is not available when someone needs it, then they will declare it to be useless, no matter how high quality the system is otherwise.

Several skills have been touched on briefly. What are some of these skills?

  • Presentations. Presenting is used to sell your technology or to educate people on your activities. It is very important to be able to do it well.
  • Cost-Benefit Analysis. This does not need to be a formal process with cost in dollars (or whatever); this merely the process of listing the pros and cons side by side and determining whether some benefit is worth the cost.
  • Empathy. If you can understand the other person – see things from their point of view – then you can act on it and show them how your proposals will further their goals. Your goals are nothing to them; their goals are not your goals.
  • Setting Expectations. This is all about education and training. Show the users what the technology can do, and educate them on what is a reasonable expectation and what is not.
  • Persuasion. You’ll find yourself having to convince people that an expensive purchase is worth it, or a fundamental systemic change will be beneficial, or that certain hardware needs to be replaced, and many other things. The art of persuasion is important – and even has an important function in the job interview.

This is certainly not an exhaustive list. What other people skills do you think are important?

Monitoring APC UPSes (about cables)

APC UPSes have a port on the back for UPS monitoring (serial, USB, or RJ45). Before you can use these ports, there is a variety of things to be aware of – things that are not all in one place.

Firstly, the USB port is not a standard USB port and should not be used as such; it requires a special cable. If you use the USB port on an APC UPS, then you will have to cycle the power on the unit to start using the serial port instead.

Secondly, the serial port also requires a special cable (the example here uses the SmartUPS 2200XL). There are two types of cables: simple signaling and smart signaling. Simple signaling cables (usually gray) work on all APC UPSes, but BackUPS units only support simple signaling. The simple signaling cables provide very few capabilities (only three settings: Battery On, Battery Low, and UPS Off) – all based on measuring pin levels on the serial cable itself. Smart signaling cables (normally black) are used for more powerful units (such as SmartUPS and others). The smart signaling cable connects the monitoring system to the UPS and provides a character interface to the unit with a large number of commands.

The Linux UPS monitoring tool nut supports smart signaling cables; you should use smart signaling cables whenever you can because of the added capabilities they allow.

Turning off NET-SNMP overlogging

In the normal configuration – both on Red Hat and Ubuntu – you’ll find that SNMP is filling your logs with an endless amount of log entries, especially if you have monitoring tools that use SNMP every five minutes. They’ll generate messages like this:

Jan  8 13:45:02 example snmpd[2048]: Connection from UDP: [10.0.0.1]:51890
Jan  8 13:45:02 example snmpd[2048]: Received SNMP packet(s) from UDP: [10.0.0.1]:51890
Jan  8 13:45:02 example last message repeated 2 times

To get rid of these, change the priority levels that are logged by NET-SNMP. This can be done by changing the options sent to SNMP.

Look for a file /etc/default/snmpd or /etc/sysconfig/snmpd or similar. There should be a set of SNMP options – probably with an option like this one:

-Ls d

Change this option to be:

-LS5d

This will log everything at level NOTICE or higher (that is, severity level 5 down to severity 0). The severity levels used are those used by syslog; they are described in syslog(3).

This works because the messages being seen are logged at level INFO; by not logging items at that severity level the log entries no longer clutter the syslog files.

However, there is another set of messages that are common to NET-SNMP logs:

Sep  7 09:47:29 burp snmpd[19242]: diskio.c: don't know how to handle 9 request
Sep  7 09:47:29 burp snmpd[19242]: diskio.c: don't know how to handle 10 request
Sep  7 09:47:29 burp snmpd[19242]: diskio.c: don't know how to handle 11 request

This is the result of a bug (Red Hat Bugzilla #474093 - login required) which causes these “errors” when the SNMP diskIOTable is traversed. Red Hat fixed this bug back in September of 2009.

According to this message by Chris Rizzo, Red Hat stated:

The message that you see here is a result of querying for statistics
that are not available on the linux system. Requests 9, 10, and 11 are
defined as:

#define DISKIO_LA1 9
#define DISKIO_LA5 10
#define DISKIO_LA15 11

You can see where these statistics pop up by querying the SNMP diskIOTable using this command:

snmptable -v 2c -c public host diskIOTable

The output will look like this:

SNMP table: UCD-DISKIO-MIB::diskIOTable

 diskIOIndex diskIODevice diskIONRead diskIONWritten diskIOReads diskIOWrites diskIOLA1 diskIOLA5 diskIOLA15 diskIONReadX diskIONWrittenX
           1         ram0           0              0           0            0         ?         ?          ?            0               0
           2         ram1           0              0           0            0         ?         ?          ?            0               0
           3         ram2           0              0           0            0         ?         ?          ?            0               0
           4         ram3           0              0           0            0         ?         ?          ?            0               0
           5         ram4           0              0           0            0         ?         ?          ?            0               0
           6         ram5           0              0           0            0         ?         ?          ?            0               0
           7         ram6           0              0           0            0         ?         ?          ?            0               0
           8         ram7           0              0           0            0         ?         ?          ?            0               0
           9         ram8           0              0           0            0         ?         ?          ?            0               0
          10         ram9           0              0           0            0         ?         ?          ?            0               0
          11        ram10           0              0           0            0         ?         ?          ?            0               0
          12        ram11           0              0           0            0         ?         ?          ?            0               0
          13        ram12           0              0           0            0         ?         ?          ?            0               0
          14        ram13           0              0           0            0         ?         ?          ?            0               0
          15        ram14           0              0           0            0         ?         ?          ?            0               0
          16        ram15           0              0           0            0         ?         ?          ?            0               0
          17        loop0           0              0           0            0         ?         ?          ?            0               0
          18        loop1           0              0           0            0         ?         ?          ?            0               0
          19        loop2           0              0           0            0         ?         ?          ?            0               0
          20        loop3           0              0           0            0         ?         ?          ?            0               0
          21        loop4           0              0           0            0         ?         ?          ?            0               0
          22        loop5           0              0           0            0         ?         ?          ?            0               0
          23        loop6           0              0           0            0         ?         ?          ?            0               0
          24        loop7           0              0           0            0         ?         ?          ?            0               0
          25          sr0           0              0           0            0         ?         ?          ?            0               0
          26          sda  2840214016     1178369536     8946299      2080062         ?         ?          ? 990682692096     18358238720
          27         sda1      598016         208896          82            8         ?         ?          ?       598016          208896
          28         sda2        2048              0           2            0         ?         ?          ?         2048               0
          29         sda3     2286592        4649984         449          332         ?         ?          ?      2286592         4649984
          30         sda5  2836463104     1173473792     8945636      2079527         ?         ?          ? 990678941184     18353342976
          31          sdb  2960873984     1173473792     1940422      2079476         ?         ?          ? 990803352064     18353342976
          32         sdb1      638976              0          83            0         ?         ?          ?       638976               0
          33         sdb2      798720              0         153            0         ?         ?          ?       798720               0
          34         sdb3        6144              0           2            0         ?         ?          ?         6144               0
          35         sdb5  2958672384     1173473792     1940080      2079284         ?         ?          ? 990801150464     18353342976
          36          md0  3051716608     1727252992       93765      1641387         ?         ?          ?   3051716608     14612154880
          37          sdc  3067452416      425118208     1640751      3638614         ?         ?          ? 101851700224    438511782400
          38         sdc1  3067317248      425118208     1640721      3638613         ?         ?          ? 101851565056    438511782400
          39          sdd      307712              0          76            0         ?         ?          ?       307712               0
          40         sdd1      147968              0          37            0         ?         ?          ?       147968               0
          41         sdd2      131072              0          32            0         ?         ?          ?       131072               0

Towards the right side of center, you can see the metrics diskIOLA1, diskIOLA5, diskIOLA15; these are unsupported on Linux (as marked by the ? in each column). These are the 1 minute average disk load (as a percentage), the 5 minute average disk load, and the 15 minute average disk load respectively.

The three have SNMP OIDs of .1.3.6.1.4.1.2021.13.15.1.1.9 and .1.3.6.1.4.1.2021.13.15.1.1.10 and .1.3.6.1.4.1.2021.13.15.1.1.11 respectively – thus, the logged complaint of not knowing how to handle request 9 (or 10 or 11).

Without changing the code, there doesn’t seem to be any way to eradicate this message if you are querying the diskIOTable. Red Hat fixed the bug, perhaps others will? The bug remains on Ubuntu Lucid Lynx, unfortunately.

Follow

Get every new post delivered to your Inbox.

Join 114 other followers