I would like to have my trained model tested on an imbalanced dataset. Is there any algorithms available to generate synthetic data from a balanced labelled dataset (spam/non-spam)?
Try SMOTE, its an algorithm used for over-sampling. It creates synthetic samples from the class you want over-sampled.
You can use this to create any number of samples you need.