I have been working on some ideas to help reduce the problem. You can install the development version from this page and here is a direct link to the .zip file. Delete the installed version of Update Notifier and install the development version via Plugins -> Add New -> Upload (you will have to reconfigure your Update Notifier settings). I would be grateful if you could test it out :)
Currently the dev version removes the back-compat induced issue described below. I am also thinking about what to do about the 'upgrade from abc' emails, (partial) fix to come shortly. Though deactivating the plugin changing the version, or stopping just the part doing the changing works for me in my testing (I have worked out why I couldn't reproduce before, see note at the end). I have also come up with another change to these plugins which should help whilst still allowing you to leave a modified
$wp_version in most situations if you so desire.
Though I have to disagree that mangling
$wp_version is useful (xref: some thoughts from a core committer) and in some cases interferes with core WordPress functions (see below about the automatic update checks made by WordPress).
Thanks for taking the time to report and using my plugin :)
If you're interested here are the full details on why problems like this are occurring:
When WordPress does its automatic check for updates it asks wordpress.org if there are versions newer than
$wp_version (which in this case is 'abc'), obviously 'abc' doesn't exist and so the response is that an update is available (even if your site already has the latest version of WordPress!). This response is stored by WordPress and when Update Notifier checks this stored value it sees that, allegedly, an update available and sends an unnecessary email notification.
Also, the problem when Update Notifier tells you that version 2.9.2 should be updated to 3.0.1 occurs because of some backwards compatibility code I had to use (because 3.0 introduced site transients for storing the automatic update check responses), so when Update Notifier looked for the stored information (when
$wp_version is not correctly set as 3.0.1) it decided that you still must be running 2.9.2 and so checked the old version of the transient which says 3.0 is available (since it hasn't been changed since updating to 3.0 and 3.0.1 because of the new transient usage).
Note this does not occur every time since these plugins will often only modify the
$wp_version global when not in the admin section. Therefore, if the automatic update check is triggered whilst an admin is logged into the backend then the correct response (no updates available, running the latest version) is stored and then Update Notifier doesn't send an email. If the check is triggered by a normal user visiting the site then the incorrect 'abc' version of events occurs.