Prepare the brine. Bring 2 cups of salt and 4 cups of water to a boil over high heat. Whisk continually until the salt dissolves.
Transfer the salt water to a 20-30 gallon container and fill the container about halfway with additional cold water. Place the ham in the water and add any additional water until the ham is covered. Cover the container and refrigerate for at least 12 hours*.
Prepare the dry rub and rub the ham. Add all the dry rub ingredients to a bowl and mix. Set aside.
Remove the ham from the brine and pat dry with a paper towel. Transfer the ham to a baking sheet and carefully massage the dry rub over the whole ham. Be sure to massage the dry rub into every crevice. Let the rubbed ham rest for 15 minutes.
Preheat the smoker to 300ºF. If you are using a pellet smoker like us, we suggest using the Traeger signature pellets, but you can use any kind.
Prepare the basting liquid. Melt the butter over medium/high heat in a small saucepan. Add the onion and salt to the butter and saute for 10 minutes over medium heat. Add the garlic and honey and saute for an additional minute.
Pour the broth into the saucepan and bring it to a boil. Turn the heat to low and cover.
Transfer the ham to the smoker and smoke for 2-3 hours, basting every 30 minutes.
Check the internal temperature of the ham at 2 hours. If the internal temperature is around 140ºF. Remove the ham and let it rest for 15 minutes. The ham will continue to cook once it is removed from the smoker.*
Slice the ham and serve on its own or ham sandwiches.