As always, it is not advisable o shrink a database unless it is an extreme circumstance, like you are running out of disk space, but it can be done. However, for the shrink to work you need to create some space. Listed below are some purge scripts for MSDB. We had a similar situation here (we also perform log shipping) and I used these scripts to free up some space. After that I created a job to purge all history over 30 days. The job runs everyday and I have not had any growth since that time.
--Warning: It is advisable to re-index the history tables before and after executing these stored procedures,
--otherwise, these store procedure could take a long time to purge the history tables.
--The MSDB..SP_DELETE_BACKUPHISTORY proc has terrible performance unless you add the following
--indexes to speed up the search process. Cuts runtime down dramatically.
USE MSDB
GO
create index BACKUPSET_I01 ON BACKUPSET (MEDIA_SET_ID)
GO
create index BACKUPSET_I02 ON BACKUPSET (BACKUP_SET_ID,MEDIA_SET_ID)
GO
USE msdb
declare @deleteday datetime
SET @deleteday= dateadd(dd,-30,getdate())
EXEC msdb.dbo.sp_delete_backuphistory @deleteday
USE msdb;
GO
EXEC sp_delete_backuphistory @oldest_date = '01/14/2013';
--remove history for a specific job
USE msdb ;
GO
EXEC dbo.sp_purge_jobhistory
@job_name = N'NightlyBackups' ;
GO
--remove history for all jobs
USE msdb ;
GO
EXEC dbo.sp_purge_jobhistory ;
GO
--deleting all events
EXECUTE msdb.dbo.sysmail_delete_log_sp ;
GO
--delete oldest event
EXECUTE msdb.dbo.sysmail_delete_log_sp
@logged_before = 'October 9, 2005' ;
GO
--delete all events of a certain type
EXECUTE msdb.dbo.sysmail_delete_log_sp
@event_type = 'success' ;
GO
--deleting all emails
DECLARE @getdate-2 datetimeSET @getdate-2 = GETDATE() EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = @getdate-2;GO
--deleting oldest emails
EXECUTE msdb.dbo.sysmail_delete_mailitems_sp
@sent_before = 'October 9, 2012' ;
GO
--deleting all emails of a certain type
EXECUTE msdb.dbo.sysmail_delete_mailitems_sp
@sent_status = 'failed' ;
GO
If you need it, I can also post the script for the nightly purge job as well.
Good luck.