Place the tomatoes, onions, bell pepper and garlic in a large pot.
Bring to boil over high heat, reduce the heat to medium-low and simmer, stirring occasionally until the vegetables are very soft, about 30 minutes.
Pass through the finest blade of a food mill to make a semi-smooth puree. Alternatively, puree in the blender until smooth and pass through a fine strainer. Place the puree back in the cleaned soup pot.
Place the peppercorns, mustard seeds, allspice berries, cloves, celery seeds, ginger, cinnamon stick and bay leaves on a piece of cheesecloth and tie it up to form a bag.
Add to the tomatoes, along with the brown sugar, paprika, mace, cider vinegar, salt and cayenne.
Simmer slowly, stirring frequently, until the ketchup is very thick, 1 1/2 to 2 hours. Remove the cheesecloth bag and discard.
Ketchup can be cooled and stored in a sealed plastic container in the refrigerator for 2 weeks.
Alternatively, you can put ketchup in sterilized jars. To do so, first wash the jars in hot, soapy water. Rinse well. Bring a large pot of water to a boil. Add 4 pint jars and lids and boil 1 minute. Remove with tongs and drain.
While the ketchup is still hot, pour it into the sterilized jars, leaving 1/4-inch headroom. Seal and place in boiling water bath for 12 minutes. Remove and cool.