I'm not sure preventing users from deleting is the best option. Implementing Zimbra's "Archive & Discovery" module might be a better option, depending on your situation (and number of users). Alternatively, you can look at the "Dumpster" option (messages removed from trash/spam are placed there) but I'm not sure if you can prevent users from deleting there.
For backup, if you're not using the Network Edition, I've heard Zextras Backup recommended by many (BACKUP module for your Zimbra server | ZeXtras Suite). I use the built-in backup in the network edition so cannot speak to Zextras myself but there are many forum posts about it.
State University of New York at New Paltz