Wash ham, scrubbing thoroughly with a stiff brush. Place ham in a large stockpot; cover with water, and bring to a boil. Boil 20 minutes. Remove ham, and set aside to cool. Discard cooking liquid .
Cut greens into 1 1/2-inch pieces, and place in a large stockpot; add celery and red pepper. Add water; cook over medium heat until greens are limp. Drain well; add remaining ingredients except cheesecloth, and mix well.
Cut 8 lengthwise slits in ham from top of ham to bottom. Stuff each slit with greens mixture. Wrap ham in cheesecloth; secure ends. Place ham in stockpot, fat side up ; cover with remaining greens. Add water to cover; bring to a boil . Reduce heat; cover and simmer about 4 hours, or 20 minutes per pound.
Remove stockpot from heat; set aside. Allow ham to cool 2 hours in cooking liquid . Remove ham, and discard greens and cooking liquid . Allow ham to cool to room temperature. Refrigerate overnight. Remove cheesecloth.
Transfer ham to a serving platter. Cut into thin slices to serve.