Right sequences of the faces when constructing object with python
With trial and error I found that two faces with common edges should have these edges running in the opposite direction. So the faces should be 

bm.faces.new((vlbu, vrbu, vrbd, vlbd))    #back
bm.faces.new((vrbu, vlbu, vlfu, vrfu))    #top  
bm.faces.new((vrfu, vlfu, vlfd, vrfd))    #front
bm.faces.new((vlfd, vlbd, vrbd, vrfd))    #down
bm.faces.new((vlfu, vlbu, vlbd, vlfd))    #left
bm.faces.new((vrfu, vrfd, vrbd, vrbu))    #right


This gives the right normals.