Combine rice and 1 cup of the milk in a medium saucepan. Cook over medium heat, stirring frequently, until most of the milk is absorbed, about 8 minutes.
Add the remaining milk, sugar, and salt to the saucepan. Bring to a gentle simmer, then reduce heat to low and cook, stirring occasionally, until rice is tender and mixture is creamy, about 25 to 30 minutes.
Stir in the butter and raisins, if using. Remove 1/2 cup of the hot milk mixture and slowly whisk it into the beaten egg to temper, then return the egg mixture to the pot and stir until combined.
Cook on low for 2 to 3 more minutes without boiling to thicken slightly. Remove from heat and stir in vanilla and ground cinnamon.
Serve warm or chill for at least 2 hours to set. Sprinkle additional cinnamon before serving if desired.
Notes
For a richer pudding, substitute half the milk with cream. Store leftovers refrigerated for up to 4 days.