Yes, the accepted method is to add one POI per shop. The rule is "one entity, one OSM object", and if the postal offices is somehow separate from the rest of the shop (even if it's only a separate counter), then a POI of its own seems appropriate.
As to the opening hours, address etc: There is no need to map them redundantly. Just Map the main shop as an area, and put the POI node inside that area. Then just tag the main shop; most people (and hopefully software) will understand that the opening hours are "inherited" from the main shop.
shop (because the POI is located inside the shop).
This "inheritance" is used in several cases in OSM: For example, when tagging sites with a large area and several buildings (schools, big companies), typically all tags (name, type etc.) go on the area, and the buildings only get tags specific to that building.
That said, you *could* also just put multiple tags on the main shop; but this only works well if the tags do not conflict: `shop=supermarket` and `amenity=post_office` would work, but e.g. a bakery inside a supermarket would not (because both use `shop=`).