Hola
Te sugiero que revises
este mensaje, en el encontrarás un ejemplo con dos opciones para hacer lo que quieres.
Sobre el código que nos muestras, te comento un detallín. Para usar adecuadamente los float, debes ordenar las capas en el sentido normal de aparición, es decir, menu, body y derecha.
Recuerda que los floats sacan los objetos del flujo normal de la página.
Al posicionar primero la columna derecha con el float right y el menú con el float left, , el body está posicionado de forma normal, empezando por el primer espacio debajo de la cabacera, por lo que una zona de esa capa queda "bajo" el menu y otra parte queda "bajo" la columna derecha.
No puedes espaciarlo debido a ese efecto.
Una forma de ajustar tu código, sería que dejaras un margen a ambos lados del ancho de las capas laterales y redujeras el ancho de la capa body al tamaño del área visible entre ellas, pero dudo que tenga un funcionamiento estable en todos los navegadores debido a las diferencias en las consideraciones del margin y el padding.
Revisa los ejemplos que te puse y nos comentas como te va.
Felicidad