送信側は正しい OS の情報を送信しなければいけない決まりはないので。
例えば Apache からアクセスして MSIE と送っても問題ないし、
abcdef0123456789 でも良いし、空の文字列を送信しても良い。

それに対してリクエストされた側はこの様にして OS を判別する。
http://www.perl-labo.org/analyse/useragent/
あらかじめ定義しておいた中にあるか無いかを見ているだけ。
その定義に無ければ「不明」として処理するしかない。

・ブラウザを用いてアクセスしていない
・マイナーなブラウザでアクセスしている
・意図的に User-Agent を偽装している(ブラウザによってはオプションで変えられる)

こんなところ。