Preheat the oven to 180 º C.
In a pan, bring water, sugar, lemon zest, cinnamon sticks, and ham, over medium heat.
Let it reach around 110 º C and turn off the heat. To test it, you can take a spoonful of the sugar syrup and let it cool down. Once cold, you should be able to form a "road" by moving your finger through the syrup.
In the meantime, mix the egg yolks with Port wine.
Slowly pour the syrup into the egg yolk mixture, whisking during the process.
Pass this mixture through a sieve to remove the solid ingredients and ensure smoothness.
Pour the mixture into the pan you prepared.
Prepare a water bath, filing a tray with water about 2 inches deep. Cover the pan with tinfoil or place the lid if you have one.
Cook for about 45 to 60 minutes (depends on the oven). Check for the consistency - the pudding should be firm in the edges but still quite jiggly in the middle.
Let it cool down to room temperature or in the fridge.
Once cold, remove from the pan to the serving plate and enjoy.