We study computational questions in a game-theoretic model that, in particular, aims to capture advertising/persuasion applications such as viral marketing. Specifically, we consider a multi-agent Bayesian persuasion model where an informed sender (marketer) tries to persuade a group of agents (consumers) to adopt a certain product. The quality of the product is known to the sender, but it is unknown to the agents. The sender is allowed to commit to a signaling policy where she sends a private signal---say, a viral marketing ad---to every agent. This work studies the computation aspects of finding a signaling policy that maximizes the sender's revenue. We show that if the sender's utility is a submodular function of the set of agents that adopt the product, then we can efficiently find a signaling policy whose revenue is at least (1-1/e) times the optimal. We also prove that approximating the sender's optimal revenue by a factor better than (1-1/e) is NP-hard and, hence, the developed approximation guarantee is essentially tight. When the senders' utility is a function of the number of agents that adopt the product (i.e., the utility function is anonymous), we show that an optimal signaling policy can be computed in polynomial time. Our results are based on an interesting connection between the Bayesian persuasion problem and the evaluation of the concave closure of a set function.